- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: Problem gelöst (braucht timer2 den externen Quarz)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176

    Problem gelöst (braucht timer2 den externen Quarz)

    Anzeige

    Praxistest und DIY Projekte
    braucht der timer2 einen externen takt ?

    mein mega32 läuft im Moment nur mit 4 MHz intern

    timer2 init erfolgt

    void timer2_init(void)
    {
    OCR2 = 63; // Reloadwert Timer 2
    TCCR2 = (1<<WGM21) | (1<<CS22); // Clear Timer Mode, Takt= 8MHz/64
    TIMSK |= (1 << OCIE2); // Interrupt Enable Timer Compare
    sei();
    }


    das hier wird niemals angesprungen

    SIGNAL (SIG_OUTPUT_COMPARE2)
    {
    dcf.msec++; // Zeitgeber für DCF-Empfang weiterdrehen
    if(PORTB & (1 << _speedLED_PB))
    PORTB &=~ (1 << _speedLED_PB);
    else
    PORTB |= (1 << _speedLED_PB);
    }

    das hier schon
    SIGNAL (SIG_INTERRUPT0)

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    titel geändert um die Frage zu verbessern

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Welcher Takt ist egal. Wo rufst du dein Timer2_init auf?

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von Hubert.G
    Welcher Takt ist egal. Wo rufst du dein Timer2_init auf?
    in main

    void timer1_init(void)
    {
    TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<COM1B0)|(1<<WGM10); //A clear down (A1) : B clear up (B1 | B0)

    TCCR1B = (1<<CS11);

    TIMSK &= ~0x3c;
    }

    void timer2_init(void)
    {
    OCR2 = 63; // Reloadwert Timer 2
    TCCR2 = (1<<WGM21) | (1<<CS22); // Clear Timer Mode, Takt= 8MHz/64
    TIMSK |= (1 << OCIE2); // Interrupt Enable Timer Compare
    sei();
    }


    int main(void)
    {.....
    timer1_init();
    timer2_init();
    init_dcf();
    .....

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ich sehe da jetzt keinen Fehler, du teilst allerdings nach deiner Angabe am Anfang nur 4MHz und nicht 8MHz.
    Hubert

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.04.2005
    Ort
    Minden
    Alter
    39
    Beiträge
    227
    mein mega32 läuft im Moment nur mit 4 MHz intern
    Beträgt der interne Quarz des mega32 nicht 1 Mhz. ?
    gruß ceekay \/

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522
    Man kann zwischen 1,2,4 und 8MHz intern umstellen.

    MfG Mark

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von Hubert.G
    Ich sehe da jetzt keinen Fehler, du teilst allerdings nach deiner Angabe am Anfang nur 4MHz und nicht 8MHz.
    Hubert
    jau, der läuft mit 4, der Kommentar ist noch 8


    ich bin doof, ne kurzsichtig

    wenn man hier:
    timer2_init();
    TIMSK |= (1 << OCIE2); // Interrupt Enable Timer Compare

    richtig setzt !


    darf man hier:

    TIMSK = 1<<TOIE0; //enable timer interrupt

    nicht wieder löschen ((

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress