Problem mit Tonerzeugung

OP #2286947
Lesenswert?

Hallo!

Ich bin AVR-Einsteiger und habe folgendes Problem:

Mit dem unten aufgeführten Programm erzeuge ich einen Dauerton.
Durch die Verwendung von Timer1 wird dazu kein weiterer Programmschritt
benötigt, der AVR ist arbeitslos (siehe Roland Walters Lehrbuch S.114).

Nun möchte ich aber den Ton im weiteren Programm ein- und ausschalten
können, z.B. im Takte von Morsezeichen. Bis jetzt habe ich noch keine
saubere Lösung gefunden, wie ich dies realisieren kann.

Habe bisher versucht, zum ausschalten den PIN PB1 zum ausschalten als
Eingang zu definieren, aber das funktioniert leider nicht so wie
gewünscht.

Frage an die Freaks: Wie kann ich das lösen?

Danke im voraus,
Bernd


'====================================================================
' BASCOM - ATMega 8-16  - Tonausgabe mit Timer 1 (1,0017391 ... kHz)
' Speaker an Pin PB1
'====================================================================

$Refile = "m8def.dat"
$Crystal = 3686400

DDRB.1 = 1        ' Pin PB1 auf Ausgang

TCCR1A = &B01000000      ' Pin PB1 togglen, Kein PWM
TCCR1B = &B00001010      ' Timer-Reset bei Compare, Clock/8

Compare 1A = 230      ´ Vergleichswert setzen


Do          'Der AVR ist vorerst arbeitslos
   nop          'hier soll später der Ton
Loop          'ein-aus getastet werden


End
Gast #2286978
Lesenswert?

Sorry, hab grad meinen Fehler gesehen. Da du anscheinend den Timer 
direkt zur Ausgabe nutzt, hast du auch keine Timer ISR in der du 
Variablen abfragen kannst.

Versuch mal in der Main-Schleife das 6. Bit im TCCR1A zu löschen bzw das 
ganze register auf 0 zu setzen und zum Ton ausgeben dann wieder wie oben 
zu setzen.

Viel Glück

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren