Ich hatte auf dem Steckbrett u.a. meine USART-Software auf einem 328P im DIL-Gehäuse getestet - dort lief alles. Die putchar-Routine enhält in der Transmit-Warteschleife einen sleep_mode()-Aufruf, ich hatte den Sleepmode aber nirgends initialisiert - auf dem DIL-Controller lief es trotzdem. Nun wollte ich die ganze Chose auf einem 328P im TQFP-Gehäuse laufen lassen und nichts ging mehr. Ich habe dann mit einem kleinen Testprogramm und meiner USART-Lib per Logic Analyzer versucht, der Sache auf den Grund zu gehen. Dabei stellte sich heraus, dass genau die ersten zwei Zeichen gesendet werden und der Controller anschließend nicht mehr aus der Transmit-Warteschleife kommt. Ursache war der sleep_mode()-Aufruf - also offensichtlich zwei verschiedene Controller-Versionen... Im Datenblatt habe ich auf die Schnelle keinen Hinweis dazu gefunden.
Uhu U. schrieb: > Ursache war der sleep_mode()-Aufruf - also offensichtlich zwei > verschiedene Controller-Versionen... Ja, sicher. 27 Waffer oben links sind für DIP, die restlichen sind für TQFP vorgesehen. Der Unterschied ist mit blossem Auge zu sehen - ganz klar zwei verschiedene Controller-Versionen...
Uhu U. schrieb: > Nun wollte ich die ganze Chose auf einem 328P im TQFP-Gehäuse > laufen lassen und nichts ging mehr. Gehäuse sollte egal sein, in Deinem Aufbau sind weitere Unterschiede. In der Arduino-Umgebung kommt "Serial.flush();", bevor man in den Sleepmode geht. Zum Test kannst Du mal einige Millisekunden Pause machen, bevor Du schlafen gehst.
Manfred schrieb: > In der Arduino-Umgebung kommt "Serial.flush();", bevor man in den > Sleepmode geht. Das macht keinen Sinn, wenn der Controller in den (passenden) Sleep-Mode gehen soll, wenn der USART noch arbeitet.
> ich hatte den Sleepmode aber nirgends initialisiert Da steckte der Fehler. Sorry, für das böse Wort: "Das war schlampige Arbeit." Jetzt ist es behoben, und es läuft. Gut! Meine Sicht: Bei eigener schlampiger Arbeit, darf man nicht andere für auftretende Fehler verantwortlich machen.Die Diskussion über vermeintliche Unterschiede sind da irrelevant. Uhu U. schrieb: > Im Datenblatt habe ich auf die > Schnelle keinen Hinweis dazu gefunden. Wozu auch.... Im Datenblatt, und in den Appnotes steht, wie man es richtig macht. Wenn man davon abweicht, droht Fehlfunktion. Also nein: Die Datenblattschreiber werden nicht alles aufzählen, was man alles falsch machen kann. Der Tipp muss also lauten: Machs richtig, dann tuts das auch.
Arduino F. schrieb: > Da steckte der Fehler. Gut dass du mir das jetzt sagst - ich wäre da nie drauf gekommen. Im Ernst: Ich habe diesen Thread nicht eröffnet, damit DU deinen Senf zu Dingen geben sollst, die eh klar sind, sondern um Leuten, die mit der Suchfunktion umgehen können, ggf. einen Hinweis zu geben, woran solche kuriose Verhaltensweisen liegen könnten.
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.