Atmega328P: USART sendet nur zwei Zeichen

OP #4932476
Lesenswert?
• ▲
▼
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) #4932499
Lesenswert?
• ▲
▼
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 #4932510
Lesenswert?
• ▲
▼
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 #4932778
Lesenswert?
• ▲
▼
> 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 #4932905
Lesenswert?
• ▲
▼
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren