-         

Ergebnis 1 bis 5 von 5

Thema: ATMega 16 Timer 1 CTC Probleme

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.12.2007
    Ort
    Wien
    Alter
    22
    Beiträge
    96

    ATMega 16 Timer 1 CTC Probleme

    Anzeige

    Hi!

    Ich will bei einem ATMega 16 (läuft mit 16mhz) den CTC modus des Timer 1 verwenden.

    Folgenden Quellcode habe ich:

    Timer-Init:

    Code:
       
    TIMSK=(1<<OCIE1A);               //Compare Interrupt einschalten
    TCCR1B=(1<<CS11);               //vorteiler: 8
    TCCR1B|=(1<<WGM12);               //CTC-Modus   
    TCNT1H=0;                    //  Timer Daten Register Timer1 High auf 0 Setzen
    TCNT1L=0;                    //  Timer Daten Register Timer1 Low auf 0 Setzen
    OCR1A = 1999;             //für fout=1kHz
    sei();                           //Interrupts einschalten
    Und zum Testen habe ich noch das:

    Code:
    ISR(TIMER1_COMPA_vect)
    {
        PORTD= ~PORTD;
    }
    Das sollte doch eigentlich ein Rechtecksignal am ganzen PORTD erzeugen.
    Tut es aber nicht.

    Wenn ich den PORTD am Anfang auf 1 setze, dann ist er nacher 0, und umgekehrt.
    Die ISR wird scheinbar nur 1 mal aufgerufen.

    Warum?

    MfG

    EDIT: Ich benutze AVR Studio 5, vllt liegts ja daran
    Geändert von Franky55555 (14.06.2011 um 17:52 Uhr)

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.785
    Blog-Einträge
    8
    PORTD = ~PIND;

    Vielleicht so?

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.12.2007
    Ort
    Wien
    Alter
    22
    Beiträge
    96
    Nein, genau das gleiche Problem

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.785
    Blog-Einträge
    8
    Das Setup scheint ok, obwohl ich vorsichtshalber auch ein TCCR1A=0; einfügen würde. Endlosschleife in main() vor return ist drin? interrupt.h eingebunden?
    Geändert von radbruch (14.06.2011 um 18:19 Uhr)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    28.12.2007
    Ort
    Wien
    Alter
    22
    Beiträge
    96
    Ich habe die Endlosschleife vergessen.
    Jetzt is sie drin und alles funktioniert.

    Danke!

Ähnliche Themen

  1. Sei() Cli() Atmega 16 Timer starten/stoppen
    Von Jimmy83 im Forum C - Programmierung (GCC u.a.)
    Antworten: 23
    Letzter Beitrag: 08.05.2010, 02:04
  2. Atmega 8 Timer
    Von woodeye im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 25.09.2009, 16:44
  3. Atmega mit >3 Timer
    Von manhunt im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 14.12.2008, 15:10
  4. Probleme mit Timer und ATMega 32
    Von steffen21m im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 07.01.2008, 20:17
  5. Atmega 32 8-Bit Timer Interrupt
    Von Benni im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 23.07.2007, 22:08

Berechtigungen

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