attiny läuft zu schnell - fuses?

Gast #2033296
Lesenswert?
• ▲
▼
hallo

hab folgendes problem:

led soll einmal pro sekunde aufblitzen. erst lief das ganze bei halber 
geschwindigkeit bis ich CKDIV8 ausgeschaltet habe. jetzt 4 mal zu 
schnell (mit stoppuhr gemessen, muss also kein exakter wert sein).

die fuses sind so dass der interne rc oszi mit 9.6 MHz benutzt wird.

(fuses high: 0xff, low: 0x7a)

in avr studio hab ich unter project options 9600000 Hz eingestellt.

woran kanns noch liegen?
bin langsam am verzweifeln weil ich schon 2 stunden für den humbug 
verschwendet habe, brauche aber die richtige geschwindigkeit.

1
while(1) {
2

3
    PORTB = 0b00010000;    // port bit 4 für led blinken benutzen (pin 3 an attiny13)
4
    _delay_ms(100);
5

6
    PORTB = 0b00000000;
7
    _delay_ms(900);
8

9
}
Gast #2033303
Lesenswert?
• ▲
▼
meine Gedanken:
- #define F_CPU mit reinbasteln
- und die delay funktion kann nurbegrenzt lang sein!
 schau mal in der delay.h nach
( The maximal possible delay is 262.14 ms / F_CPU in MHz. )
also 262.14ms/9,6

schnelle, dirty lösung wäre
z.B. 9x
_delay_ms(100);

grüße
Gast #2033310
Lesenswert?
• ▲
▼
#define F_CPU
hat nichts gebracht - ich habe auch schon vorher in einer compiler 
message gesehen dass es richtig gesetzt ist.

in der delay funktion heisst es zwar dass die auflösung reduziert ist 
wenn man zu grosse werte benutzt (nicht mehr taktgenau), aber 
funktionieren muss sie trotzdem.
Gast #2033327
Lesenswert?
• ▲
▼
hab jetzt trotzdem mal explizit das probiert:
1
    PORTB ^= 0b00010000;
2
    for (i=0; i<=4; i++) _delay_ms(25);
3

4
    PORTB ^= 0b00010000;
5
    for (i=0; i<=36; i++) _delay_ms(25);

läuft gleich schnell.

funktioniert die delayfunktion nicht mehr richtig - wird irgendwas 
wegoptimiert?
kann ja kaum sein dass der tiny mit 38.4 MHz läuft, also muss der code 
den prozessor zu wenig lange beschäftigen...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.