Forum: Mikrocontroller und Digitale Elektronik Problem mit RS232 und int. RC-Osz.


von Marc (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit der Datenübertragung per RS232. Ich verwende
als Spannungsversorgung einen LM2575 um einen möglichst großen
Eingangsspannungsbereicht zu haben. Mein ATMega8515 läuft mit 8MHz die
vom internen RC-Oszillator erzeugt werden. Manchmal treten bei der
seriellen Datenübertragung Fehler auf. Wenn ich statt des internen
Oszillators einen externen Quarz für den Takt verwende, oder statt des
LM2575 einen 7805, dann treten die Fehler nicht auf. Da ich aber schon
einige Platinen geätzt habe, möchte ich die Änderung auf ext. Quarz
nicht machen, da ich sonst neue Platinen machen müsste. Auch möchte ich
nicht auf den 7805 ausweichen, weil ich sonst ebenfalls neu Platinen
fertigen müsste und den großen Eingangsspannungsbereich nicht mehr
hätte. Zusätzliche Kondensatoren an der 5V-Versorgung des MC haben
keine Besserung gebracht. Hat jemand eine Idee wie man das (einfach)
lösen kann?

von MSE (Gast)


Lesenswert?

Wenn Deine Taktfrequenz aus den vor Dir genannten Gründen nicht stabil
genug ist und Du daran nichts ändern kannst, würde ich an Deiner Stelle
probieren:

1. Geh mit der Baud-Rate so wo weit runter wie möglich,
2. Übertrage immer nur möglichst kleine Datenpakete auf einmal und
   mach dazwischen Pausen.


Gruß, Michael

von crazy horse (Gast)


Lesenswert?

Datenblatt:
"If the internal RC is used at other frequencies, the calibration
values must be loaded manually..."

von Marc (Gast)


Lesenswert?

OK, den Teil im Datenblatt habe ich gefunden. Aber ich verstehe das
nicht so ganz. Da steht: This can be done by first reading the
signature row by a programmer, and then store the calibration values in
the...
Was ist die signature row und wie kann man die auslesen..????

von crazy horse (Gast)


Lesenswert?

Welchen Programmer verwendest du?
Mit dem STK500/AVR-Studio kannst im Programmiertool unter "Advanced"
die cal.bytes für die verschiedenen Frequenzen auslesen  und im
"normalen" Flash oder EEProm speichern. Dort kann sie dann im
Programm lesen und in das OSCAL-Register schreiben.
Ich persönlich nehme lieber einen SMD-Resonator, wenn es in der
Anwendung auf halbwegs genaues Timing ankommt (RS232 gehört für mich
dazu). Neben der sowieso schon vorhandenen Ungenauigkeit kommt noch
Drift durch Temperatur und Spannung, und nach Murphy gleicht sich da
nicht etwa was aus, sondern summiert sich prinzipiell in Richtung des
grösstmöglichen Fehlers.

von Marc (Gast)


Lesenswert?

Ich verwende zum Programmieren einen selbstgebauten Adapter mit einem
74LS245 und PonyProg als Software. Geht das damit auch irgendwie?

von crazy horse (Gast)


Lesenswert?

da kann ich dir nicht weiterhelfen, damit kenne ich mich überhaupt nicht
aus. Kann sein, kann nicht sein, ist ne Frage der Software, ob die das
unterstützt.

von Frankl (Gast)


Lesenswert?

Ich habe auch schon meine negativ Erfahrungen mit dem intern RC Osz.
gemacht. Er ist sehr Temp. abhängig.

von Tobi (Gast)


Lesenswert?

wer sucht der findet. unter ponyprog commands steht ganz unten read osc.
calibration byte. das hört sich doch ganz gut an..

von Marc (Gast)


Lesenswert?

OK, habe inzwischen ein SDK500 aufgetrieben und das ganze funktioniert.
Danke für die Hilfe...

von Peter D. (peda)


Lesenswert?

Irgendwo steht auch, daß der RC nicht stabil genug für RS-232 ist.

Entweder Du baust eine Baudratenerkennung ein oder nimmst einen Quarz.

Ansonsten ist es nur Glückssache, daß es klappt.
Für reine Hobbyprojekte kann man es ja machen, aber die paar Cent für
nen Quarz zu sparen macht einfach keinen Sinn.

Ich würds jedenfalls nicht riskieren, daß die Schaltung bei kalten
Wintern oder heißen Sommern aussteigt.


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
Noch kein Account? Hier anmelden.