Forum: Mikrocontroller und Digitale Elektronik Problem beim Speichern im EEPROM (ATMEGA8): nur erste Byte funktioniert


von Michael G. (gorischek)


Lesenswert?

Hi,

ich möchte (Interrupt gesteuert) einen Datenblock vom SRAM des ATMEGA8 
in das EEPROM schreiben. Das funktioniert im Simulator vom AVR-Studio 
auch ohne Probleme, aber im µP wird nur das erste Byte gespeichert, dann 
passiert nichts mehr. Es scheint so, als würde das EEPROM nach dem erste 
Schreibbefehl nie fertg werden...

Das wäre mein Code:
1
EXT_INT0:
2
  cli  ; Alle Interrupts sperren um Zeit und Energie zu sparen
3
4
  ldi ZH, high(EEPROMDaten)  ; Quell-Adresse im EEPROM
5
  ldi ZL, low(EEPROMDaten)
6
  ldi YH, high(RamDat)    ; Ziel-Adresse im SRAM
7
  ldi YL, low(Ramdat)
8
  ldi r16,112    ; 112 Bytes sind zu kopieren
9
10
EEPROM_schreiben:
11
12
  sbic    EECR,EEWE  ; prüfen, ob der vorherige Schreibzugriff beendet ist
13
  rjmp    EEPROM_schreiben ; wenn nicht, nochmal prüfen
14
15
  out     EEARH, ZH  ; Adresse von EEPROM laden
16
  out     EEARL, ZL
17
18
  ld  r17, Y+          ; r17 mit SRAM-Byte befüllen
19
  out  EEDR, r17       ; r17 ins EEPROM
20
  
21
  sbi     EECR,EEMWE  ; Schreiben vorbereiten
22
  sbi     EECR,EEWE  ; Schreiben ausführen  
23
  
24
  adiw  ZH:ZL,1
25
  dec  r16    ; Byte-Counter
26
  brne  EEPROM_schreiben  ; Solange nicht 0 nochmal schreiben
27
28
  sei                     ; Interrupts wieder freigeben
29
  reti

Ich habe jetzt schon Stunden mit der Fehlersuche verbracht, komme aber 
auf keinen grünen Zweig. Ich hoffe, ihr habt eine Idee...

lg Michi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.