- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 9 von 9

Thema: Atmega16 - Zwei Timer verwenden. - Nur einer funktioniert

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.09.2005
    Beiträge
    114
    Danke für Deine Antwort..

    hmm...
    wo starte ich denn den Timer?
    Indem ich die TCCR-Register beschreibe?

    Gruß
    kesandal

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    30
    Beiträge
    661
    hier:


    TCCR0=(1<<WGM01)|(1<<CS02)|(1<<CS00); // pr 1024 - ctc => 3600hz
    Geändert von Martinius11 (22.06.2011 um 02:09 Uhr)
    MfG Martinius

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.09.2005
    Beiträge
    114
    Zitat Zitat von Martinius11 Beitrag anzeigen
    hier:


    TCCR0=(1<<WGM01)|(1<<CS02)|(1<<CS00); // pr 1024 - ctc => 3600hz
    Habe es ausprobiert.
    Die ISR von Timer 0 wird jedoch nach wie vor nicht aufgerufen


    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
     
    int main(){
    
     DDRC=0xff;
     DDRA=0x00;
     DDRD=(1<<PD5); // sound output
    
     TCNT0=0;
     TCNT1=0;
    
     TCCR0=(1<<WGM01)|(1<<CS02)|(1<<CS00); // pr 1024 - ctc  => 3600hz
     
     TCCR1A = (1<<COM1A0);
     TCCR1B= (1<<WGM12)|(1<<CS10); // pr 1024 - ctc
     TIMSK = (1<<OCIE1A)|(1<<OCIE0);
     
     
    
     OCR1A=0;
     OCR0=200;   // *18 = 3600 => 1sekunde
    
     DDRB=0xff;
     PORTB=0xff;
     sei();
     while(1){  
     }
     return 0;
    }
     
    
    ISR(TIMER1_COMPA_vect){
    // PORTB=0x0f;
    }
    
    ISR(TIMER0_COMP_vect){
     PORTB=0xf0;
    
    }

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    30
    Beiträge
    661
    Lösung gefunden du muss noch

    TIFR = (1<<OCF0);

    einfügen
    MfG Martinius

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.09.2005
    Beiträge
    114
    Auch das funktioniert leider nicht


    Zum OCF0 bit steht folgendes im Manual:
    The OCF0 bit is set (one) when a compare match occurs between the Timer/Counter0 and the
    data in OCR0 – Output Compare Register0.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hi,
    wenn Timer1 auf CTC eingestellt ist und Du OCR1A auf 0 setzt, tritt der Interrupt eventuell so oft auf, daß immer nur der Interrupt von Timer1 abgearbeitet wird. Dieser steht in der Interrupt Vector Tabelle weit vor dem OVF Timer 0 und wird deshalb immer als erster dran kommen.

    Wie sieht es aus, wenn OCR1A nicht 0 ist?

    PS Mit welcher Taktfrequenz läuft der µC? Ist der erste Code vom ersten Beitrag genau der Code mit dem Du auch testest? Wie überprüftst Du, daß Timer0 ISR nicht aufgerufen wird? (LEDs?)

    Gruß
    Searcher
    Geändert von Searcher (24.06.2011 um 11:59 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.09.2005
    Beiträge
    114
    Hallo Searcher,

    dein Hinweis brachte mich zur Lösung.

    Deine Vermutung hat sich bestätigt

Ähnliche Themen

  1. Timer zweinmal verwenden ?
    Von nase im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 21.06.2011, 09:51
  2. Timer verwenden zur Servoansteuerung
    Von beginner1101 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 02.03.2009, 17:59
  3. timer in C verwenden, 2. Versuch
    Von RedEagle im Forum C - Programmierung (GCC u.a.)
    Antworten: 18
    Letzter Beitrag: 03.02.2007, 18:50
  4. GetRC5 an zwei Eingang-Pins verwenden
    Von vanveeteren im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 24.07.2005, 09:34
  5. Problem SPI Kommunikation mit zwei ATmega16
    Von doctorbluex im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 13.07.2005, 08:27

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress