Diferencia entre revisiones de «Programación C y C++»
Ir a la navegación
Ir a la búsqueda
| Línea 5: | Línea 5: | ||
= [[Variables]] = | = [[Variables]] = | ||
= [[PROGMEM]] = | = [[PROGMEM]] = | ||
PROGMEM hace que una variable constante a la que se le aplica resida en la memoria flash en vez de la RAM. Asi podemos ahorrar RAM para las demás variables. | |||
== Declaración de variables == | |||
Para alojar una variable constante en la memoria Flash se hace asi: | |||
PROGMEM const tipoVariable nombreVariable = valoresIniciales; | |||
Por ejemplo: | |||
PROGMEM const int a = 5; | |||
PROGMEM const int a[] = {0,3,4,2}; | |||
También puede hacerse asi: | |||
const int a[] PROGMEM = {0,4,3,2}; | |||
== Funciones de lectura == | |||
*pgm_read_byte() | |||
**Lee un byte de la memoria Flash | |||
*pgm_read_word() | |||
**Lee 2 bytes de la memoria Flash | |||
*pgm_read_dword() | |||
**Lee 4 bytes de la memoria Flash | |||
*pgm_read_float() | |||
**Lee un número de coma flotante de 4 bytes | |||
<br/> | |||
A cada una de estas funciones se le pasa una dirección de 16 bits que indican donde reside el elemento de la variable | |||
= Otros = | = Otros = | ||
Revisión del 08:38 20 mar 2013
PROGMEM hace que una variable constante a la que se le aplica resida en la memoria flash en vez de la RAM. Asi podemos ahorrar RAM para las demás variables.
Declaración de variables
Para alojar una variable constante en la memoria Flash se hace asi:
PROGMEM const tipoVariable nombreVariable = valoresIniciales;
Por ejemplo:
PROGMEM const int a = 5;
PROGMEM const int a[] = {0,3,4,2};
También puede hacerse asi:
const int a[] PROGMEM = {0,4,3,2};
Funciones de lectura
- pgm_read_byte()
- Lee un byte de la memoria Flash
- pgm_read_word()
- Lee 2 bytes de la memoria Flash
- pgm_read_dword()
- Lee 4 bytes de la memoria Flash
- pgm_read_float()
- Lee un número de coma flotante de 4 bytes
A cada una de estas funciones se le pasa una dirección de 16 bits que indican donde reside el elemento de la variable
Otros
- typedf -> cambia nombre del tipo a otro nombre personalizado. Ej. typedef strcut contacto contacto_t; //Ahora escribiendo contacto_t estoy escribiendo en realidad struct contacto.
- extern
- PROGMEM
- http://www.cursomicros.com/avr/lenguaje-c/datos-en-flash.html -> Buena explicación de arrays constantes y PROGMEM
- http://tom-itx.dyndns.org:81/~webpage/abcminiuser/articles/progmem_basics_index.php
Documentación
Punteros en C
Curso de C++ - Zator System
Curso de C++ con clase
Curso de C - El Rincón de C
Diferencias entre Malloc, Realloc, ... y New, Delete
angelfire.com
Wikilibros - Programación en C
cursomicros.com - Lenguaje C para Microcontroladores