- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 16

Thema: Taster reagieren nur schleppend

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    23.12.2013
    Beiträge
    5
    Nun ja, dann bitte:

    volatile int tc;
    char hr=00, min=0, sec=0;
    char str[5];

    ISR(TIMER1_OVF_vect)
    { TCNT1 = 34286; tc++;
    }

    int main(void)
    { TIMSK |= _BV(TOIE1); // aktivate overflowinterrupts of timer1
    TCCR1B |= (1<<CS12); // prescaler = 256
    TCNT1 = 0xFFFF; // FFFF for start
    sei();

    while(1)
    {
    sec=tc;
    if (sec==60)
    { tc=0; sec=0; min++;
    if (min==60) {min=0; hr++; if (hr==24) hr=0;}
    sprintf(str,"%02d",min); lcd_set_cursor (1, 7); lcd_write (str);
    sprintf(str,"%02d",hr); lcd_set_cursor (1, 4); lcd_write (str);
    }
    sprintf(str,"%02d",sec); lcd_set_cursor (1, 10); lcd_write (str);
    while(sec == tc);
    }
    return(0);
    }
    Die Frage dann nochmal......wie sage ich dem Timer mit einem Taster: Jetzt starte und jetzt stoppe....und das Ganze Interrupt gesteuert, damit er direkt reagiert??

  2. #2
    shedepe
    Gast
    Und nun erzählst du bitte wo du der Meinung bist einen Taster auszulesen. Davon ist in deinem Code nämlich nichts zu finden. Zum Thema Tasterauslesen gibt es 2 Möglichkeiten:
    1. Gepollt:
    Code:
    //Zuerst: Pullups auf High und Pin auf Eingang setzen
    
    if(!(PINX & (1<<PXX)))
    {
         _delay_ms(100); //Zum Entprellen
         if(!(PINX & (1<<PXX)))
         {
             //Pin wurde gedrückt
         }
    }
    2. Interrupt basiert: (Ich skizziere nur kurz das Vorgehen)
    2.1 Man hängt den Taster an einen der Interrupt Pins (INT0 oder INT1)
    2.2 Man Programmiert den Interrupt handler für INT0 oder INT1
    2.3 Man Programmiert die Einstellungsregister für INT0 oder INT1

    Zum Timer:
    Der Timer startet bzw. stopt wenn man das TCNT1 Register Programmiert.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    23.12.2013
    Beiträge
    5
    Ja so oder

    Code:
    if (bit_is_clear()1<<PXX)
    {
       "Mach Was"
    }
    2.2 Man Programmiert den Interrupt handler für INT0 oder INT1
    Das heißt ich sage ihm, dass er auf eine steigende Flanke reagieren soll???

    2.3 Man Programmiert die Einstellungsregister für INT0 oder INT1
    Und wie macht man das???

    Der Timer startet bzw. stopt wenn man das TCNT1 Register Programmiert
    Wie genau.....???

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.02.2005
    Ort
    München
    Alter
    40
    Beiträge
    389
    Man liest die Beschreibung der Register im Datenblatt des Atmega 8.
    Hier wird dir keiner jedes Register vorkauen, da gehört schon etwas Eigeninitiative dazu.


    Gruß Matthias

  5. #5
    shedepe
    Gast
    Oder schaut auf mikrocontroller.net im avr-gcc tutorial nach.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    23.12.2013
    Beiträge
    5
    Ich danke euch für eure Initiative, von Hilfe kann jedoch nicht die Rede sein.

    Sobald es ein wenig komplizierter wird, verweist jeder auf die "Eigeninitiative" und Forumsbeiträge. Das ist schon witzig...oder traurig???

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    ... von Hilfe kann ... nicht die Rede sein ... Sobald es ein wenig komplizierter wird, verweist jeder auf die "Eigeninitiative" ...
    Harte Kritik - und ich kann sie nicht nachvollziehen. Immerhin hattest Du Deinen Code a) nur teilweise und b) erst im sechsten Posting vorgestellt und - ganz wichtig - c) ICH (wohl jeder hier) weiß nicht was für ein Makro Du hinter

    Code:
    if (bit_is_clear()1<<PXX)
    versteckt hast. Denn nach Deiner wiederholten Darstellung liegt Dein Problem in der Abarbeitung beim Tastendruck und GENAU DEN hast Du noch nicht nachvollziehbar vorgelegt. Und deswegen kann man Dir auch nicht wirklich sinnvoll helfen! Da hilft auch kein Vorwurf wegen mangelnder Hilfbereitschaft. Ich sehe das Thema mangelnder Hilfe eher an der zögerlichen und ungenügenden Problembeschreibung.

    Würde auch kein bisschen schaden wenn du den aktuellen Code mal posten würdest ...
    Zitat Zitat von shedepe Beitrag anzeigen
    ... wo du der Meinung bist einen Taster auszulesen. Davon ist in deinem Code nämlich nichts zu finden ...
    Wo im Code ist immer noch unklar und, wie schon gesagt, was hinter dem Makro steckt kann nur vermutet werden.
    Ciao sagt der JoeamBerg

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    Zitat Zitat von AtmegaNeuling Beitrag anzeigen
    Ich danke euch für eure Initiative, von Hilfe kann jedoch nicht die Rede sein ...
    Zitat Zitat von shedepe Beitrag anzeigen
    ... Ich will dir trotzdem mal kurz die richtigen Links zusammenstellen ...
    Ich weiß nicht ob unsere Hilfe Sinn macht. Ist wohl der gleiche Anfänger der schon vor drei Jahren beim mikrocontrollernet bemerkenswerte Fragen gestellt hat.
    Geändert von oberallgeier (05.01.2014 um 13:20 Uhr) Grund: Unpassenden Textrest gelöscht
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. Asuro - Nur 2 Taster funktionieren.
    Von Fisch'air im Forum Asuro
    Antworten: 0
    Letzter Beitrag: 18.05.2011, 17:53
  2. Einfach nur mit Taster eine LED ein und aus schalten ?
    Von Ferdinand im Forum Assembler-Programmierung
    Antworten: 2
    Letzter Beitrag: 13.06.2008, 09:08
  3. Bei Taster auf Flanke reagieren bzw. wie Softkeys sperren
    Von elcapitano im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 02.04.2008, 21:27
  4. Taster senden nur 196, Hilfe!
    Von BlazeX im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 09.02.2008, 18:07
  5. Antworten: 17
    Letzter Beitrag: 03.02.2007, 20:51

Berechtigungen

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

Labornetzteil AliExpress