Forum: Mikrocontroller und Digitale Elektronik LIN_Master-Slave Kommunikation


von MrDeeds1974 (Gast)


Lesenswert?

Hallo zusammen,

ich habe mal eine Frage bezüglich der Master-Slave Kommunikation.

Wie würde der Slave das Signal einlesen? Sagen wir mal ich schicke ihm 4 
Datenbytes, wovon im ersten Byte 2 Bits für eine Pin Auswahl stehen, die 
restlichen Bits für PWM Wert usw. Ist ja auch im Prinzip egal.
Muss ich mir die ganzen Bytes auseinanderbröseln und mit if Abfragen 
auswerten oder wie macht man das?

Thx

von Bobby 1987 (Gast)


Lesenswert?

Hi,

ich will mit einem Atmega8 Controller eine Spannung messen diese Wandeln 
und per RS232 an Hyperterminal schicken. RS232 Kommunikation klappt.
Problem 10 bit A/D Wert 8 bit über RS232, wie löse ich das? Nacheinander 
einlesen?
Weiteres Problem will z.B jede ms einen Messwert, mach ich das übern A/D 
Wandler Takt oder per Interrupt?

von dennis (Gast)


Lesenswert?

pwm = c & 0x3F;

if(c&0x40)


if(c&0x80)


c:

7   6   5   4   3   2   1   0
b1  b0  ---------pwm val ----


@Bobby 1987

was hat das mit der frage von MrDeeds1974 zu tun!?

d.

von MrDeeds1974 (Gast)


Lesenswert?

Ok, schonmal vielen Dank dafür,

jetzt müsste ich ja im Prinzip soviele if Abfragen machen, bis ich 
treffe?

von Johannes S. (johanness)


Lesenswert?

Ja, das macht bei zwei Bit (4 Pins) drei If-Abfragen (also eine weniger 
als Pins). Wenn man für alle Pins die selben Laufzeiten haben will 
ordnet man die Abfragen in einem schönen binären Baum:

if(c&0x40) {
  if(c&0x80) {
    // Pin 4
  } else {
    // Pin 2
  }
} else {
  if(c&0x80) {
    // Pin 3
  } else {
    // Pin 1
  }
}

(hab die Dinger jetzt einfach benannt als 00->Pin1, 01->Pin2, ...)

von Bobby 1987 (Gast)


Lesenswert?

Ok soweit so klar. Da ich mit Bus Kommunikation gar nicht auskenne, 
jetzt wahrscheinlich eine dumme Frage: die restlichen 5 Bit sollen mir 
ja einen Konfigurierbaren Wert übergeben, ich habe aber keinen Plan wie 
ich diesen Wert meinem Controller beibríngen soll.

von Johannes S. (johanness)


Lesenswert?

Bobby: Was hat deine Frage mit der von MrDeeds1974 zu tun? Und von 
welchen fünf Bits redest du?

von Bobby 1987 (Gast)


Lesenswert?

wie man LIN-Messages verarbeitet interessiert mich auch, und ich 
verstehe nicht so ganz wie man die übrigen 5 bit, welche die PWM liefern 
sollen auswertet? Hatte ausversehen auch bei Deeds meine A/D Frage 
gepostet, daher gucke ich öfters vorbei :-)

von Johannes S. (johanness)


Lesenswert?

Siehe dennis` Posting: pwm=c&0x3F;
Damit weist man die unteren sechs Bits des Wertes c der Variablen pwm 
zu, hat dann also einen 6-Bit-Wert (0-63). Ich vermute den will er dann 
an dem durch die ersten zwei Bits bestimmten Pin ausgeben.

von MrDeeds1974 (Gast)


Lesenswert?

Jo genau das will ich machen. Danke für die Hilfe. Werde das jetzt mal 
in der Praxis testen.

von Bobby 1987 (Gast)


Lesenswert?

Also mit dem Befehl wird automatisch einem der Pins 0-3 der PWM wert 
0.63 übergeben? Ich verstehe die genaue Syntax des Befehls nicht!

von Bobby 1987 (Gast)


Lesenswert?

0-63

von Johannes S. (johanness)


Lesenswert?

Ich denke mal er programmiert seinen Slave so, dass er genau das 
beschriebene Format versteht und dann die 0-63 in 0-100% Duty Cycle 
umsetzt und auf Pin0-3 (was auch immer das in seinem Fall ist) ausgibt. 
Insofern geht das automatisch, sobald mans eben programmiert hat...

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
Noch kein Account? Hier anmelden.