Hallo, ich habe eine bestehende Applikation ( 80C32 u. uVision ) und möchte gerne den Controller ohne Redesign durch einen AT89C51RD2 ersetzen. Kann ich dann mit uVision III das externe EPROM und das interne Flash über Banking nutzen? Kann ich die EA-Leitung von "Innen" steuern? Koopi
Nix zu machen, es gibt nur entweder internen Flash, oder externes EPROM. Da der RD2 64kB hat, kannst du dir das EPROM also komplett sparen, musst dafür aber die EA-Leitung entsprechend umbiegen. Andersrum kannst du es auch wie bisher laufen lassen, ohne irgendwas zu ändern, aber es sei aufs Errata Sheet verwiesen, in dem steht, welche Konstellationen zu einem Fehlverhalten führen können... Ralf
@Ralf, >> kannst du dir das EPROM also komplett sparen Ich brauche über 64K; das ist mein Problem. Ich habe heute mit Atmel telefoniert und erfahren das der ...RE2 erst Ende Q1/2007 kommt. >>Nix zu machen, es gibt nur entweder internen Flash, oder externes EPROM. Eigentlich unplausibel. Warum hat man dann die EA- und vor allem die PSEN - Leitung noch. 64K intern durch 64K estern ersetzen? Meine Alternatividee war, dass ich die EA-Leitung beim Banking über ein Portpin umschalte. Oder kann man die Leitung von innen "bewegen"? Geht? Geht nicht? G... Koopi
Ach so, jetzt wirds dann natürlich klarer... Also, wegen PSEN und EA, der originale 8031 (von dem der 8032 abstammt) konnte nur über externen Programmspeicher versorgt werden. In Wirklichkeit sind immer nur 8051/8052 produziert worden, also mit internem EPROM. Diejenigen, die fehlerhaften EPROM hatten, wurden dann eben 8031/8032 getauft. Deswegen gibts bei beiden EA und PSEN, und auch bei Derivaten wie dem ED2, denn es könnte ja sein, dass man einen 8032 gegen einen ED2 tauschen will, weils den alten Chip nicht mehr gibt. Also muss die Möglichkeit gegeben sein, dass sich der neue wie der alte verhält... Nun zu deinem eigentlichen Problem: Ich würde nicht den EA Pin schalten, da dieser in einigen Konfigurationen (Stichwort Leseschutz) beim PowerUp gelatcht wird. Wenn du ohne Leseschutz arbeitest, geht das natürlich THEORETISCH, von praktischen Anwendungen weiss ich leider nichts, dass das jemand schon mal so gemacht hat... Du müsstest halt einen Teil deiner Applikation in beide Programmspeicher laden... Falls Fragen dazu sind, her damit... BTW: Wofür brauchst du soviel? Sind das Daten, die da Platz fressen, oder wirklich Applikation? Ralf
Hallo Ralf, >>BTW: Wofür brauchst du soviel? Sind das Daten, die da Platz fressen, >>oder wirklich Applikation? Ich habe eine Applikation die sowohl viel Code wie auch Daten hat. Es sind alleine 11 Sprache, u.a.japanisch und russisch, implementiert. Ich möchte nun noch einige dringende Erweiterungen einbringen ohne das gesamte Design umzuwerfen. Mit der nächsten Generation wird ein ARM7 einzuhalten. Dafür ist es aber noch etwas zu früh. >>Du müsstest halt einen Teil deiner Applikation in beide Programmspeicher >>laden... Dafür kann uVision das Banking. Das ist ja meine Überlegung. Koopi
>> ...sowohl viel Code wie auch Daten hat
Wärs dann nicht geschickter, die Daten in ein serielles EEPROM o.ä.
auszulagern? Braucht nur zwei Pins...
Ralf
Nimmste eben den AT89C51RC2, da kannste in die oberen 32kB den externen EPROM reinbanken. Peter
@Ralf, ich habe sogar ein I2C-EEPROM im System. Ich müßte nur einen größeren einsetzen. Da ich aber sehr viele Menüs habe, wären die Ladezeit aber sehr lang. Und genug SRAM als Zwischenspeicher habe ich nicht. Es ist trotzdem die beste Lösung, wenn der AT89C51RE2 nicht schnell genug kommt und der ...RD2 nicht internen und externen Programmspeicher in einem System beherrscht. @Peter, wir diskutieren hier über die eventuelle Nutzung des internen und eines externen Speichers beim AT89C51R'D'2. Bis auf den größeren Speicher sehe ich aber keinen Unterschied zum AT89C51R'C'2. Hast Du den AT89C51RC2 schon einmal sowohl mit internem wie auch mit externem Programmspeicher genutzt? Koopi
Koopi wrote: > wir diskutieren hier über die eventuelle Nutzung des internen und eines > externen Speichers beim AT89C51R'D'2. Bis auf den größeren Speicher sehe > ich aber keinen Unterschied zum AT89C51R'C'2. Doch, es gibt einen großen Unterschied Da intern nur 32kB sind, kannst Du ohne Probleme auch externen Speicher verwenden, indem Du ihn einfach über 0x8000 adressierst. Es müssen dann nur die Interrupts und die Bankumschaltung unter 0x8000 liegen. Ich würde allerdings extern Flash-Chips nehmen statt EPROM, dann kannst Du im internen Flash einen Bootloader reinschreiben, der auch den externen Flash programmiert. > Hast Du den AT89C51RC2 > schon einmal sowohl mit internem wie auch mit externem Programmspeicher > genutzt? Nein, ich habe bisher nur max 40kB benötigt. Peter
Hey, das Problem läßt sich leider auch nicht mit dem AT89C51RC2 lösen, da man nur den internen oder externen Programmspeicher ansprechen kann. Ich habe aber heute 2 Chips AT89C51RE2 von Atmel bekommen. Somit kann ich bis zum liefern von Stückzahlen alles vorbereiten. Koopi
Bernhard Koopmeiners wrote: > das Problem läßt sich leider auch nicht mit dem AT89C51RC2 lösen, da man > nur den internen oder externen Programmspeicher ansprechen kann. ??? EA auf VCC, dann ist 0000-7FFF intern und 8000-FFFF extern. Und in 8000-FFFF blendest Du dann soviel Bänke ein, wie Du brauchst. Peter
Hallo Peter, das ist richtig, nur möchte ich, wie oben angeführt, die bestehende Applikation nicht ändern. Die Freigabe einer HW-Änderung ist immer sehr aufwändig. Ein Bauteil ersetzen ist dagegen sehr einfach. Eigentlich ist es schade das Atmel die EA-Leitung bei diesen Typen nicht von innen schaltbar gemacht hat. Ob es von aussen über ein Portpin verdrahtet gehen wird, werde ich noch irgendwann testen. Koopi
Koopi wrote: > Eigentlich ist es schade das Atmel die EA-Leitung bei diesen Typen nicht > von innen schaltbar gemacht hat. Ob es von aussen über ein Portpin > verdrahtet gehen wird, werde ich noch irgendwann testen. Ne, das ist doch gerade der Trick am RC2, über den internen 32kB wird immer extern gelesen, völlig egal wie der EA-Pin steht. Also EA nicht umschalten, sondern fest auf VCC legen ! Peter
Der Trick wäre, eine alte Applikation die externen 64K hatte, mit dem RC2 ohne Hardwareänderung auf 96K zu erweitern. Aber ich höre schon, dass es auch eine Frage der Anwendung ist. Koopi
Sobald Du 64kB überschreiten willst, mußt Du Banking nehmen oder ein Derivat mit erweiterter Adressierung. Du brauchst als in jedem Fall ne Hardwareänderung und den banked Linker, dem Du dann das Banking-Schema angeben mußt. Die externen 64kB kann man z.B. in 2 Bänke a 32kB aufteilen, mit A15 über einen freien Portpin umgeschaltet. Die Umschaltroutine muß als Assemblerobjekt in den unteren 32kB einbinden. Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.