Forum: Mikrocontroller und Digitale Elektronik Flash beim AT90S8535 erweitern


von Oli K. (waldmeister)


Lesenswert?

Hallo Zusammen.
Ich benutze einen AT90S8535 mit 8K Byte internen Flash. Da mein Programm 
aber zuu groß wird suche ich nnach einer Flash-Erweiterung, die 
mindestens noch mal 8K - 32K Byte groß sein sollte! Wäre klasse, wenn 
ihr mir da helfen würdet, da ich das noch nie gemacht habe! Muss das 
ganze dann über SPI-Schnittstelle laufen? Wie viele Pins brauche ich 
ungefähr noch, da die I/O so gut wie ausgelastet sind!
Würde ja genr dem ATMega 16 genutzen, kann ich allerdings nicht machen, 
somit fällt die Lösung weg.

von Falk (Gast)


Lesenswert?

So direkt erweitern geht erstmal nicht, denn dazu müsste man Adress und 
Datenbuss nach aussen führen, so wie beim 8515. Also bleibt nur ein 
externen FLASH mit I2C oder SPI Schnittstelle. ABER!!! Der Zugriff auf 
diese Daten ist dann nicht so einfach wie im 8535. Und du kannst nur 
Daten speichern, keinen Programmcode.
Warum kannst du nicht den MEGA16 benutzen?

MfG
Falk

von Oli K. (waldmeister)


Lesenswert?

Also sehe ich das richtig, dass ich externen Flash nur über die 
SPI-Schnittstelle benutzen kann, da ich keine I²c SChnittstelle habe! 
Zudem sollte ich ungedingt Porgrammcode drauf speichern können, sonst 
hilft mir die ganze Erweiterung nichts. Was für Erweiterungsgrößen gibt 
es denn in diesem Zusammenhang?
Warum keinen Mega, da meine Firma erst mal die "alten" Bestände an Chips 
aufbrauchen möchte!

von irgendein Rahul (Gast)


Lesenswert?

>Zudem sollte ich ungedingt Porgrammcode drauf speichern können,

Den kannst du darauf gerne speichern - er wird aber nicht ausgeführt.
Nimm einen grösseren Controller oder optimiere dein Programm.
Wenn du in C programmierst, sollte es kein Problem sein, einen grösseren 
Controller auszuwählen (Portabilität). Assembler dürfte etwas 
schwieriger werden. Allerdings habe ich noch nie gehört, dass jemand in 
Assembler in einen AVR 4KB programmiert hat.

von Falk (Gast)


Lesenswert?

Programmcode im externem FLASH ist praktisch unmöglich. Es sei denn, man 
benutzt die Self prgramming Features. Hat der 8535 AFAIK aber nicht, 
ausserdem ist es langsam und macht das Programm kompliziert.
Wenn du keine I2C Schnittstelle hast, kann man das Ganze auch in 
Software erledigen.

MfG
Falk

P.S. Ich fürchte, eure alten Chips müssen anderweitig sinnvoll 
eingesetzt werden.

von Falk (Gast)


Lesenswert?

@ irgendein Rahul

> Allerdings habe ich noch nie gehört, dass jemand in
> Assembler in einen AVR 4KB programmiert hat.

Was noch lange nicht heisst, dass es sowas nicht gibt. Ich hab vor 
Jahren mal ne Schiedsricheranlage gebaut, mit Zeitmessung, Torzähler 
etc.
Waren so ca. 80kB Quelltext, ca. 7kB FLASH (wobei ca. 700 Byte 
String-definitionen). Alles in Assembler.

Ja, heute würde ich das sicher eher in C schreiben, hatte ich damals 
aber nicht die Zeit und Lust mich in C aufm AVR einzuarbeiten.

MfG
Falk

von irgendein Rahul (Gast)


Lesenswert?

>Was noch lange nicht heisst, dass es sowas nicht gibt.

Genau das sollte es heissen.
"Historische" Rechner wurden vermutlich auch in Assembler 
programmiert...

von Oli K. (waldmeister)


Lesenswert?

Ok, dann muss ich das anders machen und Teile vom Programm auslagern, 
die viel Speicher verbrauchen, wie Dislpay etc. Das sollte ja wenigstens 
möglich sein, oder?
Wo bekomme ich am besten solche Flash-Speicher?

von irgendein Rahul (Gast)


Lesenswert?

>Teile vom Programm auslagern
>Das sollte ja wenigstens möglich sein, oder?

Nein. Du kannst höchstens Konstanten, die im PROGMEM liegen (LCD-Texte 
etc.) extern in einem externen Speicher unterbringen und dann in den 
RAM-Speicher laden, wenn sie benötigt werden.

Beim AVR kann man keinen Programmcode auslagern!
http://de.wikipedia.org/wiki/Atmel_AVR

Man beachte die Harvard-Achritektur.

von Oli K. (waldmeister)


Lesenswert?

Ok, danke mal für die Sachen. Nun dann werde ich das wohl etwas ändern 
und ein externes EEprom einbinden. Dort kann ich dann ja fixe Variablen 
und feste Stringwerte speichern. Worauf muss ich denn beim Layout und in 
der Inbetreibnahme achten? Das ganze wird bei mir über SPI laufen 
müssen.
Im AVR-GCC Tutorial wird die ansteuerung fürs EEprom geschrieben. Wenn 
dies aber extra ist, muss ich dann extern neu definieren?? Wie habt ihr 
solche Varianten gelöst?

von Falk (Gast)


Lesenswert?

> und ein externes EEprom einbinden. Dort kann ich dann ja fixe Variablen

Das sind dann aber eher Konstanten ;-)

> und feste Stringwerte speichern. Worauf muss ich denn beim Layout und in

Genau. So gehts.

> der Inbetreibnahme achten? Das ganze wird bei mir über SPI laufen

Wenn die Leitung des SPI länger als 20..30 cm wird, sollte man eine 
Serienterminierung für SCK spendieren. Also einen Längswiderstand von 
ca. 33 Ohm, nah am Controller. Ich würde ihn immer einmachen, kostet 
praktisch nix und man weiss ja nie, was schlechte Leitungsführung mit so 
einem Signal manchmal macht. Der Rest ist relativ unkritisch.

MfG
Falk

von Oli K. (waldmeister)


Lesenswert?

Morgen Zusammen!
Ich habe noch mal kurz ne Frage des EEProms.Kann ich dort wenigstens 
Langzeitlogging speichern? Das wäre echt gigantisch, wenn das klappen 
würde!

von Jörg B. (manos)


Lesenswert?

Sicher... in EEPROMS kann man auch zur Laufzeit Daten 
speicher/lesen/löschen.
Da Du von Langzeit redest wird die Anzahl der max. Schreibzyklen 
(100k-1M) wahrscheinlich kein Problem darstellen. Man muss sich halt nur 
merken, wo die Daten stehen/anfangen.

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.