Hallo, ich habe folgendes Problem: Ich habe 6 mal die gleiche Hardware. Platine mit Mega168, LAN Interface, RS485 und ein wenig drum herum. Ich habe ein Programm geschrieben (gcc) und in die Mega168 geschrieben, zwei Platinen funktionieren, die anderen vier nicht. Zuerst dachte ich an einen Hardware Defekt, doch mit den beiden m168 aus den funktionierenden Platinen funktionieren auch alle anderen. Ich habe die Controller getauscht, 3 verschiedene Programmer eingesetzt, komme aber immer zum gleichen Ergebnis. Ich habe auch schon den Code in den nicht funktionierenden Controllern mit den funktionierenden verglichen. Bis auf Byte gleich. Fuse Bits stimmen auch. Ich weis nicht mehr weiter. Hat jemand eine Idee, woran das liegen könnte. Wäre echt für jeden Tip dankbar.(Mein Chef bekommt langsam schlechte Laune) Gruß Frank
Seltsam -- die µC reagieren unterschiedlich empfindlich auf Störungen/Einstrahlungen/langsam ansteigende VCC, anschwingenden Quarz, SUT Fuses passen zur Spannungsversorgung? ... -- Irgendein Parameter ist am Rande der Spez: CPU-Frequenz, Spannung, Temperatur, Strom, den die Ports versenken/liefern müssen, interner RC-Oszi zu ungenau, BrownOut ... -- schon mal die Errata für ATmega168 durchgelesen, insbesondere "Part may hang in Reset"? Vielleicht greift ja einer der Silicon-Bugs -- Haben die µC alle das gleiche Produktionsdatum oder sind's verschiedene Chargen? (BTW: Wie erkennt man am Produktionsdatum eigentlich die Revision, auf die sich ja die Errata beziehen?) -- Uninitialisierte Variablen? Je nach µC hat eine solche Variable vielleicht andere Werte, beim gleichen µC aber immer wieder einen ähnlichen Wert nach Powerdown-Reset.
Hallo, danke für die Tips. Ich benutze externen Quarz 11.0592 Mhz / 22pF. Fusebits sind identisch. Ich nehme mir jetzt noch mal den Quellcode vor, vielleicht habe ich ja tatsächlich irgendwas nicht initialisiert. Ob die Controller aus der gleichen Charge kommen, kann ich nicht sagen. Wir kaufen die Dinger Stangenweise. Sie waren jedenfalls alle im gleichen Blister. Ich habe gerade noch mal eine Platine ans Oszi gehangen und alles genau nachgemessen.Spannung stabil und sauber. Auch die Portzustände scheinen alle in Ordnung zu sein. Ich werde jetzt erstmal versuchen rauszufinden ob gar nichts läuft oder wo genau sie hängen bleiben. ICh werde auch mal versuchen die betreffenden Controller mit internem Takt laufen zu lassen. Vielleicht finde ich heute Morgen was, dass ich gestern übersehen habe. Viele Dank erst mal. Für weitere Tips oder Meinungen bin ich nach wie vor Dankbar. Gruß Frank
Nutzt Du evtl. das EEPROM? Variablen die dort stehen, könnten auch diesen Fehler verursachen.
Frank Matth wrote: > Ich habe ein Programm geschrieben (gcc) und in die Mega168 geschrieben, > zwei Platinen funktionieren, die anderen vier nicht. "funktioniert nicht" kann man sich an die Backe schmieren. Es hilft kein Wehklagen, Du must schon rauskriegen, was genau nicht funktioniert. Kommt denn der AVR überhaupt aus de Puschen, also mal direkt nach dem Reset ne LED einschalten und z.B. mit 1Hz ne Weile blinken lassen, damit man sieht, ob der Clock stimmt usw. Generell ist es eine gute Idee, sich ein Programm zu schreiben, was nur die Hardware testet. Man muß ja erstmal rauskriegen, ist das Board defekt oder liegt der Fehler in der Software. Unbenutzte floatende Eingänge, die trotzdem mit ausgewertet werden (if(PINB==), ist für mich klar ein Softwarefehler. > Ich habe die Controller getauscht, 3 verschiedene Programmer eingesetzt, > komme aber immer zum gleichen Ergebnis. Planlos rumprobieren sollte man schnell aufgeben, das kostet nur unnütz Zeit. Peter
So, jetzt laufen die Mistdinger endlich. Es lag am Watchdog. Ich habe den Watchdog vor initialisierung des Wiznet Moduls gestartet. Während der ganzen Entwicklungsphase (mit immer dem gleichen µC) und bei zwei weiteren Controllern gab es keine Probleme. (Sollte auch zeitlich nicht) Bei den anderen funktioniert es nur, wenn der Watchdog nach Initialisierung gestartet wird. Sonst hing der Controller in einer Reset-Schleife. Danke für eure Tips und Ratschläge Gruß Frank @Peter Wenn du genau gelesen hast, wirst du festgestellt haben, dass die Hardware funktionieren mußte, weil sie ja mit den anderen Controllern funktionierte. 3 Posts weiter unten wirst du auch lesen, dass ich alles explizit durchgemessen habe und gerade dabei war zu sehen wo es hängt. Mit dem Planlos rumprobieren hast du allerdings recht. Aber nach 16 Stunden Arbeit, wird man zuweilen etwas Planlos.(Ich jedenfalls) Wenn es nicht erlaubt ist, bei einem Problem das nach 16 Stunden Arbeitszeit auftritt einfach mal zu Posten und um einen Vorschlag zu bitten, dann entschuldige ich mich dafür. Da habe ich dann den Begriff "Forum" wohl falsch verstanden. Das nächste mal Poste ich dann, wenn ich einen Fehler ganz klar eingegrenzt und bereits gelöst habe. Allerdings... wozu sollte ich dann noch Posten? Frank
Frank Matth wrote: > Wenn es nicht erlaubt ist, bei einem Problem das nach 16 Stunden > Arbeitszeit auftritt einfach mal zu Posten und um einen Vorschlag zu > bitten, dann entschuldige ich mich dafür. Da habe ich dann den Begriff > "Forum" wohl falsch verstanden. Du brauchst Dich nicht zu entschuldigen und hast auch nicht das Forum falsch verstanden. Ich wollte nur Tips geben, wie man vorgehen sollte, mehr nicht. Den Watchdog benutze ich prinzipiell nicht. Er führt nur dazu, daß Entwicklungsfehler verschleiert werden und dardurch sinkt die Zuverlässigkeit. Wenn er aber gefordert wird, dann erst ganz zum Schluß einfügen, wenn alle Funktionen bereits fehlerfrei laufen. Ich habe so eine Anwendung und dann muß er auch per Fusebit aktiviert werden, damit er nicht einschlafen kann. For das ganze Init-Geraffel erhöhe ich ihn dann auf 2 Sekunden. 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.