Sauger schrieb:
> Moin,
> Hier mal ein Auszug meiner himem.h. Arbeitet mit Segment/Offset
> Adressierung,
> ist nicht sonderlich gut dokumentiert sollte aber ausreichen.
>
> MfG
Hi,
ich habe mir mal den Code oben vom Sauger in meinen
Xmega128-A1-explained Board hinein geladen und einfach mal versucht es
zum laufen zu lassen. Die Anfangs- und endadresse habe ich im Code
angepasst:
Anfangsadresse = 0x800000
Endadresse = 0xFFFFFF
Was die externen 8MB SDRam auf dem Board auch ausmachen.
Der Test läuft mit 19 Bytes gut, ab dem zwanzigsten Byte bekomme ich nur
noch Müll ausgelesen.
Ich habe das lesen und schreiben mit folgenden Befehlen gemacht:
HiMemWriteByte(0,0,0x31); //es wird der Buchstabe 1 gesendet
_delay_ms(1000); //keine chance für timingprobleme
HiMemWriteByte(0,1,0x32); //zweite Adresse
_delay_ms(1000); //keine chance für timingprobleme
HiMemWriteByte(0,2,0x33); //dritte Adresse
_delay_ms(1000); //keine chance für timingprobleme
und so weiter bis zur 20. Adresse...
und danach:
int temp1 = HiMemReadByte(0,0); //erste Adresse
_delay_ms(1000); //keine chance für timingprobleme
int temp2 = HiMemReadByte(0,1); //erste Adresse
_delay_ms(1000); //keine chance für timingprobleme
int temp3 = HiMemReadByte(0,2); //erste Adresse
und so weiter bis zum 20. Byte
Das 20. Byte hatte schon einen falschen Inhalt. Dann habe ich versucht
als Variableübergabe nicht die Adresse "0" und "1" und "2" usw.
einzugeben, sondern die echte Adressen 0x800000, 0x800001, 0x800002 usw.
Auch da das gleiche Spiel nur bis zur 19.ten Adresse.
Was mich noch gar nichts sagt, was hat es mit diesen Segmenten auf sich?
Ich habe hier immer auf gut Glück mit Segment 0 getestet, aber richtig
im klaren bin ich mir noch nicht, welche Variablen ich mit HiMemReadByte
und HiMemWriteByte übergeben soll.
Aus dem Source bin leider ich nicht schlau geworden um das abzuleiten
...