Abend,
wie im Titel schon beschriebn habe ich ein Problem beim Beschreiben des
internen EEPROM des Tiny45. Programmiert wird mit AVR Studio in C über
winAVR. Geflasht wird der Tiny über DebugWire mit dem Dragon (Fuse
DebugWire Enable über HVSP vorher aktiviert). Der µC läuft mit dem
internen RC-Oszillator und einem Teiler von 8.
Der verwendete Treiber läuft auf einem ATmega 88 ohne Probleme und ist
auch der Code aus dem Datenblatt:
1 | global void vEE_Write(uint8 Parameter, uint8* pBuffer)
|
2 | {
|
3 | #if(EEPROM_WRITE_ACCESS == TRUE)
|
4 | while(Get_Bit(EECR, EEPE)); // wait for completion of prev.
|
5 | EEAR = Parameter; // set up adress register
|
6 | EEDR = *pBuffer; // set up data register
|
7 | Set_Bit(EECR, EEMPE); // write logial one to EEMPE
|
8 | Set_Bit(EECR, EEPE); // start EEPROM write by setting EEPE
|
9 | #endif
|
10 | }
|
11 |
|
12 | global void vEE_Init(uint8* pBuffer)
|
13 | {
|
14 | uint8 i;
|
15 |
|
16 | while(Get_Bit(EECR, EEPE)); // wait for completion of prev. write
|
17 |
|
18 | for(i=0; i<EndOfEE_Data; i++)
|
19 | {
|
20 | EEAR = i; // set up adress register
|
21 | Set_Bit(EECR, EERE); // start EEPROM read by setting EERE
|
22 | *pBuffer = EEDR; // save data from data register
|
23 | pBuffer++;
|
24 | }
|
25 | }
|
Was geht bzw. was geht nicht. Das Auslesen der Daten in vEE_Init
funktioniert. Nachdem die Funktion vEE_Write() aufgerufen wurde halte
ich das Programm an und lasse mir den Inhalt des EEPROMs in AVR Studio
anzeigen und siehe da, keine Werte gespeichert. Werte, die ich mit den
Dragon ins EEPROM schreibe, werden gespeichert. Wenn ich die Funktion
vEE_Write() mit dem Dragon Zeile für Zeile durchklicke, passt auch
alles. Also richtige Adresse geladen, Bits werden richtig gesetzt und
auch in dem Datenregister steht der richtige Wert, wird aber nicht ins
EEPROM übernommen.
So langsam gehen mir auch die Ideen aus, woran es liegen könnte. Hatte
schon jemand ähnliches Problem? Verträgt sich beim Attiny x5 das EEPROM
mit DebugWire nicht? DebugWire ausschalten geht leider nicht, da der µC
bereits auf der PCB drauf ist.
Vielen Dank schon mal im Voraus und gute Nacht
Marcel