ATMEL SAM7SE -> Software UART

OP #561799
Lesenswert?
• ▲
▼
Hallo zusammen!

Nach einigem hin und her ist nun in etwa klar, wie das Projekt für meine 
Diplomarbeit aussieht.

An einer Sache hänge ich zur Zeit gedanklich. Ich muss ein serielles 
Signal (von einem Feldbus abgewandelt) lesen und schreiben. Dabei muss 
ich ein break field genrieren und auch abfangen können. Nun ist diese 
break field leider nicht UART konform. Die Spannung wird nämlich auf 0 
gezogen für mindestens 14 bits. Danach gibts dann konforme Zeichen (sync 
mit 0x55 = 1010101).

Ich denke, daß man das am günstigsten mit nem Software UART hinter dem 
eigentlichen UART realisieren kann. Wobei der HW - UART einfach nur die 
Bits puffert und weiterschiebt. Eine andere Variante wäre es noch (das 
würede aber sehr kompliziert ausfallen) das Ganze über einen zusätzlich 
angeschlossenen ADC zu machen. Der wird sowieso angeschlossen, da es 
auch das physikalische Signal abgetastet werden soll.

Das was ich nun wissen will:

Sind meine Gedankengänge da richtig? (habe nicht viel Erfahrung auf dem 
Gebit)

und wenn ja: wie realisiere ich diesen Software UART? gibts da schon SW, 
die man quasi fertig runterladen kann und nutzen darf (Open Source). Bis 
jetzt habe ich da den genereic software UART von Colin Gittins bei IAR 
systems gefunden...

Danke schonmal für Antworten!


Grüße

Florian
Gast #561801
Lesenswert?
• ▲
▼
Was ist das Problem an "BREAK"? Das ist zwar ein gezielter Anschlag auf 
das serielle Datenformat, aber schon ungefähr so alt wie die asynchrone 
Übertragung selber. Identifizierbar beispielsweise als Datenbyte 00 mit 
Framing Error.
OP #562234
Lesenswert?
• ▲
▼
hmmmm...

dann wäre doch aber die Spannung auf der TX Leitung konstant 5 und nicht 
0 Volt, oder kann der Befehl speziell genutzt werden?

ausserdem könnte ich den lediglisch schreibend nutzen...ich könnte kein 
break Signal von 14 Byte länge erkennen, wenn es gesendet wird...
Gast #562239
Lesenswert?
• ▲
▼
Wenn es wichtig ist, genau 14 Bits zu erkennen: Rx nicht nur an den 
UART-Pin vom Controller sondern auch an einen Timer-Pin anschliessen. 
Und wenn die UART des SAM7 selber kein BREAK senden kann: Den Tx-Pin des 
Transceivers/Pegelwanders per AND- oder Diodengatter zusätzlich an einen 
normalen IO-Pin anschliessen.
OP #562264
Lesenswert?
• ▲
▼
Sagen wir es ist tatsächlich essenziell...

Nun ist das alles natürlich recht viel gebastel..vor allem in der 
Software, weil das Timing für das Break-Signal sehr genau stimmen 
muss..ausserdem ist das ja ein MINIMUM von 14 Bytes und ist laut 
Spezifikation realtiv offen...

Wäre es nicht tatsächlich einfacher dann gleich den UART Softwareseitig 
zu realisieren? ich habe ja nur die RX und die TX Leitung und kaum 
irgendwelche speziellen Checksummen oder dergleichen... Ich denke ich 
hätte weniger Ärger...ich bin mir eben nur nicht sicher, ob meine 
Gedankengänge korrekt sind
OP #562277
Lesenswert?
• ▲
▼
yep..das machter...es gibt immer noch einen der sendet und jede Sendung 
muss vom Master Node initiiert werden...

Ich wüsste halt nicht, wie ich das Ganze timen soll, wenn ich z.B. einen 
IO an einen kleinen Schalter hängen würde und quasi als pull-down-enable 
nutzen würde. Man muss es ja genau so einstellen, daß der UART dann das 
sync byte (0x55) empfangen kann und so lange die metaphorischen Füße 
still hält.

Beim empfangen könnte man den sowieso schon angeschlossenen ADC 
nutzen...oder wäre das auch zu kompliziert? Ich habe leider einfach zu 
wenig Erfahrung bei solchen Dingen und versuche mir das mit meinem 
bisherigen Wissen herzuleiten. Nur will ich nicht den falschen Weg 
einschlagen und hinterher beim Schreiben der Diplomarbeit in größere 
Zeitbedrängnis geraten...
Gast #562833
Lesenswert?
• ▲
▼
@a.k.:
das der at91sam7s breaks senden und empfangen kann stimmt, allerdings 
kann das break nur 11 bits lang werden und florian braucht aber 14 bits.

wobei ich mir ja nicht vorstellen kann, welch "kranker" feldbus mit 14 
bits langem break arbeitet. aber vielleicht verrät es es uns ja noch.

gruss
gerhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren