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
Gib mal die GENAUE Typenbezeichung des AVRs... Könnte sein, dass du ein L-Typ hast, der kann nur 8MHz...
Es gibt keinen internen Quarz. Sondern nur einen int. RC Oszillator.
Also, auf dem Atmega8 steht drauf: ATMEL 0547I ATMEGA8-16PU Gruß cesupa
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
Ä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
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
Also ich mache das ganze unter Linux mit UISP. Die Fuse-Bits setze ich für den externen Quarz so hier: uisp -dprog=dapa --wr_fuse_l=0xee Was muss ich hierbei ändern um CKOPT korrekt einzustellen? Gruß cesupa
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 ;)
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
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.