- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: Zeitschleife zu kurz....ATTiny2313

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1

    Zeitschleife zu kurz....ATTiny2313

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Freunde !
    ich brauche für ein AVR Alarm-Projekt eine Zeitschleife von 3 min, welche ich mir so gedacht habe:
    Code:
    // Zeitbegrenzung 3min 
    #ifndef F_CPU
    #define F_CPU    12000000 
    #endif
    #include <util/delay.h>
    // vor der Einbindung von delay.h muss F_CPU definiert sein,
    // sonst Ausgabe von Fehlermeldung das F_CPU nicht def. ist
    #include <avr/io.h>
    // Port B1 wird 3min lang getoggelt
    int main(void)
    {
        DDRB |=(1<<PB1);
        int zeit =0;
        while( zeit < 180)         // nach 180sec = 3min  
                                // ausschalten
        {
            PORTB |= (1<<PB1);  // Ausgang HIGH
            _delay_ms(500);     // 0,5 sec
            PORTB &= ~(1<<PB1); // Ausgang LOW
            _delay_ms(500);     // 0,5 sec
            zeit++;                // 2x 0,5 sec = 1sec
        }
        
        PORTB |= (1<<PB1);      // Ausgang HIGH  = Aus
    Wenn ich die Zeit des Blinkens(LED > +5V an PortB.1), bis zur ständigen Ausschaltung des Blinkvorganges, mit einer Stopuhr messe , komme ich nur auf 2min 15sec. es soll mir nicht auf 2..3..5 Sec. ankommen aber ca.45 Sec sind zu viel Abweichung.

    Die Fuses sind richtig gesetzt...ext. Quarz entspr. Frequ., kein Vorteiler usw.. Vielleicht mache ich ja einen grundsätzlichen Fehler beim Code, kann mir wer bitte helfen ??

    Danke und Gruss

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Du wirst F_CPU bereits woanders definiert haben, z.B. als Symbol im AVR-Studio, die Delays werden dann auf dieser Basis berechnet und laufen dann bei aktuellen 12MHz Clock zu schnell.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1
    Danke Magic !
    Nein es ist dem nicht so, das war ein Hardwarefehler, der Qu hatte ne "Macke", da ich keinen 2ten 12MHz hatte habe ich mal auf 16MHz gesetzt und auch die F_CPU geändert, fast sekundengenau geht es jetzt. Nun ja in so eine kleines Quarz-"Blechdöschen" kann man ja nicht schauen, ob das Ding auch richtig schwingt..
    Trotzdem was gelernt, alles was schwingt muss es nicht immer richtig tun..

    Danke Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Taster mit Zeitschleife
    Von bnitram im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 28.05.2010, 18:01
  2. Zeitschleife funktioniert nicht (mit C programmiert)
    Von pointhi im Forum PIC Controller
    Antworten: 7
    Letzter Beitrag: 03.04.2010, 08:16
  3. Antworten: 3
    Letzter Beitrag: 21.01.2007, 12:57
  4. Zeitschleife
    Von Exodus im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 07.06.2006, 17:32
  5. Zeitschleife
    Von Exodus im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 01.06.2006, 14:34

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad