-         

Ergebnis 1 bis 2 von 2

Thema: ~~Probleme bei Frequenzerzeugung mit ATmega8~~

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Jacob2
    Registriert seit
    26.05.2007
    Ort
    Berlin
    Beiträge
    345

    ~~Probleme bei Frequenzerzeugung mit ATmega8~~

    Anzeige

    Hi,
    eigentlich war ich der Meinung, ich würde mit diesem Code am Pin OC1A meines Mega8 ein ca. 440 Hz Signal bekommen, aber dem ist irgendwie nicht so:

    Code:
    #include <avr/io.h>
    
    int main (void)
    {
      //Signal an OC1 wird getoggelt 
      //PWM deaktiviert
      TCCR1A |= (1<<COM1A0);
      TCCR1A &= ~((1<<WGM10) | (1<<WGM11) | (1<<COM1A1)); 
      
      //CTC-Betriebsart gesetzt
      //Takt: CLK/8
      TCCR1B |= (1<<WGM12) | (1<<CS11); 
    
      //Vergleichswert = 142
      OCR1A = 0b0000000010001110;
    
      //OC1 wird mit (1MHz/(8*(142 + 1)) = 874 Hz) umgeschaltet, 
      //d.h. die Frequenz ist 874/2 = 437 Hz (soll ca. Kammerton A sein)
    }
    Ich will damit über einen Transistor einen kleinen Lautsprecher zum Klingen bringen.
    Leider bin ich zur Zeit etwas unter Zeitdruck! Kann mir jemand helfen?
    Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Es wird übersichtlicher, wenn man die Timerregister direkt setzt, und nihct die Bits einzeln setzen und löschen. Also lieber TCCR1A = .....

    Man kann zahlen auch gleich dezimal angeben. Wer braicht die 142 schon in binärer Form.

    Ach ja, gehen tuts wohl nicht, weil der Port nihct auf Ausgang gestellt ist.

    Das Programm solle auch nie bis agnz zu ende laufen, da sollte also ein Endlosschleife hin , oder ein sleep-Befehl (aus sleep.h).

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •