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%.
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.
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.
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.
>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.
>Dein Aufwand ist die Bestätigung dafür.
Ein verbogenes IC-Beinchen kann einem auch bei neuen Controllern
passieren..
>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.
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.
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.