mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega88 LinBus Master/Slave


Autor: D. Z. (Firma: Privat) (domi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wo könnte das Problem

daran:

> Interner Oszilatatorfrequenz 8 MHz

UART geht nur (stabil) mit Quarz

Gruss Otto

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde gern mal einen Blick auf den Sourcecode werfen, aber nur, wenn 
du ihn hier als ordinären Text anhängst.

Autor: D. Z. (Firma: Privat) (domi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dominik,

wenn beim Slave der LIN-Transceiver an der UART hängt, benötigst Du hier 
auch einen Quarz......

Gruss Otto

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.