Jede steigende Flanke wird dem Sender ein neues Bit signalisieren. Ist
"High-Zeit" dann ca. 1 ms (jedenfalls länger als 500 µs) ist 'ne "1",
wenn nicht, dann isses 'ne "0". Zwischen den einzelnen Bits gibts 'ne
Pause von 250 µs.
Wenn der Controller sonst nichts anderes zu tun hat, kann man das
durchaus mit warteschleifen realisieren. Dann ist aber ein wenig
Zeittuning erforderlich um das "Protokoll" einzuhalten. Mit Timern geht
das natürlich auch - aber nicht ganz so einfach. Du musst dann mit
Interrupts arbeiten, was ein wenig Einlesen erfordert.
Pseudocode:
1 | while (noch_bits_zu_senden) {
|
2 | pin = high;
|
3 | wait (250µs);
|
4 | if (bit == 0)
|
5 | pin = low;
|
6 | wait (750µs);
|
7 | pin = low;
|
8 | wait (250µs);
|
9 | }
|
Die Frage ist unter "µC & Elektronik" vielleicht besser aufgehoben.
VG
mario