Guten Tag. Ich hatte mir überlegt gehabt das ich den "Tackt" für den UART auch mit dem interenen RC hingekomme wenn ich an einen Interrupteingang eine Quarzgenaue Frequenz anlege und mithilfe dieser die benötigte Verzögerung der einzelnen Bits berechne. Nun ist mir eine andere Idee gekommen bei welcher ich euch gerne fragen würde ob das so geht. Beim Anschließen an den UART macht der Chip garnichts. Sobald Daten vom Computer über den UART gesendet werden (Ein Bestimmtes Zeichen "AA" oder "C1") Erkennt der Chip per Interrupt das etwas gesendet wird und misst die Zeit die das Zeichen pro Bit benötigt. Bei senden wird dann später genau diese Verzögerung verwendet. Ist das möglich? (ATmega8 8MHz, ATtiny13V 2,4MHz)
Michael Dierken schrieb: > das ich den "Tackt" für den UART auch mit dem interenen RC hingekomme Geht nicht. Einen "Tackt" bekommst du so nie hin. Du könntest allerdings den UART "takt"en... :-/ > Beim Anschließen an den UART macht der Chip garnichts. > Sobald Daten vom Computer über den UART gesendet werden (Ein Bestimmtes > Zeichen "AA" oder "C1") Erkennt der Chip per Interrupt das etwas > gesendet wird und misst die Zeit die das Zeichen pro Bit benötigt. > > Bei senden wird dann später genau diese Verzögerung verwendet. > Ist das möglich? Das nennt sich "Autobaud" und ist ein uralter Hut. Viele Bootlader verwenden diese Funktion... > Bei senden wird dann später genau diese Verzögerung verwendet. Du kannst z.B. auch einfach den Timer Reload Wert für den UART berechnen und dann den Hardware-UART verwenden.
Oh.. dann habe ich da ja was schon längst bestehendes Entwickelt ^^ Warum kann das nicht total neu und der größte Durchbruch sein? Naja. Schonmal gut das es geht und sich anscheind auch schon bewährt hat. Bei ATmega8 könnte das in Hardware funktionieren, der ATtiny13 hat allerdings soweit ich das Datenblatt verstanden habe keinen UART weswegen ich das per Software machen würde und dann bei jedem bestimmten TimerÜberlauf ein Bit auf seine Reise schicken würde.
Michael Dierken schrieb: > Bei ATmega8 könnte das in Hardware funktionieren, Richtig. > der ATtiny13 hat > allerdings soweit ich das Datenblatt verstanden habe keinen UART > weswegen ich das per Software machen würde und dann bei jedem bestimmten > TimerÜberlauf ein Bit auf seine Reise schicken würde. So geht das Senden, das Empfangen ist ein wenig trickreicher. Aber die gute Nachricht: auch das mußt du nicht erfinden, das nennt sich "Soft-UART"... Beitrag "Suche Attiny Soft-Uart"
Werde mir mal deinen Link durchlesen (Will hier nur Hilfe aber keine Komplettlösungen ^^) Wenn ich bei genau 2,4MHz eine Baudrate von 9600 erreichen will müsste ich den Timer bis 250 zählen lassen. Eigentlich sollte der Fehler doch gering genug sein oder? (251 = +0,04%) Oder habe ich mich da verrechnet? Als maximum habe ich bei dieser Variante eine Frequenz von 2.448.000Hz, was ich aber zunot über die Kalibrierungsbit`s verhindern kann zu überschreiten
Michael Dierken schrieb: > was ich aber zunot über die Kalibrierungsbit`s verhindern kann zu > überschreiten Das funktioniert eben nur, wenn die Umgebungsbedinungen definiert, konstant und reproduzierbar sind. Und idR. möchte man im "echten Leben" diese manuelle Korrektur nicht machen, denn die ist z.B. in einer Serie aufwendig und kostet Zeit (=Geld).
Das nehme ich als JA entgegen. Daher das ich diese Schaltung nur 1-2mal aufbauen will hätte ich kein Problem diese Kalibrirung einzustellen, zumal ich sie garnicht genau vornehmen würde sondern so das im Temperaturbereich -10 bis 40°C keine Überschreitung einer Frequenz von 2,448MHz auftritt. Ich denke kaum das ich ine 50°C heiße Platine in die Finger nehme und an dem Rechner anschließe um diese auszulesen. Sollte es im Sommer doch mal wärmer werde kann ich ja mal ausprobieren wie weit sich der RC nach unten kalibrieren lässt.
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.