- 12V Akku mit 280 Ah bauen         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 37

Thema: Problem mit Timer0

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Anzeige

    Praxistest und DIY Projekte
    @Joe jetzt übertreibst Du aber

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  2. #12
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Danke, sehr lieb - aber meine letzte, dreitägige Fehlersuche am mega168 hatte den Grund:

    ... TIMSK1 |= (1<<TOIE1); // heisst eben nicht: Tmr/Cntr1 Overflow interrupt disabled. Jetzt steht dort TIMSK1 &= ~(1<<TOIE1); und "alles" läuft prächtig ...
    und so etwas ist ja nun wirklich total doof.

    Sorry, ich gerate immer wieder OT
    Ciao sagt der JoeamBerg

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.07.2006
    Ort
    nähe Rottweil
    Alter
    39
    Beiträge
    240
    Guten morgen!

    vielen Dank für eure Hilfe! Ich hab jetzt mal noch etwas rum gerechnet. Und zwar will ich die LED für eine Sekunde aufleuchten lassen. Ich hab einen Versorgungstakt von 12MHz. Wenn ich den Prescaler auf 1024 stelle bedeutet das einen Takt von 11,71875kHz für den Timer.
    Das würde heißen dass die ISR in einer Sekunde 45,77mal durchlaufen wird. Also muss ich ja schreiben:
    Code:
    while(t<46)
    {
    .
    .//LED an
    .
    }
    Sehe ich das richtig oder habe ich eine Denk/Rechenfehler?

    Grüße!!

    Bean

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.112
    Sieht gut aus, sofern Du mit der Genauigkeit auskommst.
    Gruß

  5. #15
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Vielleicht ist Dir das

    Bild hier  

    eine Hilfe. Du kannst Dir also eine ISR machen, die ungefähr 50 Hz läuft - das ist annähernd das Langsamste, was mit Deiner Konfiguration geht.

    In dieser Routine zählst Du eine Zahl runter. Wenn Du Null erreichst, dann setzt Du diese Zahl wieder auf den Anfangswert und toggelst einen Port - oder machst sonst was.

    Aufpassen: Bei 12 MHz und beim Prescaler 1024 kannst Du keine (na ja, gaaanz wenige) ganzzahligen Werte fahren. Es sind eben auch nur UNGEFÄHR 50 Hz, siehe Tabelle.

    Ok?
    Ciao sagt der JoeamBerg

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.07.2006
    Ort
    nähe Rottweil
    Alter
    39
    Beiträge
    240
    Guten Morgen!!

    Vielen Dank für euer Hilfe!! Bin viel weiter gekommen. Habe gestern Abend noch etwas mit den Zeiten herum experimentiert. Das passt ja schon recht gut. Soll heißen dass die Genauigkeit für das was ich es brauche vollkommen ausreicht...
    Jetzt hab ich nur noch ein Problem mit der while Schleife. Und zwar will ich nun in dieser Schleife einen Analogwert einlesen und in Abhängigkeit von diesem einen Port schalten... Das will aber noch nicht so richtig... Ich hab jetzt mal so angefangen:
    Code:
    while(t<2746)
    {
    AD_einlesen();
    if(result<350)
    {
    PORTB |= (1<<PB0);
    }
    }
    So scheint es aber nicht zu funktionieren. Ich hab leider gerade nicht den kompletten Code zur Hand. Hab auch schon probiert mit itoa den "resultwert" vor der if Schleife umzurechnen... Aber hat nicht das gewollte Ergebniss gebracht... Habt ihr eine Idee?

    Grüße!!

    Bean

  7. #17
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Brrrrr - ist diese Schleife in der ISR? Das hiesse dann mit dem Formel1 nach dem Start bei Vollgas voll auf die Bremse .... (ok, schlechter Vergleich, viele fahren so gokartmässig).

    Vielleicht warten wir mal den kompletten/erweiterten Code ab
    Ciao sagt der JoeamBerg

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.07.2006
    Ort
    nähe Rottweil
    Alter
    39
    Beiträge
    240
    Nein Nein, in der ISR wird nach wie vor nur t hochgezählt (t=t+1; ). Mehr steht da nicht drin. Der Rest steht alles in main...

    Grüße!!

    Bean

  9. #19
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Zitat Zitat von Mr Bean
    ... wird ... nur ... t=t+1; ...
    Ok, gut so. Nun will ich nicht päpstlicher sein als ... Ausserdem bin ich eher ein C-Anfänger. Aber die C-Freaks sehen es ja pfiffig, dass man dann schreibt:
    Code:
    t++;
    Ich mach das mittlerweile auch - es spart sogar Schreibarbeit
    Ciao sagt der JoeamBerg

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.07.2006
    Ort
    nähe Rottweil
    Alter
    39
    Beiträge
    240
    ja die Schreibweise kenne ich... Danke... bin halt eher altmodisch...

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

12V Akku bauen