Hallo miteinander!
Ich hoffe jemand kann mir bei folgendem Problem helfen:
Ich versuche ein Display zu konfigurieren, dabei tritt aber gleich am
Anfang folgender Fehler auf:
Im angehängten Programmcode arbeitet der Debugger alle Befehle bis
"PORTB&=(~(0x02));" (habe da nur sicherheitshalber so viele Klammern
drin), klickt man dann nochmals auf step into verschwindet der
Befehlszeigepfeil und es steht nur mehr der Cursor da, bei abermaligem
klicken werden alle debugging-befehle außer reset und pause deaktiviert.
Was noch auffällt, ist, dass schon nach "PORTA&=..." das Zero-Flag
gesetzt wird.
Ich benutze AVR Studio 4, den Olimex AVR-JTAG-USB und einen ATmega 32.
Vielleicht fällt jemandem etwas dazu ein!
Ich denke der folgende Code sollte reichen, sonst bitte einfach
schreiben.
1 | #include <avr/io.h>
|
2 | #ifndef F_CPU
|
3 | #define F_CPU 7372800UL
|
4 | #endif
|
5 | #include <util/delay.h>
|
6 |
|
7 | void DIS_setup();
|
8 | void DIS_sendchar(unsigned char sendchar, unsigned char mode84, unsigned char bfcheck, unsigned char rs);
|
9 | unsigned char DIS_bfcheck(void);
|
10 | void DIS_send4bit(unsigned char senddata);
|
11 | void DIS_send8bit(unsigned char senddata);
|
12 |
|
13 |
|
14 | int main(void){
|
15 | DDRD|=0x80;
|
16 | PORTD&=(~(0x80));
|
17 | DIS_setup();
|
18 | while(1);
|
19 | }
|
20 |
|
21 | void DIS_setup(){
|
22 |
|
23 | //AUSGANGSKONFIGURATION//
|
24 | DDRA|=0x03; //PORTA 0-1 (RS und R/W) auf ausgang
|
25 | DDRB|=0x02; //PORTB 1 (E) auf ausgang
|
26 | PORTA&= ((0x03)); //PORTA 0-1 auf 0
|
27 | PORTB&= (~(0x02)); //PORTB 1 auf 0
|
28 |
|
29 | //DISPLAYKONFIGURATION//
|
30 | _delay_ms(50); //anfangs 50 ms warten
|
31 |
|
32 | //function set 1
|
33 | DIS_sendchar(0x3, 0, 0, 0); //erste 4-bit function set schicken
|