Forum: Mikrocontroller und Digitale Elektronik T89C51RD2 und AT24C64


von Goekkes (Gast)


Lesenswert?

hi leute ich hätte da mal ne frage. und zwar geht es darum, dass ich
einen kompilierten Code (in C51 geschrieben) auf dem T89C51RD2 von
Atmel ausführen möchte, welches ich aber zuvor über eine
I2C-Schnittstelle von dem AT24C64 gelesen habe. Ist dies eigentlich
möglich, oder bekomme ich da probleme mit dem Adressbereich des
kompilierten Codes?
gruss gökkes

von Sascha (Gast)


Lesenswert?

Ungefähr so, wird es auch von Monitor-Programmen gemacht. Die kopieren
das ganze in ein ext. Ram.

"Ist dies eigentlich
möglich, oder bekomme ich da probleme mit dem Adressbereich des
kompilierten Codes?"

Dein Problem liegt dann darin, das der T89C51RD2 nur 64kB Code und 64kB
Ram verwalten kann. Und da er ja schon 64kB Flash-Code Speicher
hat.......
Somit müßtest du zur Laufzeit, den /EA Pin umschalten (auf Low) und
einen Reset ausführen. Das ext. Ram muß dann auch mit /PSEN verknüpft
sein.

Mfg Sascha

von Goekkes (Gast)


Lesenswert?

ich kann es mir nicht erlauben zur Laufzeit einen Reset auszuführen.
Muss irgendwie anders gehen, oder?
mfg gökkes

von Markus_8051 (Gast)


Lesenswert?

Der EA-Pin wird nur beim Reset abgefragt, hier hast Du also keine andere
Möglichkeit!

Du könntest aber die ganze Zeit über im externen Programmspeicher
arbeiten: Sprich am Anfang ein kleines Programm, welches einen Teil vom
FLASH ins externe RAM kopiert, dann die EA-Leitung umschalten und nen
Reset auslösen. Hier jetzt das normale Programm ausführen. Teile davon
könntest Du jetzt gegen Codestücke aus dem EEPROM austauschen.

Sollte so gehen,

veil Erfolg,

Markus_8051

von Goekkes (Gast)


Lesenswert?

ich hab keine möglichkeit im externen speicher code auszuführen,wie soll
das denn gehen?
mfg gökkes

von Markus_8051 (Gast)


Lesenswert?

Indem Du die PSEN-Leitung als Chip-select-Leitung für den externen
Programmspeicher verwendest!

Wie hast Du das sonst vor, ohne einen externen Programmspeicher? Hat
der T89C51RD2 die Möglichkeit, sich selbst während des Betriebs zu
flashen?

Gruß,
Markus_8051

von Peter D. (peda)


Lesenswert?

Du must Dir einen Bootloader schreiben, der überprüft, ob der Inhalt im
Flash schon gleich dem EEPROM ist.
Wenn nicht, überprüft er, ob im EEPROM eine gültige Kennung steht und
die CRC stimmt und dann kopiert er den EEPROM in den Flash.
Zum Kopieren rufst Du dann die API-Funktionen im Factory-Bootloader
auf.

8kB reicht zwar für vieles, aber ich würde gleich einen 24C256 (32kB)
nehmen.


Peter

von Goekkes (Gast)


Lesenswert?

über welche Schnittstelle steuer ich diese dann an?
mfg gökkes

von Peter D. (peda)


Lesenswert?


von Benedikt (Gast)


Lesenswert?

Das mit EA geht nicht !
Beim AT89C51Rxx ist standartmäßig EA deaktiviert. Er lässt sich nur
durch einen kompletten Chip Erase aktivieren. Chip Erase ist aber nicht
das was Flip macht, sondern anscheinend nur mit einem parallel
Programmer möglich...

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.