PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega168 Fusebits verstellt, bekomm ihn nichtmehr reaktiviert



D35troy3r
06.08.2011, 21:18
Hallo,

im Moment könnt ich echt durchdrehen :(.
Ich hab heute versucht die Fusebits vom uC so zu verstellen das mein 4Mhz-Quarz läuft.
Nun hab ich da was verstellt und der uC ist versaut^^.

Ich fang mal ganz von vorn an:
Auf der Platine ist ein Atmega168 mit 4Mhz Quarz und 2x 22pF Kerkos.
Mit dem Programm myAVR progTool hab ich die Low Fuse auf "Ext. Low-Freq. Crystal; Start-up time PWRDOWN/RESET: 32K CK/14 CK +65ms" gestellt. Bei meinem Pech funktioniert nun nix mehr :(. So wirklich hab ich das ganze auch nicht verstanden.

Nun probier ich mithilfe eines Atmega8 den 168er zu reanimieren ;). An XTAL1 liegt ein Kontakt vom m8.

Folgende Frequenzen hab ich schon ausprobiert: 31,3Khz; 200Khz; 400Khz; 700Khz; 1,4Mhz
Die Frequenz vom Programer wurde bei Bascom sogar schon auf 1kHz gestellt.
..ich weiß absolut nicht weiter !

Danke im Vorraus...

Rone
07.08.2011, 08:37
Hallo!

Dies wäre wohl eher richtig:
19583

Und gib mit AT Mega8 mal 1MHz aus.


Viel Erfolg
Rone

D35troy3r
07.08.2011, 12:34
Wie bekomme ich mit Bascom AVR einen Ausgang auf 1Mhz getaktet?

$regfile = "m8def.dat"
$crystal = 1000000

Config Portb.1 = Output

Do
Portb.1 = 1
Portb.1 = 0
Loop
End

Der interne RC-Oszillator liegt bei 1Mhz. Nun sollten doch am Ausgang die vollen 1Mhz anliegen?! Mit dem Multimeter mess ich aber nur 167.1kHz :(

Besserwessi
07.08.2011, 13:00
So wie es aussieht braucht die Schleife 6 Taktzyklen. Das ist eigentlich gar nicht so schlecht. Für den anderen µC kann das von der Geschwindigkeit reichen, aber Takt ist unsymmetrisch , vermutlich 2 Zyklen H und 4 Zyklen L. Das könnte für den anderen µC ein Problem sein. Symmetrisch könnte man es bekommen wenn man zwischen den beiden Portb.1= Befehlen noch einen Befehl wie Portb.2=0 einfügt, einfach als Verzögerung. Der takt wäre dann nur 125 kHz, aber immerhin symmetrisch.

Den Takt des internen RC Oszillaors bekommt man bei Mega8 gar nicht nach außen. Das ist einfach nicht vorgesehen. Über die USART (syncroner Mode) und PWM könnte man ggf. den halben Takt ausgeben.

D35troy3r
07.08.2011, 13:27
Hab das gleich mal ausprobiert. Der uC gibt mir keine Antwort :(.
Frequenz liegt nun bei 125.4kHz. Wieso springt der Chip nichtmehr an? 125kHz sollten doch schon reichen oder nicht?

Nachdem ich die FB vom m8 auf int. 8Mhz gestellt hab bekomm ich etwa 1.045Mhz am Ausgang.
Immernoch keine Antwort vom uC...

Rone
07.08.2011, 14:06
Weitere Fragen:
1. Welchen Programmer verwendest Du?
2. Wie ist die genaue vorgehensweise nach dem Anlegen des Taktes?

MfG
Rone

D35troy3r
07.08.2011, 14:10
Ich verwende den myAVR.
Takt und ISP sind angeschlossen, uC´s bekommen Spannung. Dann probier ich einmal mit myavr Progtool den uC zu finden, danach nochmal mit Bascom.
Beide Programme finden den Controller nichtmehr.

Eben hab ich einen Quarzoszillator 1Mhz gefunden. Direkt angeschlossen...erfolglos.

D35troy3r
07.08.2011, 14:30
Erster Erfolg!
Hab den 1Mhz Takt vom Quarzoszillator an XTAL2 angelegt. Der uC läuft extrem langsam seine Arbeitsschritte ab (LED´s leuchten der Reihenfolge auf wie programmiert). Über ISP konnt ich noch keine Verbindung schaffen

HeXPloreR
07.08.2011, 15:19
Hallo,

vieleicht hilft das noch etwas weiter - RSRTDISBL oder SPIEN vielleicht verstellt.

http://www.wiki.elektronik-projekt.de/mikrocontroller/avr/fusebit_tutorial

D35troy3r
07.08.2011, 15:23
An den beiden dürfte nichts verstellt worden sein, ich hab jediglich nur die Fusebits für die Taktquelle geändert.
Bascom gibt mir manchmal die Meldung zurück das es nicht der uC ist der unter $regfile = "m168def.dat" " steht. Diese Meldung kommt eigentlich nur wenn er etwas findet ..mh

Besserwessi
07.08.2011, 18:28
Wenn ich mich richtig erinnere kommt die Meldung von BASCOM auch wenn er nichts erkennt (Signatur 000000). Man könnte es aber man versuchen mehrmals zu lesen - wenn da gelegentlich was anderes als 000000 oder FF FF FF als Signaltur kommt, spricht das für eine nicht zuverlässige Verbindung, ggf. eine Kalte Lötstelle auf der Zielplatine oder ein zu langes Kabel oder Problem mit der Versorgung.

Bei einem nicht zuverlässigen Programmer (bzw. einer schlechten Verbindung) besteht leider die Gefahr, dass auch mal versehentlich RSRTDISBL verändert wurde - dann geht es per ISP nicht. Das könnte man ggf. testen indem man den Stromverbrauch misst, abhängig vom Signal an Reset. Wenn sich da was ändert spricht vieles dafür, dass der Reset noch funktioniert. Die andere gefährliche Fuse (SPIEN) lässt sich angeblich nicht per ISP verstellen.

Besserwessi
07.08.2011, 18:33
Normal gehört ein externer Takt an XTAL1. Wenn das Programm sehr langsam läuft, spricht das dafür, das die Fuse für CLK/8 noch aktiv ist. der µC läuft dann mit nur 1/8 der Taktfrequenz. Entsprechend muss man auch den ISP-Takt weit runterdrehen: bei 1 MHz ext. Takt läuft der µC dann mit 125 kHz und der ISP-Takt darf maximal 1/4 davon, also rund 31 kHz sein.

Die Funktion des Reset Pins kann man bei laufendem Programm noch einfacher testen.

D35troy3r
07.08.2011, 22:19
Der Reset funktioniert eindeutig! Bei jedem testen des Chips fängt er mit dem Program von vorne an.
Seltsamerweise hab ich soeben feststellen müssen das an XTAL1 und XTAL2 der Takt anliegen muss damit der uC läuft.
CLK/8 ist auf alle Fälle aktiv ;). ISP-Frequenz auf 31kHz bzw sogar noch niedriger eingestellt, immernoch keine Antwort. Nur das Program was auf dem Chip ist läuft ab.

Gibt es vlt bessere Programme zum testen des uC als Bascom?

Rone
08.08.2011, 07:26
Hallo!


Ich verwende den myAVR.

Nur haben die leider 3 im Sortiment.

Wenn Du diesen (http://shop.myavr.de/index.php?sp=article.sp.php&artID=42) hier meinst, verfügt dieser über einen Rettungsmodus.

Doku lesen und Dir wird vielleicht geholfen.

Mfg
Rone

D35troy3r
08.08.2011, 08:31
Nein ich benutze diesen myavr usb light -->http://shop.myavr.de/index.php?sp=article.sp.php&artID=200006

D35troy3r
09.08.2011, 12:02
Weiß denn wirklich niemand mehr weiter?
Der Chip läuft doch! Wieso kann ich nur keine Verbindung mehr herstellen?
Der Resetpin ist zu 100% nicht deaktiviert! Woran kann das nun noch liegen?
Ich wollte ungern nur wegen einem Chip eine neue Bestellung aufgeben :(

Searcher
09.08.2011, 12:45
Hallo,

wie stellst Du die ISP Frequenz in BASCOM ein?

Bei meinem Parallelport Programmer richtet sich die Frequenz nach der $crystal Direktive und liegt bei $crystal=125000 bei nur 3600Hz auf denm SCK Pin. (BASCOM Demo V 2.0.5.0)

Also $crystal im Programm setzten, compilieren und versuchen?


Gruß
Searcher

D35troy3r
09.08.2011, 14:07
Die Frequenz stell ich unter "Programer" ein. Mehr hab ich dort nicht getan.
Auf dem Chip dürfte glaub ich $crystal 8Mhz stehen. Umändern kann ich es ja nun nichtmehr.

Rone
09.08.2011, 14:45
Hallo!

Nachdem ich noch nie in Deiner Situation war, würde ich folgendes probieren:

Das Du den µC nicht auslesen kannst ist ja klar.

Leg den Takt an, stell im ProgTool manuell den richtigen Prozessor ein und probier danach die
Fuses auszulesen. Sollte dies gelingen, sogleich die Fuses richtigstellen und schreiben.

Beim LightStick brauchst Du nicht irgendwo versuchen Die ISP Frequenz zu verstellen, funktioniert
nämlich nicht. Der teilt intern die Frequenz in 3 Stufen herunter und versucht so eine Kommunikation aufzubauen.

MfG
Rone

oberallgeier
09.08.2011, 15:05
Hi,
... ...
schlechter Nick -wenn man keine Probleme haben will.Hast Du es mal auf diese Weise probiert (klick hier für mehr) (https://www.roboternetz.de/community/showthread.php/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?p=439933) ?

Viel Erfolg

Searcher
09.08.2011, 15:38
Die Frequenz stell ich unter "Programer" ein. Mehr hab ich dort nicht getan.
Auf dem Chip dürfte glaub ich $crystal 8Mhz stehen.

Das $crystal wird nicht auf den Chip geschrieben sondern teilt dem Compiler unter anderem mit, wie er zB wait Anweisungen übersetzten soll. $crystal hat auch Vorrang vor der der Einstellung, die unter "Compiler" "Communication" "Frequency" eingestellt ist.

Leider weiß ich nicht ob und welche Auswirkungen $crystal bei Deinem USB Programmer auf die ISP Frequenz hat.

Wenn sonst nichts hilft, ein Mini Programm mit $crystal=125000 compilieren vor "Program Chip" Aufruf?

Gruß
Searcher

D35troy3r
09.08.2011, 20:21
Ich danke euch!
Da ich die Hoffnung aufgegeben hatte bin ich schnell zum nächsten Händler und hab mir einen neuen uC gekauft. Zusätzlich einen 4Mhz und einen 8Mhz Quarzoszi.
Ohne großer Hoffnung einfach nochmal ausprobiert ob ich eine Verbindung bekomme wenn ich den 4Mhz Quarz anschließe...und plötzlich geschah das Wunder! Der uC lebte wieder und ließ eine Verbindung zu, gleich die Fusebits zurückgesetzt. :)