Hi Stefan,
von Microcontrollern hab ich ehrlich gesagt keine Ahnung. Ich habe lediglich den Data Output Pin des Aurel mit dem RxD Pin einer seriellen Schnittstelle am PC verbunden... Das wars...
Der Aussensensor sendet mit etwa 9600 baud, also hab ich mir das hardwarenahe "rumgefriemel" geschenkt und lese direkt /dev/ttyS1 mit 9600 baud, 7 data bits und einem stopbit (also zusammen ein Byte) aus.
Meine Funksteckdosen senden uebrigens mit 2400 baud, koennte bei deinem Aussensensor also auch variieren (wie der Rest der Codierung :D).
Der Sensor sendet ausschliesslich zwei Bitfolgen:
00000000 = 00 (im folgenden mit . abgekuerzt)
01111000 = 78 (im folgenden mit | abgekuerzt)
Jede Uebertragung ist folgendermassen aufgebaut:
.................||.||.||...|.|..|.|.|....|.|..|.| |.||.|.. Ziffer1 Ziffer2 Ziffer3 Ziffer4 Vorzeichen Daten
mit folgender Bedeutung:
Ziffer1: ka
Ziffer2: Nachkommastelle
Ziffer3: 1. Stelle vorm Komma
Ziffer4: 2. Stelle vorm Komma -> 10er Potenz
Daten: ka
Dabei sind Ziffern wie folgt codiert:
Code:
0 = ....
1 = |.|..
2 = .|.|.
3 = |..|.
4 = ..|.|
5 = |.||.|
6 = .|..|
7 = |...|
8 = ...|.
9 = |.|.|.
Es gibt also unterschiedlich ¨lange¨ Ziffern.
Bei Ziffer 2 und 3 gibt es dann noch eine Besonderheit: Falls die vorige Ziffer 8 oder 9 war, aendert sich die Kodierund der Ziffer. Falls sie mit . beginnt wird dies durch | ersetzt, Falls sie mit | beginnt, faellt diese Stelle einfach weg.
Beim Vorzeichen entspricht ...| einem - und .... einem +.
Noch ein paar Beispiele:
Code:
-16.8 .................||.||.||...|.|..|.|.|....|.|..|.||.||.|.. .|..| ...|. ||..| |.|.. ...| .||.|...|.||...|................
-16.7 .................||.||.||...|.|..|.|.|....|.|..|.||.||.|.. .|..| |...| .|..| |.|.. ...| ..|....|.||..|.|.|..............
-16.6 .................||.||.||...|.|..|.|.|....|.|..|.||.||.|.. .|..| .|..| .|..| |.|.. ...| .|.....|.|..|.|..|.|............
-16.5 .................||.||.||...|.|..|.|.|....|.|..|.||.||.|.. .|..| |.||.| .|..| |.|.. ...| .......|.|.||....||.|..........
+ 9.9 .................||.||.||...|.|..|.|.|....|.|..|.||.||.|.. .|.|. |.|.|. .|.|. |... .... |.|.|...|.....|...|.............
+10.6 .................||.||.||...|.|..|.|.|....|.|..|.||.||.|.. .|.|. .|..| .... |.|.. .... .|...||.|.|.|.|.||.||.|..........
Leerzeichen dienen uebrigens nur der besseren Lesbarkeit!
Und noch die genauen Einstellungen der Schnittstelle:
Code:
sascha@server:~$ stty -F /dev/ttyS1 -a
speed 9600 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>; eol = <undef>; eol2 = <undef>; start = <undef>; stop = <undef>; susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>;
flush = <undef>; min = 1; time = 0;
-parenb -parodd cs7 -hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
Ich hoffe ich hab nix vergessen und es hilft Dir mehr, als es abschreckt...
Gruss
Sascha
Lesezeichen