A Memória no ATmega328
Microcontroladores
Introdução ao Arduino
A Memória no ATmega328P
Memória de Programa
TOCANTINS
16 bits
2
Memória EEPROM
• ATmega48PA
– 256 bytes
• Atmega88PA/168PA
– 512 bytes
• ATmega328P
– 1 Kbytes
TOCANTINS
3
Memória de Dados
0x2FF/0x4FF/0x4FF/0x8FF
TOCANTINS
4
Detalhamento Memória de Dados
Com. Serial
ATmega328P
Timer/Counter
Timer/Counter
Conversor A/D
Registradores de I/O externos
0x060 – 0x0FF
Com. Serial
Timer/Counter
Controle EEPROM
Portas I/O
Registradores de I/O
0x020 – 0x05F
Registradores
de trabalho
0x000 – 0x01F
SRAM Interna
Reservados
0x8FF
ATmega168PA/88PA 0x4FF
ATmega48PA
0x2FF
0x100
TOCANTINS
5
Alocação de Espaço
(Principais Tipos de Variáveis)
• boolean
– 1 bit
• char (–128 a 127), byte (0 a 255)
– 8 bits (1 byte)
– Tabela ASCII
• int (–32768 a 32767)
– 16 bits (2 bytes)
• word (0 a 65535)
TOCANTINS
– 16 bits
– unsigned int
6
Alocação de Espaço
(Outros tipos)
• long
– 32 bits (4 bytes)
• unsigned long
• float
– 4 bytes
– Simulação de ponto flutuante
• double
TOCANTINS
– No Arduino, o mesmo que float
7
Formas de Representação
• Inteiros (Números)
– Decimal: 2 134 1000
– Hexadecimal: 0xFF
0x348
– Binário: B101
B00001110
0x7C2A
B1
• Inteiros (ASCII)
– Caracteres: ‘A’
‘a’
‘&’
‘
’
• Valores Lógicos
– Opção 1: 0 ou 1
– Opção 2: false ou true (minúsculo)
TOCANTINS
• Fracionários
– Ponto (e não vírgula): 3.1416
2.718
8
Exemplos
• boolean b1 = false; // O mesmo que “0”
• boolean b2 = 1; // O mesmo que “true”
• Valores iguais
– char MinhaLetra = ‘A’;
– char MesmaLetra = 65;
• byte b = B10010; // Armazena 00010010
• int LED = 13;
• word var = 65535;
2
TOCANTINS
9
Exemplos
• Rolagem inferior
– word x = 0;
– x = x – 1;
// “x” passa a valer 65535
• Rolagem superior
– int x = 32767; // “x”