Hallo, auf einer Leiterplatte will ich über zwei ATmega 88 (ATA 6612)Mikrocontroller eine Kommunikation über die LinBus Leitung herstellen. Der programmierte Mikrocontroller, der als Master fungiert, sendet den kompletten Nachrichtenframe (Synch Break(13Bit Low,2Bit High), Synch-Feld,... , Check-Summe) richtig vom TXD an den RXD des Slaves. Bei dem Slave möchte ich nun mit dem Pin Change Interrupt ( PCINT2, reagiert auf jede Flanke) die 13 Low Bits vom Synch-Break erkennen um die USART-Schnittstelle einzuschalten und die 4 Bytes einzulesen. Bautrate 9600; Interner Oszilatatorfrequenz 8 MHz Leider bekomme ich immer unregelmägige Interrups, verteilt auf die Flanken des kompletten Frame. Wo könnte das Problem
> Wo könnte das Problem daran: > Interner Oszilatatorfrequenz 8 MHz UART geht nur (stabil) mit Quarz Gruss Otto
Ich würde gern mal einen Blick auf den Sourcecode werfen, aber nur, wenn du ihn hier als ordinären Text anhängst.
Hallo Otto, beim Master nutze ich einen externen Quarz mit 4 MHz. Beim Slave habe ich die Einstellung mit der internen Oszilatorfrequenz 8 MHz eingestellt. Gruß Dominik
Ok, anscheinend möchtest du den Sourcecode nicht so veröffentlichen, dass ihn jeder lesen kann. Dann eben keine Hilfe von mir (und manchen anderen).
Hallo Dominik, wenn beim Slave der LIN-Transceiver an der UART hängt, benötigst Du hier auch einen Quarz...... Gruss Otto
Morgen, benutze doch einfach den Framing Error um den break zu detektieren und arbeite eine Statemachine ab. Danach den internen Oszillator über die 0x55 synchronisieren (so wie es auch bei LIN gedacht ist). Der Quartz ist beim Slave nicht erforderlich -> selbst bei 19200 läuft das stabil
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.