-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Probleme mit der Prozessor Frequenz

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.11.2005
    Beiträge
    272

    Probleme mit der Prozessor Frequenz

    Anzeige

    Hallo Leute,

    habe heute wieder mal ein Problem wo ich nicht weiter komme. Ich habe ein Atmega 328P. Dort habe ich mir ein kleines Programm geschrieben wo eine LED blinken soll. Das macht sie auch, aber das Timing ist falsch. Wenn ich dort 100ms Toogle Time einstelle, blinkt der in 500ms Takt. Bei anderen Wartezeiten ist es ähnlich. Immer so 4-5x länger als geplant.

    Dachte mir, ok, ist der Clock falsch eingestellt. Aber steht in den Fuses auf 8MHz. Habe ir auch auf Pin PB0 die Taktfrquenz ausgeben lassen und mitten Oszi nachgemessen. Die Quarzfrequenz passt. Also letzte Idee habe ich mir ein kleines Bascom Programm geschrieben. Da geht alles supi. Also habe ich irgendwo ein Problem im C-Programm. Finde den Fehler aber nicht. Aber vielleicht ihr

    Code:
    #include <avr/io.h>
    #include <util/delay.h>
    
    #ifndef F_CPU
    #define F_CPU 8000000UL     /* Quarz mit 8 Mhz  */
    #endif
         
    int main( void )
    {
    
        DDRB |= (1<<PB5) | (1<<PB4); //als Ausgang
    
        PORTB |= 0b00100000; //setzte von PB5 und PB4 nicht 
    
        while(1) // Endlosschleife
        {  
            PORTB ^= (1<<PB5) | (1<<PB4);  // Toggle PB0 z.B. angeschlossene LED
                    
            _delay_ms(100);        // warten...
                    
        }
        return 0;
    }
    Ich programmiere mit AVR Studio 5.

    Thx for help

    Filzlaus
    Unser Wissen ist ein Tropfen, unser Unwissen ist wie ein Ozean.
    Sir Isaac Newton

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Ich programmiere mit AVR Studio 5.
    Dann mach mal ein Update. In irgendeiner Version ist eine fehlerhafte util/delay.h enthalten, die um den Faktor 4 zu langsam ist.
    Geändert von sternst (17.01.2012 um 21:40 Uhr)
    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.11.2005
    Beiträge
    272
    Hi,

    AVR-Studio 5 ist up to date und der Fehler ist auch in der 4 vorhanden. Komischer weise geht es auf dem Xmega128A1 ohne Probleme. Fast der selbe Programmcode. Dort läuft es richtig, auf dem Mega 328P nicht.

    thx Filzlaus
    Unser Wissen ist ein Tropfen, unser Unwissen ist wie ein Ozean.
    Sir Isaac Newton

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Code:
    #include <AVR/io.h>
    #include <util/delay.h>
    
    #ifndef F_CPU
    #define F_CPU 8000000UL     /* Quarz mit 8 Mhz  */
    #endif
    Das F_CPU wird nach dem Inkludieren von util/delay.h definiert. Wenn trotzdem beim Compilieren keine Meldung kommt, dann bedeutet das, dass eine F_CPU-Definition bereits über das Makefile "reinkommt". Ist das auch 8000000?
    MfG
    Stefan

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    18.10.2011
    Beiträge
    44
    Damit delay.h funktioniert mußt Du die Optimierung einstellen, -Os.

    Mach das mal.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2010
    Beiträge
    356
    Schau mal unter Fehler oder so ähnlich ob da warnungen sind, die werden nicht automatisch angezeigt.

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.11.2005
    Beiträge
    272
    Hi,

    ich habe mal nachgeschaut. Externes Makefile ist abgeschaltet.

    Aber wie vorhergesagt gibt es beim Copilieren eine Warnung:

    Warnung 1 #warning "F_CPU not defined for <util/delay.h>" c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h 89 3 Blinker
    Witzig ist nur, dass ich in einem anderen PRogramm den gleich Kram bei nem Programm mit nem Xmega stehen habe, also

    #include <avr/io.h>
    #include <util/delay.h>

    // Define default CPU frequency (2 MHz), if this is not already defined.
    #ifndef F_CPU
    #define F_CPU 32000000UL
    #endif
    und da gehts super. Noch irgend jemand ein Tip wieso ich diese Warnung bekomme?

    thx Filzlaus
    Unser Wissen ist ein Tropfen, unser Unwissen ist wie ein Ozean.
    Sir Isaac Newton

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von Olle_Filzlaus Beitrag anzeigen
    Noch irgend jemand ein Tip wieso ich diese Warnung bekomme?
    Ja, ließ den ersten Satz von meinem letzten Post nochmal.
    MfG
    Stefan

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.11.2005
    Beiträge
    272
    Hallo sternst,

    das wars. Ich danke dir. Ich dachte immer das man erstmal alle Header reinwirft und dann den Rest macht. Also wieder was gelernt

    Erst CPU definieren und dann das delay.h reinwerfen.


    Edit:
    Aber echt seltsam ist, dass ich das jetzt auch bei dem Programm vom Xmega so eingestellt habe:
    #include <avr/io.h>

    #ifndef F_CPU
    #define F_CPU 32000000UL
    #endif
    #include <util/delay.h>
    Da bekomme ich die Warnung hier:
    Warnung 1 #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed" c:\program files (x86)\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h 94 3 1_4_2 UART mit Funktionen_Selbst
    also funktioniert es hier genau andersrum Kann mir das jemand erklären wie das zustande kommt?

    thx Filzlaus
    Geändert von Olle_Filzlaus (18.01.2012 um 19:44 Uhr)
    Unser Wissen ist ein Tropfen, unser Unwissen ist wie ein Ozean.
    Sir Isaac Newton

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2010
    Beiträge
    356
    schon mal nach gemessen ob beim xmega die zeiten EXACT stimmen, auf die ms ?
    könnte nähmlich sein das es nur nicht auffällt dass der Fehler durch die abgeschaltete Optimierung das ausgleicht was du mit dem falsch definierten F_CPU verursachst.
    Nicht sehr warscheinlich und warscheinlich auch falsch aber ne besser erklärung fällt mir grad nicht ein.
    könnte auch sein das bei den Xmega includes der F_CPU von haus aus schon höher definiert ist.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Prozessor
    Von grizzly im Forum Elektronik
    Antworten: 17
    Letzter Beitrag: 23.06.2010, 16:12
  2. Prozessor-Simulator ?
    Von Crazy Harry im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 06.07.2009, 17:53
  3. Prozessor
    Von letori im Forum Robby CCRP5
    Antworten: 1
    Letzter Beitrag: 16.03.2008, 18:20
  4. Geschwindigkeitsmessung Prozessor
    Von besa im Forum Robby RP6
    Antworten: 7
    Letzter Beitrag: 16.10.2007, 20:47
  5. Antworten: 6
    Letzter Beitrag: 18.09.2005, 14:18

Berechtigungen

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