Hallo liebes Forum, ich verstehe folgende Interrupt Routine nicht. http://wiki.electronics-irc.net/Avr_rc5_remote_control Hier wird ein RC5 Code eingelesen, welches aus 14 Bit besteht und mit Manchester Codierung in eine Union nach data.raw eingelesen wird. Also Bitfolge 10 --> High Bit und Bitfolge 01 --> Low Bit. Wie erkennt er High und Low? WIe funktioniert die ISR? Danke.
1 | SIGNAL (INT0_vect) |
2 | { |
3 | int pos = 0; |
4 | |
5 | if (!flag) { |
6 | data.raw = 0; |
7 | |
8 | // triggers on falling edge of start bit 1. |
9 | _delay_ms(0.2); |
10 | |
11 | while (pos < 14) { |
12 | data.raw = (data.raw << 1) | ((~PIND & 0x04) >> 2); |
13 | _delay_ms(1.8); |
14 | pos++; |
15 | } |
16 | |
17 | flag = 1; |
18 | } |
19 | } |