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
Gast
#893328
> 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).
Gast
#893339
Hallo Dominik, wenn beim Slave der LIN-Transceiver an der UART hängt, benötigst Du hier auch einen Quarz...... Gruss Otto
Gast
#893643
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.