Hallo Community
Meine Subroutine zum Beschreiben des EEPROMs sieht so aus:
1 | void write_eeprom1(unsigned char Address, unsigned char Data)
|
2 | {
|
3 | EEADR = Address;
|
4 | EEDATA = Data;
|
5 | WREN = 1;
|
6 | GIEH = 0;
|
7 | _asm
|
8 | //Der Assembler-Teil wurde direkt aus dem Datenblatt übernommen
|
9 | MOVLW 0x55
|
10 | MOVWF EECON2, 0
|
11 | MOVLW 0xAA
|
12 | MOVWF EECON2, 0
|
13 | BSF EECON1, 1, 0 //Führt den Schreibvorgang aus
|
14 | _endasm
|
15 | while(WR); //Auf das Ende des Schreibvorganges warten
|
16 | GIEH = 1;
|
17 | WREN = 0;
|
18 | }
|
Bei dem Code hängt sich der PIC allerdings bei der Zeile
"GIEH = 1"
auf, das heisst er besitzt 0% Funktionalität (weder Interrupts noch
main), bis der Watchdog greift.
Wenn ich die obengenannte Zeile streiche, funktioniert alles
einwandfrei.
Es kommt für mich aber nicht in Frage, das Setzen des Bits dem
USB-Framework zu überlassen.
Fällt euch etwas auf, das falsch ist / sein könnte ?
Grüsse
Toubi