Hallo! Ich möchte mit einem Attiny2313 und Bascom-AVR (1.11.8.3) zwei kombinierte Frequenzen erzeugen. Die eigentliche Frequenz soll 1,8 kHz betragen und mit einer Trägerfrequenz von 56 kHz kombiniert werden. Das Signal soll insgesamt 32ms dauern. Damit wird dann eine IR-LED angesteuert. Auf der Empfängerseite wird das Signal mit einem TSOP1756 demoduliert, so dass dort nur noch die 1,8 kHz Frequenz "entschlüsselt" werden muss. Zur Erzeugung der Frequenzen: Wie gehe ich hier grundsätzlich vor? Nachdem was ich so gelesen habe, hat es wohl was mit Pulsweitenmodulation zu tun, wobei ich den konkreten Zusammenhang allerdings nicht verstehen konnte. Dsa erforderliche Programm soll möglichst Ressorcenschonend sein und am besten auch nur einen Timer in Anspruch nehmen. (Der Andere wird später evtl. noch gebraucht). Also ich würde mich sehr freuen, wenn mir hier jemand die grundsätzliche Vorgehensweise zur Erzeugung des Signals erklären könnte. Schöne Grüße, Stefan
Nun, nix leichter als das. Für deine Ansteuerung der IR-LED musst du eben diese nur mit 56 kHz ein- und ausschalten. 56kHz sind ~17,8 us. Bei 1 MHz Takt für deinen AVR sind das ~18 Takte. Pin einschalten 8 Takte warten Pin ausschalten 8 Takte warten Diese Prozedur beliebig oft wiederholen. Die Pause zwischen ein und ausschalten ist deshalb nur 8 Takte und nicht 9, weil das ein-und Ausschalten selber schon einen Takt braucht, mit sbi/cbi sogar zwei. Wenn dun nun diesen 56 kHz Träger nochmal mit 1,8 kHz (555,5 uS) modulieren willst, musst du 15 Perioden nach obigem Muster erzeugen 16 Perioden a 18 Takte warten Damit ist eine vollständige Periode von 1,8 kHz beschrieben. MFG Falk P.S. Tut mir leid, ich hab von BASCOM keine Ahnung, nur ASM.
Du könntest deine LED auch an einen Capture-Ausgang von einem Timer hängen. Dann brauchst du den (den Ausgang) nur noch im entsprechenden Intervall zu aktivieren/deaktivieren. Um keinen weiteren Timer zu verschwenden könntest du das in eine ISR vom selben Timer packen. 56kHz macht ja relativ genau 31 Perioden wenn du auf 1.8kHz kommen willst.
es gibt keine capture- sondern nur compare-Ausgänge :-) Die 56kHz solltest du direkt mit einem Timer erzeugen (CTC-Mode, toggle Output on compare). Der Rest ist dann einfach.
Ok, danke erstmal für die hilfreichen Antworten! Aber wie kann ich denn unter Bascom den CTC-Modus konfigurieren? Hab sowohl in der Hilfe als auch im Netz nichts dazu gefunden. Ich will jetzt erstmal nur die 56kHz-Frequenz erzeugen und dann mal weiterschauen. MfG, Stefan.
So, habs hinbekommen :-) und nur einen Timer verbraucht. Wie muss das ganze denn jetzt auf der Empfängerseite gemacht werden? Die 56kHz werden ja schon automatisch im TSOP1756 demoduliert. Ich muss also nur noch die 1,8kHz erkennen. Also wie muss ich jetzt ansetzen? Danke, Stefan.
Bei einem Timer den Input-Capture aktivieren und mit der steigenden Flanke starten und mit der fallenden stoppen (Oder umgekehrt). Einstellungen stehen im Datenblatt.
>Bei einem Timer den Input-Capture aktivieren und mit der steigenden >Flanke starten und mit der fallenden stoppen (Oder umgekehrt). Nö, da man ja auch die komplette Periode benutzen kann, braucht man nur eine der beiden Flanken benutzen. Und das Messen einer festen Frequenz bzw. herausfinden derer Anwesenheit sollte man eher über die Periodendauer machen... Man kan es auch über die Anzahl der Impulse (Interrupt) innerhalb einer Torzeit (Timer) machen. Man schaltet einen Timer durch eine Flanke an einem externen Interrupt-Eingang ein und zählt gleichzeitig die Impulse an diesem Eingang. Solbald der Timer einen Interrupt auslöst, hört man auf, die Impulse zu zählen (bzw. rettet die bis dahin aufgelaufene Zahl und setzt den Impulszähler auf 0 zurück), und wertet die Anzahl aus...
ah ok. verstehe. werd ich mal ausprobieren. danke.
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.