PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Manche Tiny2313 senden falsche Werte



frank-wob
02.11.2007, 14:08
Hallo,

ich habe bei ein paar Tiny2313 ein merkwürdiges Verhalten festgestellt.

Ich habe eine Schaltung mit einem tiny2313 und MAX232. Spannungsreglung mit 7805 100nF an Ein und Ausgang und einem 100µ Elko dahinter. Selbstverständlich 100nF Abblockkondensator am Tiny.

Der µC läuft mit internen 8 Mhz. Die Baudrate beträgt 19200 Baud.

Die Schaltung fragt einfach nur Messwerte von einem externen Sensor ab und verpackt sie in 4 Bytes und sendet sie dann über den MAx232 zum PC der diese auswertet.

Nun das Problem:
Ich habe 10 identische Schaltungen. Alle wurden mit einem Prototypen des Tiny2313 getestet und funktionieren auch einwandfrei. Dann habe ich die 10 weitere Tinys programmiert, aber bei 3 sendet der Controller Werte die um 128 zu groß sind. NAchdem ich dann jeweils einen anderen Tiny programmiert habe, gab es noch einen mit diesem Fehlverhalten aber letztendlich konnte ich durch den Wechsel der Controller alle 10 Schaltungen zum einwandfreien funktionieren bekommen.

Nun wollte ich natürlich Wissen warum das so ist. Ich habe also die Tinys in ein STK500 gesteckt und dort getestet. Dort funktionieren sie aber.
Also nochmal in die Schaltung, dort senden sie falsche Werte. Immer um 128 zu hoch. Also ein falsch gesendetes Bit. Ich habe ein Oszi dran gehangen, keine Spannungsspitzen und Restwelligkeit < 50mV.
Ich habe die gesendeten Daten zwischen Tiny und MAx232abgegriffen, die falschen Werte kommen definitiv vom Tiny.

Hat jemand eine Idee woher dieses Verhalten kommen könnte? Vor allem warum es nur bei manchen Tiny2313 in Verbindung mit meiner Schaltung auftritt, aber der gleiche Tiny im STK500 keine Zicken macht.

Ist das gleiche Verhalten evtl. schon jemand anderem passiert?

Bin für jeden Tipp oder Hinweis dankbar.

Viele Grüße
Frank

fluchtpunkt
02.11.2007, 14:25
guck dir mal das Timing des RS232 Signals an. Die internen RC-Oszis sind nicht sehr genau.

JanB
02.11.2007, 14:28
Hallo,
hast du das Calibration-Byte für 8MHZ der einzelnen Tiny2313
ausgelesen und nach dem Start in das OSCCAL-Register geschrieben ?
Automatisch wird nur der Wert für 4MHz geladen.
Sonst kann der Systemtakt und damit auch die Baudrate ziemlich
ungenau werden. Das kann dann zu Übertragungsfehlern führen.

Gruß Jan

frank-wob
02.11.2007, 17:31
Hallo,

ich weis natürlich das die internen Oszillatoren nicht sehr genau sind, aber wie gesagt auf den STK 500 laufen sie ja auch ordentlich mit internem Takt.

@Jan
Das war auch mein erster Gedanke, war aber leider nix. Ich schreibe das Byte mit Hilfe des AVR Studios ins EEProm und lese es nach dem Programmstart aus. Gegenüber der ersten Programmversion gab es keine merkliche Verbesserung.

Um festzustellen, ob es am internen Takt liegt, werde ich am Wochenende mal eine Schaltung mit einem Quarz versehen und dann mal gucken ob es läuft.

Empfangen tut der Tiny die Befehle übrigens einwandfrei. Er reagiert auf alle gesendeten Befehle absolut korrekt. Das auslesen der Sensoren wird über Befehle der Auswertesoftware gesteuert.

Gruß Frank

izaseba
02.11.2007, 17:39
Hallo,
natürlich werden sie mit Quarz richtig funktionieren.
Uart mit internem Takt ist wie Lotto spielen, bei mir hat das noch nie richtig geklappt :-(

Du kannst zum Testen Deine "funktionierenden" Module mal in Kühlschrank stecken und gucken, ob sie dann noch gehen, oder die Spannung mal was niedriger machen.

Gruß Sebastian

Besserwessi
02.11.2007, 22:01
Wenn keine extra Fehler hinzukommen durch den Empfänger, einen ungenauen Teiler oder Pegelwandler die an die Grenze getrieben werden, kann die UART theoretisch noch bis fast 10% Frequenzfehler funktionieren. Bei niedrigen Baudraten sollte es also kein so großen Problem sein und hat bei mir bisher funktioniert.
Wenn die Pins für einen Quarz noch frei sind, sollte man den aber zumindet als Option vorsehen.

frank-wob
04.11.2007, 12:28
So, ich habe das ganze nun mit externem Quarz probiert und dann funktionieren auch die zickigen Tinys einwandfrei.

Trotzdem würde ich gerne Wissen, was das STK500 anders macht. Denn da laufen die Tinys ja auch mit internem Takt einwandfrei.

@izaseba
Ich habe schon viele Schaltungen mit internem Takt gebaut und hatte bisher kaum Probleme damit. Ich nutze allerdings immer niedrige Baudraten von 9600 oder 19200 Baud. Die meisten Schaltungen landen in Schaltschränken, in den es nicht gerade Temperatur stabil ist. Trotzdem laufen einige schon seit Jahren ohne Probleme. Allerdings haben die meisten eine aufwendige Spannungsstabilisierung.

Gruß Frank

izaseba
04.11.2007, 13:23
@izaseba
Ich habe schon viele Schaltungen mit internem Takt gebaut und hatte bisher kaum Probleme damit. Ich nutze allerdings immer niedrige Baudraten von 9600 oder 19200 Baud. Die meisten Schaltungen landen in Schaltschränken, in den es nicht gerade Temperatur stabil ist. Trotzdem laufen einige schon seit Jahren ohne Probleme. Allerdings haben die meisten eine aufwendige Spannungsstabilisierung.

:-k Wir könnten das ja weiter diskutieren, ich finde aber, daß Du selber die Antwort auf dein Dein Problem gefunden hast.
Ich habe (nicht nur) meine Meinung zum Thema gesagt.
Wie Du das jetzt interpretierst und was Du daraus machst ist alleine Deine Sache.

Gruß Sebastian