-
        
+ Antworten
Ergebnis 1 bis 4 von 4

Thema: TIMER-->Berechnung alles klar --- aber wie weiter???

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    122

    TIMER-->Berechnung alles klar --- aber wie weiter???

    So....
    Hab mich jetzt durch das Roboternetz durchgeschlagen und weiss nun, wie man die Timerzeiten berechnen kann... Beispielprogi hat auch gut funktioniert, mit verschiedenen Zeiten...

    Nun weiss ich nur nicht so genau, wie das mit den Interrupts funktioniert.
    Ja, ich weiss, das bei jedem Überlauf der Interrupt Signal_usw.... ausgelöst wird...
    Jedoch weiss ich nicht, wie ich nun diesen Interrupt an einer bestimmten Stelle in meinem Programm laufen lassen kann...

    Ich möchte z.B. einfach eine Verzögerungsschaltung machen, bei der bei Tastendruck die LED's für 2s leuchten...

    kann ich jetzt irgendwie in diesen Codeschnipsel
    Code:
    while(1)
    {
           if(PINB==0x01)
           {
                 outp(0xFF,PORTA);
           ------> !!!!!!!!!!Hier will ich die 2s Verzögerung!!!!!!!!!! <---------
           }
           outp(0x00,PORTA);
    }
    die Verzögerung einbauen??

    Ich hoffe, ihr könnt mir helfen

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    122
    OOOOH....

    will mir denn niemand helfen????

    Ich muss nur wissen, wie ich die Verzögerung aufrufen kann..., wie ich den TIMER und die Zeit intialisieren kann ist klar....

    BITTE

  3. #3
    Gast
    Taster gedrückt -> Initialisierung und Start des Timers -> Timerinterrupt nach Zeit x -> deaktivieren des Timers und Ausführen der gewünschten Aktion

    Wo ist das Problem und warum so ungeduldig? Mit ein bischen Gehirnschmalz bekommt man das einfach hin.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.07.2004
    Beiträge
    122

    Danke...

    Danke mal für deine Antwort...
    Der Ablauf ist mir eigentlich auch klar...
    Schreib jetzt mal meinen Code rein. Berechnet ist ca. 1s mit 1024 prescaler und 16-bit timer...
    Sagt mir was noch nicht stimmt....
    Danke

    Code:
    #include <avr/io.h> 
    #include <avr/interrupt.h> 
    #include <avr/signal.h> 
    
    int timer_init (void) 
    { 
       TIMSK = _BV(TOIE1);                   
       TCNT1 = 57724;                         
       TCCR1B = _BV(CS12) | _BV(CS10);    
       sei();
    } 
    
    
    int main (void) 
    { 
       DDRA=0xFF;
       while(1)
       {
    	   timer_init();
    	   outp(0xFF,PORTA);
    	   timer_init();
    	   outp(0x00,PORTA);
       }
    }

+ Antworten

Berechtigungen

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