Gast
#2548515
Grüß euch, wie bereits der Titel sagt möchte ich ein amplitudenmoduliertes Signal demodulieren. Im Anhang befindet sich ein Bild vom Signal. Das untere Signal werte ich mit dem INT1 Interrupt aus. Das funktioniert auch ganz gut. Das obere möchte ich gern mit dem PCINT20 auswerten. Das funktioniert leider gar nicht so wie ich mir das vorstelle... Hier ist der Codeteil mit dem ich es Decodieren möchte:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
Meine Logik ist folgende: Wenn INT1 kommt wird "Tick_P_el" hochgezählt. Lock1 und Lock2 ist false, kommt also nicht in die Zweite if. Dann kommt PCINT2 und setz Lock1 wieder false. Wenn dann INT1 wieder kommt wird nun "Tick_P_th" hochgezählt und Lock1 wieder true. Da PCINT2 Pegel abhängig ist kommt er bei fallender Flanke wieder und setzt Lock1 wieder um zu verhindern, dass im INT1 in der if Abfrage in den else Zweig gesprungen wird. Dass passiert so lange bis kein Signal an PCINT20 mehr ankommt. Kommt dann wieder eines wird der Zähler wieder um eines hochgezählt, usw... Ist meine Logik so weit in Ordnung? Die LED an PB3 blinkt leider nicht wie sie sollte^^. Im Anhang auch das komplette Programm + Header file. Controller: ATMega88PA Was wären bessere Varianten? MfG, Julian
