- Labornetzteil AliExpress         
Ergebnis 1 bis 6 von 6

Thema: Timer benötigt Port???

  1. #1
    Gast

    Timer benötigt Port???

    Anzeige

    E-Bike
    folgender Quelltext:
    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    SIGNAL (SIG_OVERFLOW1)
    {
    overflows++;
    if (overflows == 64000)
    	GetTime();
    }
    
    int main ()
    {
    sei ();
    timer_enable_int (1 << TOIE2);
    TCCR2 = 7;
    TIMSK = 64;
    TIFR = 64;
    TCNT2 = 0;
    }
    Naja, und danach spinnen alle digital Ports.
    Wie aktiviert man am besten einen Timer???(Atmega16)

  2. #2
    Gast
    Mit was programmierst du denn?

    Was steht in der Variablen overflows?
    Wie ist getTime initialisiert?

    Ich schreibe, wenn ich Bits in Registern setze, diese auch explizit hin. So sieht man eher, was man mal gewollt hat. Mit TIFR= 64 kann ich ohne Datenblatt z.B. nichts anfangen. Schreibt man aber z.B.
    TIMSK |= _BV(TOIE1);
    dann weiß man sofort, was man gemacht hat.

    Was ich grad sehe, unten hast du hauptsächlich den Timer2 "bearbeitet", die ISR bezieht sich aber auf Timer1.
    Gib mal bitte ein paar mehr Infos zu den oben gestellten Fragen.

  3. #3
    Gast
    Ich programmiere mit den Grundeinstellungen von WinAVR.
    Mit overflows wir gezählt, wie oft der Timer einen Interrupt auslöst.

    Öhm, das mit den Registern ist beim Atmega16 irgendwie eine Katastrophe.
    Manchmal bezieht sich eine 0 auf Timer 1, dann eine 1 (logisch) und dann eine 2!!!

  4. #4
    Gast
    Das glaube ich nicht. Habe mir grade mal des guten Willens halber das Datenblatt heruntergeladen:
    - das Zählregister von Timer1 ist TCNT1
    - genauso ist das Kontroll-Registers TCCR1A/B

    Da du nen Prescaler von 1024 gewählt hast, wird deine Bedingung ja extrem selten erfüllt.
    Bsp: 8 MHz --> die Bedingung ist alle 536870,912s wahr

    Am besten, du machst dich erst nochmal über die Timer schlau.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991

    Re: Timer benötigt Port???

    Zitat Zitat von Anonymous
    Naja, und danach spinnen alle digital Ports.
    Was heißt denn die Ports spinnen ?? Da du sie ja nicht initialisiert hast können sie relativ zufällige Zustände annehmen...

    MfG Kjion

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    14.07.2004
    Alter
    34
    Beiträge
    37

    Re: Timer benötigt Port???

    Zitat Zitat von Kjion
    Was heißt denn die Ports spinnen ?? Da du sie ja nicht initialisiert hast können sie relativ zufällige Zustände annehmen...
    MfG Kjion
    Die Ports fangen an zu pulsen.

    Ich habe ja einen Atmega16 mit einer Taktgeschindigkeit von 8 MHz.
    D.h. ein Takt dauert 125µs.
    -> für eine ms brauche ich 8000 Takte.
    Wenn ich den Prescaler auf 8 einstelle kriege ich innerhalb einer ms 1000/256 Overflows vom Timer. Da sich das aber so schlecht abfragen lässt, habe ich den Timer mit 156 vorgeladen.
    -> ich kriege 1000/100 = 10 Overflows vom Timer pro ms.
    In der Overflow Methode inkrementiere ich die Variabel Count.
    Wenn Count 10 ist, schalte ich eine LED ein bzw. aus.

    Nach der Berechnung müsste ein LED Takt 1s dauern. Es sind aber ungefähr 0,8s.

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

12V Akku bauen