Hallo zusammen,
Ich hab ein kleines Problem mit meinem EEPROM-Code.
1 | .def Temp1 = R16
|
2 |
|
3 | .dseg
|
4 | Tr0: .Byte 1
|
5 |
|
6 |
|
7 | .cseg
|
8 |
|
9 | ;Stack initialisieren
|
10 | ldi Temp1,low(RAMEND)
|
11 | out spl,Temp1
|
12 | ldi Temp1,high(RAMEND)
|
13 | out sph, Temp1
|
14 |
|
15 | ldi zl,low(TreiberIDs) ;Adresse ins EEPROM-Adress-Register laden
|
16 | ldi zh,high(TreiberIDs)
|
17 | out EEARL,zl
|
18 | out EEARH,zh
|
19 |
|
20 | sbi EECR,EERE ;Read-Enable-Bit im EEPROM-Controll-Register setzen
|
21 |
|
22 | in Temp1,EEDR ;Daten aus dem EEPROM-Daten-Register laden
|
23 |
|
24 | sts Tr0,Temp1
|
25 |
|
26 | .eseg ;EEPROM
|
27 | .org 0000
|
28 | TreiberIDs:
|
29 | .db 0x00,0x00,0x00,0x00
|
Der Sinn dieses Codes ist es einen Wert aus dem EEPROM auszulesen und
ins SRAM zu speichern.
Ich lasse den Code mit AVR-Studio 4 simulieren, weil ich im Moment
keine Möglichkeit habe Hardware aufzubauen.
Das Problem ist jetzt, dass während der Simulation immer der Wert 8 aus
dem EEPROM gelesen wird und nicht 0x00, wie es eigentlich sein sollte.
Hab ich einen Fehler im Code oder liegt das am AVR-Studio ?