Forum: Compiler & IDEs Atmega88 --> AT90S2333


von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

Guten abend allerseits

Ein simples Gerät, das zur Zeit an ca. 50 Oertlichkeiten anstandslos 
sein Dasein fristet.
Nun hat der Kunde eine kleine Nachbestellung getaetigt. Da ich aber hier 
in der Türkei keine Atmega88 auftreiben kann, und wegen den paar Stück 
keine Bestellung in Deutschland aufgeben will, dachte ich mir, ich setze 
anstelle von Atmega88 den AT90S2333 ein, von denen ich noch etliche auf 
Lager habe.
Nachdem ich alle LCD relevanten Daten ins Eeprom ausgelagert, soweit als 
möglich alle globalen Variablen gestrichen und da und dort was 
umgestellt habe, ist es mir gelungen, das Ganze fehlerfrei zu 
compilieren.
Flash: 98% full
Eeeprom: 93% full
Data: 16% full

Nur: es funktioniert nicht. Weder auf der Hardware, noch im Simulator 
(AVR Studio 4.13 SP2).
Sobald ich den globalen Interrupt freigebe (main.c Zeile 187), startet 
der Simulator wieder von vorne, so als haette es einen Reset gebeben.
Wenn ich aber als MCU den Atmega88 eintrage, dann laeuft es ohne 
Probleme: sowohl im Simulator, als auch auf der Hardware.
Der einzige Unterschied: Atmega88 lauft mit internem 8MHz Oszilator, der 
AT90S2333 mit ext. 4MHz Resonator.

Beiliegen die Sourcen.

Dank im voraus.


Eine kleine Notiz am Rande: In meiner Verzweiflung habe ich auch 
versucht, das Ganze auf den Imagecraft Compiler (Vers. 6.31A mit 
Code-Compression) umzuschreiben. Aber das beste Resultat waren 2100 
Bytes, also ca. 103%.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hmm, ich finde erstmal keinen offensichtlichen Fehler.  Habe mir auch
mal ein AVR Studio gesucht und versucht, mich in dessen Bedienung
reinzufinden.  Davon abgesehen, dass der Simulator dort keinen
AT90S2333 mehr kennen will und ich den AT90S4433 ausgewählt habe (der
meiner Meinung nach binärkompatibel sein sollte), läuft das bei mir.
Nach dem sei() wird als nächstes in die ISR TIMER0_OVF_vect verzweigt.

Du könntest ja _vector_default mal auf einen RETI legen. Wenn's dann
geht, muss bei dir irgendein Interrupt aktiviert sein, der keine ISR
hat.  Ich finde aber nichts, weder bei der Inspektion des Binärcodes
noch finde ich in der Registeranzeige bei AVR Studio ein anderes
Interruptflag als das für den Überlauf von Timer 0.

Da ich vermutlich eine andere Compilerversion habe als du, hänge ich
mein Hexfile nochmal dran.

von Mehmet K. (mkmk)


Lesenswert?

Danke, werde Dein hex-file gleich mal ausprobieren ...

von Mehmet K. (mkmk)


Lesenswert?

Leider. Auch mit Deinem Hex-File funktioniert die Hardware nicht. :(
Wird mir wohl nichts anderes übrig bleiben, als meinen ICE200 zu suchen. 
Ich hab' zwar einen, aber keine Ahnung, wo ich es verlegt habe.
Ich melde mich wieder ...

Danke für Dein Bemühen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Wie wäre es, das mit _vector_default vorher noch zu machen?

von Mehmet K. (mkmk)


Lesenswert?

Mann o Mann, ist mir das peinlich.
Ich hab' also mein ICE200 gefunden. Den 23333 aus dem Sockel genommen 
... und was seh' ich da: Pin 1 (also RESET) war verbogen und hatte 
vermutlich Wackelkontakt.

Es tut mir schrecklich leid. "Quelle bruit pour une omelette ..."
Zu Deiner "Genugtuung": ich reisse mir schon seit 4 Tagen an diesem 
Problem die Haare aus.

Aber auf die Frage, warum es im Simulator nicht funktioniert, habe ich 
keine Antwort.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Shit happens.

von Gast (Gast)


Lesenswert?

>schon seit 4 Tagen an diesem Problem die Haare aus.

So schön die AT90-Teile auch waren, als sie in die Kiste kamen, würde 
ich mir immer die neuen µCs besorgen. Dein Aufwand ist die Bestätigung 
dafür.

von STK500-Besitzer (Gast)


Lesenswert?

>Dein Aufwand ist die Bestätigung dafür.

Ein verbogenes IC-Beinchen kann einem auch bei neuen Controllern 
passieren..

von Gast (Gast)


Lesenswert?

>Ein verbogenes IC-Beinchen kann einem auch bei neuen Controllern
>passieren..

Schon. Nur, wenn das Programm nicht umgeschrieben worden wäre, hätte 
Mehmet
dies sehr schnell gefunden.
Gemeiner sind die Effekte, die sich auf Grund 'alter Technik' ergeben 
können: BOD verhält sich anders, EEPROM-Inhalt ist nicht stabil, ...
Damit kann man sich u.U. stundenlang beschäftigen, was dann deutlich 
aufwendiger wird, als ein paar Euro für Porto+Verpackung.

von Mehmet K. (mkmk)


Lesenswert?

Lieber Gast

"Zur Not frisst der Teufel Fliegen".
Natürlich haette auch ich liebend gerne Atmega88'er eingesetzt. Aber ich 
lebe in der Türkei und da gibt es keinen Reichelt und Co.
Man nimmt, was man kriegt. Und wegen den paar Stück eine Bestellung in 
Deutschland aufgeben, waere absurd gewesen.

von STK500-Besitzer (Gast)


Lesenswert?

>Aber ich lebe in der Türkei und da gibt es keinen Reichelt und Co.

Hättet vor den Ferien bescheid sagen sollen, dann hätte dir bestimmt 
einer der vielen Türkei-Urlauber (u.a. mein Beinaheschwager mit Familie) 
die ICs mitbringen können  ... ;)

Übrigens ist es keine Reichelt, da sie Angelika heißt...

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.