Hallo ich habe dieses kleine Prgrämmchen um die delay funktion mal zu testen. Das Problem ist das wenn ich 1000ms warte dauert es bestimmt fast 5s bis etwas passiert. Woran liegt das?? ich benutze einen ATtiny 13 #include <avr/io.h> #ifndef F_CPU #define F_CPU 9600000UL /* Interner Takt mit 9,6 Mhz */ #endif #include <util/delay.h> int main( void ) { DDRB = ( 1 << PB3 );// PB3 an PORTB als Ausgang setzen for(;;) { PORTB ^= ( 1 << PB3 ); _delay_ms(1000); } }
Ist vlt. CKDIV8 gesetzt? Und, bist du sicher das der tiny auf 9.6 und nicht auf 4.8 programmiert ist? Nachtrag aus dem Datenblatt:
1 | The device is shipped with CKSEL = “10”, SUT = “10”, and CKDIV8 programmed. The default |
2 | clock source setting is therefore the Internal RC Oscillator running at 9.6 MHz with longest startup |
3 | time and an initial system clock prescaling of 8. |
Also Optimierung ist enable. Aber was meint Nico Erfurth? In den Fuses ist ein Haken bei 9,6 MHz, also gehe ich davon aus. Den Rest verstehe ich nicht bin noch ziemlich neu hier. Nachtrag CKDIV8=0 ist angehakt. muss der haken weg??Was bedeutet das??
CKDIV8 = clock divided by 8 = Der System Clock Prescaler, den jedes Taktsignal durchläuft, bevor es zu den einzelnen µC-Modulen geroutet wird, wird beim µC-Start auf "Teilung durch 8" konfiguriert. Siehe im Data Sheet unter "System Clock Prescaler" bzw. "Fuses".
Ok wenn ich den Haken für CKDIV8 wegmache und F_CPU = 4,8MHz definiere dann leuchtet die LED bei einer Delay zeit von 1000ms ca. im Takt von 1Hz. Super das passt, aber warum ist die interne Osl frequenz mit 9,6MHz anghakt? Muss ich 4,8MHz wählen?
Matthias Lobitz wrote: > Ok wenn ich den Haken für CKDIV8 wegmache und F_CPU = 4,8MHz definiere > dann leuchtet die LED bei einer Delay zeit von 1000ms ca. im Takt von > 1Hz. Super das passt, aber warum ist die interne Osl frequenz mit 9,6MHz > anghakt? Muss ich 4,8MHz wählen? Die 9.6 sind angehakt und aktiv. Deine eigentliche Blinkfrequenz bei 1000ms sollten nämlich 0.5HZ sein (1s an, 1s aus). Durch die halbierte F_CPU Einstellung wartet _delay_ms aber nur 500ms pro aufruf.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.