Atmega328P: USART sendet nur zwei Zeichen

OP #4932476
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.
(Firma: Vescomp)
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...
Angehängte Dateien:
Gast
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.
Gast
> 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.
OP
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.