Hallo zusammen,
ich habe ein Problem bei der Ausgabe von Strings auf einem LC-Display.
Als Grundlage für die LCD-Routine verwende ich die Vorlage aus
AVR-GCC-Tutorial/LCD-Ansteuerung. Das komische dabei ist, dass die
Ausgabe mit lcd_data('x'); ohne Probleme funktioniert. Aber bei
lcd_string("Test"); wird je nach Fuseeinstellungen entweder ein oder
mehrere kryptische Zeichen ausgegeben.
Die CPU-Frequenz ist richtig eingestellt. Das hab ich durch toggeln an
PA0 und einem Osszi getestet. Auch habe ich mein Programm schon an einem
anderen Controllertyp (ATtiny2313 statt ATmega324A) und Display
getestet. Da hat es einwandfrei funktioniert. Nur das Display oder nur
den Controller zu tauschen geht nicht auf die schnelle, da muss ich erst
was umlöten. Aber daran dürfte es ja eigentlich nicht liegen.
Woran könnte der Fehler liegen?
1 | int main (void)
|
2 | {
|
3 | lcd_init();
|
4 |
|
5 | lcd_data('D');
|
6 | lcd_data('e');
|
7 | lcd_data('r');
|
8 | lcd_data(' ');
|
9 |
|
10 | lcd_string("Test");
|
11 |
|
12 | while(1){}
|
13 | return 0;
|
14 | }
|
Hier der Controller mit den aktuellen Einstellungen:
Controller= ATmega324A
lfuse= 0xEE
hfuse= 0x99 (default)
efuse= 0xFF (default)
Quarz: 8MHz
Programme: AVR-GCC, AVRDUDE
Programmer: STK500
Achja, da der ATmega324A für AVRDUDE unbekannt war, habe ich in der
Datei avrdude.conf den Eintrag vom ATmega324PA kopiert und die
Controllerbezeichnungen und -signatur entsprechend angepasst.
1 | #------------------------------------------------------------
|
2 | # ATmega324A
|
3 | #------------------------------------------------------------
|
4 |
|
5 | # similar to ATmega324PA
|
6 |
|
7 | part
|
8 | id = "m324a";
|
9 | desc = "ATmega324A";
|
10 | has_jtag = yes;
|
11 | stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one
|
12 | avr910_devcode = 0x74;
|
13 | signature = 0x1e 0x95 0x15;
|
Alles was nach obigem Auszug kommt habe ich so belassen wie es beim
ATmega324PA war. Das P steht ja nur für Pico Power, weswegen sich die
beiden Controller nicht so sehr unterscheiden dürften. Im Datenblatt hab
ich bisher nur Unterschiede bei Bezeichnung und Signatur gefunden.
Gruß
Michael