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
im timer-interrupt eine variable abfragen, ob der ton ausgegeben werden soll, oder nicht. Und die dann im Hauptprogramm setzen, bzw löschen.
RonnyRoster schrieb: > im timer-interrupt er meint die ISR RonnyRoster schrieb: > eine variable abfragen er meint eine globale Variable
Hallo RonnyRoster, danmke für den schnellen Hinweis. Aber im Moment stehe ich auf dem Schlauch (wie bereits angemerkt: bin Einsteiger). Wie muss das mit der Variablen denn im Listing aussehen ? Bernd
Hallo auch Michael, stehe leider immer noch im Wald ... Wo genau muss die Variable eingebaut werden ? Bernd
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
Hallo RonnyRoster, Klasse! Danke für den Tipp. Das ganze Register TCCR1A löschen (TCCR1A = &B00000000) funktioniert zum Ausschalten. Und mit TCCR1A = &B01000000 lässt sich der Sound wieder einschalten. Danke! Gruss, Bernd
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.