Hallo Leute,
nach einigen Veruschen habe ich es endlich geschafft, in einem kleinen
Testprogramm den internen EEPROM im ATmega16 zu nutzen und die
gespeicherten Werte auf LEDs am PORTC auszugeben. Da ich in meinem
Projekt aber den ATmega 324a nutzen möchte, habe ich das Programm für
diesen kompiliert und geflasht, jedoch passiert nichts.
Hier der Quelltext vom Testprogramm:
1 | #include<avr/io.h>
|
2 | #include<avr/eeprom.h>
|
3 | #include<util/delay.h>
|
4 | uint8_t eezahl[] EEMEM = { 0xF0, 0x0F, 0x01, 0x02,};
|
5 |
|
6 | int main(void)
|
7 | {
|
8 | DDRC=0xFF;
|
9 | EECR=0x0F;
|
10 | while(1)
|
11 | {
|
12 | PORTC=0x00;
|
13 | eeprom_busy_wait();
|
14 | PORTC=eeprom_read_byte(&eezahl[0]);
|
15 | eeprom_busy_wait();
|
16 | _delay_ms(1000);
|
17 | PORTC=eeprom_read_byte(&eezahl[1]);
|
18 | eeprom_busy_wait();
|
19 | _delay_ms(1000);
|
20 | PORTC=eeprom_read_byte(&eezahl[2]);
|
21 | eeprom_busy_wait();
|
22 | _delay_ms(1000);
|
23 | PORTC=eeprom_read_byte(&eezahl[3]);
|
24 | eeprom_busy_wait();
|
25 | _delay_ms(1000);
|
26 | }
|
27 | return 1;
|
28 | }
|
Im Makefile habe ich folgende Werte für den 324er angepasst:
1 | # Personal Settings for avr-gcc
|
2 | MCU = atmega324a
|
3 | F_CPU = 8000000
|
4 | TARGET = eeprom
|
5 | FORMAT = ihex
|
6 | # Personal Settings for avrdude
|
7 | AVRDUDE_PORT = /dev/ttyACM0
|
8 | AVRDUDE_TARGET = m324a
|
9 | AVRDUDE_SPEED = 1
|
Mit dem 16er hab ich es so:
1 | # Personal Settings for avr-gcc
|
2 | MCU = atmega16
|
3 | F_CPU = 8000000
|
4 | TARGET = eeprom
|
5 | FORMAT = ihex
|
6 | # Personal Settings for avrdude
|
7 | AVRDUDE_PORT = /dev/ttyACM0
|
8 | AVRDUDE_TARGET = m16
|
9 | AVRDUDE_SPEED = 1
|
Kann mir jemand sagen, was ich beim ATmega324 ändern muss, damit das
Programm auch läuft?