Programm wird bei geänderter Frequenz nicht mehr ausgeführ

OP #632984
Lesenswert?
• ▲
▼
Hallo,

derzeitig versuche ich einen externen Quarz(16MHz) an meinen Atmega8 
anzuschließen, das funktioniert soweit ganz gut, zumindest antwortet der 
Atmega nach dem Setzen der Fuse Bits(0xee) noch :). Wenn ich dann aber 
versuche ein einfaches Programm, das eine LED zum leuchten bringen soll 
zu übertragen funktioniert dies zwar auch wunderbar, aber die LED will 
nicht leuchten. Am Pin sind auch nur ungefähr 0,2V statt 4-5V. Wenn ich 
das ganze mit dem internen Quarz(8MHz) mache, dann funktionierts. Lasse 
ich das Programm drauf und schalte wieder auf den externen Quarz um 
leuchtet die LED komischerweise immer noch, nur wenn ich das Prog lösche 
und erneut überspiele leuchtet sie wieder nicht :-( Kann mir einer von 
euch sagen, was ich dagegen unternehmen könnte?

Gruß
cesupa
Gast #632994
Lesenswert?
• ▲
▼
CKOPT -Fuse (in dem anderen Fuse-byte) programmieren
Externer Quarz heißt im Datasheet (und nur da ;) ) "Crystal Oscillator", 
das Kapitel erklärt auch die Fuses ganz gut.
btw. Quarzoszillator (wie in den meisten shops) heißt im Datasheet 
"external clock", das sollte man nicht verwechseln...

hth. Jörg
OP #633004
Lesenswert?
• ▲
▼
Ähm, sorry, ich versteh noch nicht viel von Mikrokontrollern. Die Fuse 
Bits hab ich auf 0xee gestellt, so stehts meiner Meinung nach auch im 
Datasheet drin, funktioniert ja auch. Aber was ist dieses CKOPT ??? Im 
Datasheet steht ja auch ich muss CKOPT programmiert verwenden, wenn ich 
einen 16MHz Quarz benutze, wie genau mache ich das?

Gruß
cesupa
Gast #633010
Lesenswert?
• ▲
▼
Der Atmega8 hat zwei Fuse bytes:
 Im "Fuse Low Byte" stehen die Einstellungen für den Brown-out-detektor, 
die Start-up-time und die Bits um die Taktquelle auszuwählen (Kapitel: 
"Memory programming"->"Fuse bits")
 Im "Fuse High Byte" steh u.A. CKOPT.
Was du wie einstellen musst hängt vor allem von dem Programm ab, dass du 
zum programmieren benutzt. Deshalb schau mal hier: 
http://www.mikrocontroller.net/articles/AVR_Fuses#Taktquellen_Fuse_Einstellung

hth. Jörg
Gast #633039
Lesenswert?
• ▲
▼
LIES erst das Fuse High Byte AUS - wenn ich raten müsste ( ich nutze 
weder Linux noch uisp) mit "uisp -dprog=dapa --re_fuse_h" - aber da 
gibt's bestimmt 'ne doku ;).
Der Defaultwert für das Fuse-Highbyte sollte 0xD9 sein (0b11011001)
CKOPT (datasheet, bei mir "Table 87.") soll programmiert werden, also 
muss in dem High byte das Bit 4 auf Null gesetzt werden-> 0b110_0_1001 = 
0xc9.
Schreib AUF GAR KEINEN FALL in das Fuse high byte beim mega8 einen Wert 
der kleiner ist als 0x80 ! (RSTDISBL Fuse).

hth. Jörg

ps.: lies das Datasheet (nochmal)
pps.: und nochmal ;)
OP #633170
Lesenswert?
• ▲
▼
So, hab jetzt das Fuse High Byte neu gesetzt, nach 0xc9. Funktioniert 
leider immer noch nicht. Werde mir dann mal das Datasheet reinziehen. 
Wäre euch aber dennoch sehr dankbar wenn euch noch einige Ideen bzw. 
Lösungsvorschläge einfallen, die ihr hier dann posted.

Schöne Grüße
cesupa

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren