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
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?
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.
Ok, schonmal vielen Dank dafür, jetzt müsste ich ja im Prinzip soviele if Abfragen machen, bis ich treffe?
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, ...)
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.
Bobby: Was hat deine Frage mit der von MrDeeds1974 zu tun? Und von welchen fünf Bits redest du?
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 :-)
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.
Jo genau das will ich machen. Danke für die Hilfe. Werde das jetzt mal in der Praxis testen.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.