Hi,
ich benutze zum ersten mal einen Atmega128 mit dem AVR Studio 5. Bzw auf
der Platine ist ein Atmega128A, aber den kennt das AVR Studio nicht. Ich
hab gelesen, die Chips sind kompatibel und man soll für den Atmega128
kompilieren.
Ich möchte ein LCD mit den Funktionen hier aus dem Forum ansteuern. Das
ist der Code:
1 | #include <avr/io.h>
|
2 | #include "lcd-routines.h"
|
3 | #include <avr/delay.h>
|
4 |
|
5 |
|
6 | int main(void)
|
7 | {
|
8 | DDRB |= (1<<PB7);
|
9 | PORTB |= (1<<PB7);
|
10 | while(1)
|
11 | {
|
12 | //funktioniert nicht
|
13 | lcd_toggle_backlight();
|
14 |
|
15 | //funktioniert
|
16 | /*
|
17 | PORTB ^= (1<<PB7)*/
|
18 | }
|
19 | }
|
20 |
|
21 |
|
22 | //lcd-routines.c:
|
23 | void lcd_toggle_backlight(void)
|
24 | {
|
25 | LCD_BL_PORT ^= (1<<LCD_BL);
|
26 | }
|
Das Problem ist, dass sich beim LCD nichts tut. Daher hab ich versucht
den Fehler zu finden und hab bemerkt, dass sich der Atmega128 beim
Verlassen von Funktionen, die in der lcd-routines.h angegeben sind
aufhängt.
Ich bin den Code oben Schritt für Schritt mit JTAG durchgegangen und hab
festgestellt, dass sich nach
LCD_BL_PORT ^= (1<<LCD_BL);
bzw. nach "}" nichts mehr tut. Er kehrt nicht zurück in die while
Schleife in der main Funktion.
Kann mir jemand helfen?