-
        

Ergebnis 1 bis 5 von 5

Thema: Probleme mit Zeiten

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2007
    Ort
    Graz
    Alter
    37
    Beiträge
    15

    Probleme mit Zeiten

    Anzeige

    hallo

    ich habe einen ATmega8535 und ein grosses problem

    meine timer funktionieren nicht richtig. und mit den wait befehlen ist es das gleiche

    Ich habe einen 8mhz quarz. wenn ich $crystal=8000000 verwende dauert waitms 1000 ca.2-3sekunden

    wenn ich $crystal=950000 verwende funktionieren die wait befehle richtig aber nicht die timer

    hate schon mal jemand ein solches problem? ich bin rat los
    danke für die hilfe im voraus

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Wie weit ist der Quarz vom µC weg?
    Hast du die richtigen Kondensatoren an den Quarz angeschlossen?

    jon
    Nice to be back after two years
    www.roboterfreak.de

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176

    Re: Probleme mit Zeiten

    Zitat Zitat von Emotionslos1
    hallo
    ich habe einen ATmega8535 und ein grosses problem
    meine timer funktionieren nicht richtig. und mit den wait befehlen ist es das gleiche
    Ich habe einen 8mhz quarz. wenn ich $crystal=8000000 verwende dauert waitms 1000 ca.2-3sekunden
    danke für die hilfe im voraus
    ist bei mir auch fast so, interen Clock 8MHz dauert bei wait zu lange,

    wait25 wird bei mir bei wait 19,5 erreicht, Abhilfe wait tunen oder die Oszillator clk

    void _delay_up25(UBYTE n)
    { UBYTE tmp;
    #ifdef F_CPU8000000
    for(tmp=0; tmp<(n); tmp++)
    _delay_ms(19.5);
    #else
    #ifdef F_CPU4000000
    #else
    #warning F_CPU4000000 not defined
    #warning F_CPU8000000 not defined
    #endif
    #endif
    } // void _delay_up50(UBYTE n)

    aber ich nutze wait fast nicht mehr, habe eine IRQ auf einen 1ms Timer, dort zähle ich variablen hoch und die kann ich auf overflow prüfen, dann kann der prozzi noch was anderes tun ausser wait....


    SIGNAL (SIG_OUTPUT_COMPARE2)
    { cli(); //Global Interrupt Disable
    dcf.msec++; // Zeitgeber für DCF-Empfang weiterdrehen
    fast_it++;
    _ms++;
    _500ms++;
    if(dcf.msec>30000)
    dcf.msec=0;
    if(_500ms>1500)
    _500ms=0;
    if(_ms>1500)
    _ms=0;
    sei(); //Global Interrupt Enable
    }

    void cont_ausloesung(void)
    { if(bit_is_clear(PORTB, _camAUS_PB))
    { PORTB |= (1 << _camAUS_PB); // Cam Auslöser an
    w0=fast_it+cam_delay;
    }
    if(fast_it>w0)
    { PORTB &=~ (1 << _camAUS_PB); // Cam Auslöser aus
    _ausloes=0;
    }
    } // void cont_ausloesung(void)

    void ausloesung(void)
    { PORTB &=~(1 << _camAUS_PB); _ausloes=1; cont_ausloesung();
    }

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2007
    Ort
    Graz
    Alter
    37
    Beiträge
    15
    das mit den kontensatoren werde ich mir anschauen guter tipp danke.

    das mit den timern haut bei mir leider auch nicht hin. ich programmiere mit Bascom und wenn ich versuche einen servo anzusteuern

    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10

    die frequenz zur ansteuerung des Servos sollte 50hz betragen wenn ich richtig rechne. und mit diesem config servo..... sollte ich auf diese 50herz kommen.

    habe mal mit einem oszi gemessen und erreiche gerade mal 5-7herz wenn ich mit reload auf 2 runtergehe habe ich nur mehr 3hz.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    19.04.2007
    Ort
    Graz
    Alter
    37
    Beiträge
    15
    habe das mit den kondensatoren geprüft habe 22pf laut meinem schaltplan richtig. immer noch die gleichen probleme.
    hat noch jemand eine idee? oder kann mir jemand ein eigenbau testbord fur einen ATmega8535JI empfählen?
    Danke

Berechtigungen

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