hi, habe grad leider keine möglichkeit zum testen aber muss etwas planen... kann ich halbwegs zuverlässig den UART eines atmega8 nutzen ohne einen xternen quarz nutzen zu müssen? also nur mit den internen 1mhz...
Den kannst du zum Testen auf dem Schreibtisch nehmen,Standartbaudraten bis 19200 sind kein Problem.Für alles andere als ein Prototypen ist der interne RC-Oszillator aber nicht stabil genug.Vor allem bei Temperaturschwankungen läuft die Frequenz weg und das UART-Timing stimmt nicht mehr. Kurzantwort: Nein
achso sorry da war ich wohl zu schnell mit meiner antwort... 19200baud? soviel wollt ich eigentlich net :) 9600 reichen völlig, das sollte dann gehn?...
Wenn du bei Zimmertemperatur (22-27 Grad) arbeitest und deine Stromversorgung gut stabilisiert ist KÖNNTE das klappen. 3% Toleranz sind beim UART maximal erlaubt. Aber garantieren wird dir das niemand. Wenn es für reguläres Debugging gebraucht wird, wolltest du schon einen Quarz einplanen.
ich arbeite zwischen ca -5°C und +50°C (im auto) :) ich brauche das ding eben nur für stumpfe ablaufsteuerungen, absolut nix zeitkritisches. über rs232 soll er dann die aktuellen zustände raushusten und eventuell von nem zweiten controller (bordcomputer) verarbeitet werden.
Zitat: "Den kannst du zum Testen auf dem Schreibtisch nehmen,Standartbaudraten bis 19200 sind kein Problem.Für alles andere als ein Prototypen ist der interne RC-Oszillator aber nicht stabil genug." Das heisst das die Sache bei konstanter Temperatur,dem selben AVR (2 versch. Atmega8 können schon wieder abweichen) mit bissl Probieren am Vorteiler klappt.Aber durch Temperatur,Typenschwankungen,Alterung und so weiter läuft der RC-Oszi zu schnell weg,um vernünftig damit zu arbeiten. Also: Quarz rein.
Ui nein, mit diesem Temperaturbereich wird das sicher nichts. Da kommst du schon auf 10% Schwankungen nur durch die Temperatur.
so ein mist... das problem ist, der atmega8 ist komplett an allen pins belegt :(
Zeig mal den Schaltplan und was du alles anschließen willst. Ggf kann man da was frei kriegen.
> und eventuell von nem zweiten controller (bordcomputer)
verarbeitet werden.
Wenn es der selbe Controller mit der selben Taktfrequenz bei der selben
Temperatur ist, könnte es gehen.
Wenn du aber die Signale sowieso mit einem anderen Controller
auswertest, nimm doch gleich SPI. Dann brauchst du dich nicht um den
Takt zu schweren.
Dann gibt es noch die Variante, dass du über die serielle Schnittstelle synchronisierst: Du sendest von angeschlossenen Gerät eine Menge Zeichen und änderst den Vorteiler so lange, bis die Sachen korrekt gelesen werden.
Der Vorteiler wird sich bei normalen Bitraten nicht genau trimmen lassen. Muss schon der RC-Oszillator des Prozessors getrimmt werden. Und das öfter, denn grad im KFZ ändert sich öfter mal die Temperatur, vor allem wenn die µCs an unterschiedlichen Standorten plaziert sind. Also muss ggf. mit Wiederholung gesendet werden, solange bis der Empfänger sich neu getrimmt und dem Empfang quittiert hat. Und wenn mehr als 2 miteinander reden, muss letztlich für jede Botschaft neu eingetrimmt werden ;-). Da dürfte ein Quarz oder Keramikschwinger vorzuziehen sein.
Ich hab ja nicht behauptet, dass meine Lösung elegant wäre ;) Auf Temperaturschwankungen reagiert die natürlich weiterhin allergisch. Bauen würde ich so etwas sicher nicht, aber wenn es wirklich keine Möglichkeit gibt, sinnvoll auf einen Takt zu synchronisieren, dann sieht es halt schlecht aus.
Hallo aber sind den quarzoszilatoren genauso empfindlich? sind quarze nur mit 22pF kondensatoren das beste ? luxx
Also Quarzoszillatoren sind schon ausreichend stabil. Aber die brauchen halt auch wieder die beiden Pins, die schon belegt sind.
Quarze, -oszillatoren oder Kermikschwinger sind dafür ausreichend. Letztere sind zudem recht klein und kommen in 3-pin-Version ohne Kerkos aus.
Wenn du um jeden Preis die Pins brauchst: Du kannst auch ein eigenes serielles Protokoll auf PWM-Basis implementieren, das keine genaue Frequenzübereinstimmung benötigt, also kurzer Puls = 1, langer Puls = 1. Kann man auch mit UART machen: Jedes UART-Byte überträgt effektiv ein Bit Nutzinformation. Prinzip: Um eine 1 zu übertragen, wird 0xFE gesendet, für 0 0xE0. Jeweils mit 0,5 Byte Pause hinterher. Je nach Bitratendifferenz wird beim Empfänger bei 1 irgendwas aus 0xFF,0xFE,0xFC ankommen, bei 0 0xF8,0xF0,0xE0,0xC0. Nicht schnell, aber einfach.
Oder man benutzt Schieberegister um sich zusaetzliche I/Os zu besorgen. Sehr viel einfacher als ne UART selbst zu stricken.
nee ich habs scho, trotzdem vielen dank für die sehr kompetente hilfe hier! habe einfach eine funktion gekickt welche bei abgeschalteter zündung eh nicht nötig ist und brauche somit 2 pins weniger. lebenswichtig war diese funktion auch nicht, eher ein "gag". ich baue deshalb 2 controller auf, damit ich erstmal halt unabhängig bin vom bordcomputer da es nicht sicher ist ob und wann es diesen geben wird und der bordcomputer selbst soll natürlich bei abgeschalteter zündung auch aus sein, der kleine (smd atmega8) zweitcontroller läuft jedoch immer. eventuell dann noch im stromsparmodus oder sowas, mal sehen...
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.