Timer in AVR verwenden (ATtiny2313)

  • C

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von gfcwfzkm.

    Timer in AVR verwenden (ATtiny2313)

    Hallo,

    ich versuche seit einiger zeit, den Timer0 meines ATtiny2313 anzusteuern. In PIC gelingt mir dies recht gut, jedoch weil dies in den Datasheet des PIC Mikrocontroller auch gut erklärt ist (und der Lehrer es mir erklärt hat :D)

    Da ich zuhause jedoch lieber AVR-Microcontroller habe, versuche ich dort nun den Timer anzusteuern.

    Kennt jemand ein gutes Tutorial oder ein gut Kommentierter Codeausschnitt?

    mfg & thx

    gfcwfzkm
    mikrocontroller.net/articles/A…r_und_Z%C3%A4hler_des_AVR

    ;)

    Timer sind übr. ein extrem mächtiges Werkzeug bei den AVR's
    Siehe dazu mein Versuchsprojekt auf GitHub:
    github.com/manawyrm/AVRAMTransmitter

    Ein Mittelwellen-Sender mit Audiomodulation lässt sich in 8 Zeilen Code realisieren.

    Quellcode

    1. TCCR1A = _BV (COM1A0); // toggle OC1A on Compare Match
    2. TCCR1B = _BV(WGM12) | _BV(CS10); // CTC, no prescaler
    3. OCR1A = 9; // compare A register value to 10 (zero relative)
    4. TCCR0A=0x83; // Timer/Counter 0 initialization
    5. TCCR0B=0x01; // Clock source: System Clock and Clock value: 16000,000 kHz
    6. TCNT0=0x00; // Mode: Fast PWM top=FFh
    7. OCR0A=0x00; // OC0A output: Non-Inverted PWM
    8. OCR0B=0x00; // OC0B output: Disconnected

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Manawyrm“ ()

    Hab ich schon durchgelesen, beim probieren kommt der Fehler: 'TCCR0' undeclared (first use in this function)

    Jedoch wird dieser nirgends im Tutorial zusätzlich definiert. avr/io.h und avr/interrupt.h hab ich drin.

    Bin etwas ratlos :S

    mfg

    gfc

    EDIT://
    Deine Methoden hab ich auch probiert, aus irgend einem unbekanntem Grund findet es die sachen nicht :(
    In PIC werden diese mit der jeweiligen Adresse immer vordefiniert, geht das hier net?
    hmm, jetzt kommt zar kein fehler, aber es passiert auch nix :(

    Wo ist der Fehler ?(

    PHP-Quellcode

    1. /*
    2. * Timer.c
    3. *
    4. * Created: 17.03.2013 23:57:37
    5. * Author: Pascal Gesell
    6. */
    7. #include <avr/io.h>
    8. #include <avr/interrupt.h>
    9. #define F_CPU 8000000UL
    10. int count;
    11. int main(void)
    12. {
    13. // Prescaler = FCPU/1024
    14. // Timer 0 konfigurieren
    15. TCNT0 = (1<<CS00) | (1<<CS02); // Prescaler 8
    16. // Overflow Interrupt erlauben
    17. TIMSK |= (1<<TOIE0);
    18. // Global Interrupts aktivieren
    19. sei();
    20. DDRD = 0xFF;
    21. while(1)
    22. {
    23. }
    24. }
    25. #ifndef TIMER0_OVF_vect
    26. // Für ältere WinAVR Versionen z.B. WinAVR-20071221
    27. #define TIMER0_OVF_vect TIMER0_OVF0_vect
    28. #endif
    29. ISR (TIMER0_OVF_vect)
    30. {
    31. if (PIND & (1<<PIND0))
    32. {
    33. PORTD |= (1<<0);
    34. }
    35. else
    36. {
    37. PORTD &=~ (1<<0);
    38. }
    39. }


    Bin ziehmlich verwirrt...

    mfg

    gfc