PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Takt auf Extern 16MHz gestellt und nun lässt er sich nicht mehr programmieren



Jimmybot
24.10.2012, 21:09
Abend Gemeinde!

Ich habe da ein kleines bis mittlegroßes Problem:

ich habe einen ATmega168PA der mit 16MHz betrieben werden soll. Dachter mir okay... Programm schreiben, Takt auf extern einstellen und programmieren.

Tja... bis zum Takt auf extern einstellen hat es funktioniert. Ab da an lässter der Controller nicht mehr mit sich reden.
Ich benutze AVR Studio 4 und habe dort im Reiter Fuse einfach nur die Clk-quelle als Extern ausgewählt mit 65ms Startup.

Und nun verweigert er alles. Ich kann noch nicht mal die Signatur auslesen. Die Fehlermeldung:

A problem occurred when executing the command. Make sure that you using the correct programming method. Current mode is ISP. See the command output for more info.

The troubleshooting section in the help system, click the Help button below.

Quick Tips: Verify that the device is placed in the correct socket, and that the ISP cable is properly connected. Check that the ISP programming frequency specified on the "Main"page is well 1/4 of the clock frequency of the device. Extra percaution should be made when using the CKDIV fues and/or Clock Perscaler Register (CLKPR) on parts supporting this.



Ja... ISP wird verwendet
ISP-Kabel steckt... im Programmer und Controlerplatine (Konnte ja vorher normal arbeiten)
1/4 von was? Programmerfrequenz, oder vom Controller? Habe mit beiden möglichkeiten rum gespielt und bin nicht weiter gekommen.
CKDIV habe ich probiert, mit und ohne. Aber kann es sein, dass er garnicht übertragen wird, wenn ich noch nicht mal drauf komme?


Im Übringen steht unten ein netter Text beim Programmieren:

Setting mode and device parameters.. OK!
Entering programming mode.. FAILED!
Leaving programming mode.. OK!

so... kann mir kann mir jemand weiter helfen, wie ich den Controller wieder "empfänglich" mache?:pray:

Auslöten ist was doof... ist ein SMD Bauteil 8-[
Und ja... der Quarz ist richtig angeschlossen. Zwichen XTAL1 und XTAL2 und beide wiederum mit 22pF Kondensatoren nach GND.

Den Fuseretter (Klick mich) (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?highlight=fuseretter) habe ich auch versucht. Habe ein Funktionsgenerator genommen... ihn auf Rechteck eingestellt, 30KHz und TTL/CMOS out... hat leider nicht gewirkt.

Torrentula
24.10.2012, 21:40
Jaja das leidige Thema mit 'extern clock'.

Du hast den ATmega so eingestellt, dass er jetzt auf XTAL1 einen clock input z.B. von deinem Funktionsgenerator erwartet. Du müsstest also einen Weg finden ein 16MHz Rechtecksignal auf XTAL1 zu bringen (oder zummindest mal 1MHz).
Eine andere Möglichkeit wäre einen Quarzoszillator zu benutzen (sowas (http://www.reichelt.de/Oszillatoren/OSZI-16-000000/3//index.html?ACTION=3&GROUPID=3174&ARTICLE=13686&SHOW=1&START=0&OFFSET=500&)), welcher dieses Signal auch ohne zutun des µC erzeugt.

Die Einstellung, die du gesucht hast, ist External crystal/resonator high frequency (in der Liste ganz unten, nicht über dem Int. RC oscillator wie du es wahrscheinlich eingestellt hast).
Das Problem ist, dass diese einfachen Quarze nicht einfach so anfangen zu schwingen. Im AVR befindet sich ein Operationsverstärker welcher eben einen Quarz als Rückkoppelelement benötigt, um den Takt für den µC zu generieren. Mit den fuses stellt man den Gain (Verstärkungsfaktor) dieses OPV ein, da man je nach Frequenz einen anderen Verstärkungsfaktor benötigt.

Jimmybot
24.10.2012, 21:52
Okay... danke für die schnelle Antwort.

Also verstehe ich das Richtig, dass mein Quarz mit den Kondensatoren garnicht erst schwingt?
Sprich der µC muss ihn immer anstoßen?

Ich denke mal, dass der Funktionsgenerator die 16MHz hin bekommt. Werde morgen mal das mit den 16MHz ohne externe Quarzoszi. versuchen

Torrentula
24.10.2012, 22:12
Ja das ist richtig, der Quarz ist eben nur ein Rückkoppelelement um im Endeffekt den Takt für den Controller zu erzeugen. Hier ist diese Seite auch sehr gut:
http://sprut.de/electronic/pic/osc/index.htm

Ist zwar für PIC nicht AVR aber prinzipiell funktioniert das bei beiden gleich.

Jimmybot
25.10.2012, 22:30
so... konnte nichts auftreiben, was 16MHz liefert. Aber morgen fahre ich an einen "C" laden vorbei und werde den besagten Quarzoszi besorgen.

ähm... mal davon ausgegangen, dass ich ihn wieder zum "reden" bringen kann... was muss ich einstellen, damit er Controller bei einen 16MHz quarz läuft?

oberallgeier
25.10.2012, 23:43
... ATmega so eingestellt, dass er jetzt auf XTAL1 einen clock input ... erwartet ...Genau so ist es.


so... konnte nichts auftreiben, was 16MHz liefert. Aber morgen fahre ich ...Rate dreimal, warum ich mir wegen eines ähnlichen Problems Gedanken gemacht hatte. Hier ist die Lösung (klick) (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?p=439726&viewfull=1#post439726) - ohne Umweg über den C, mit Bordmitteln die Du schon hast. Bitte beachte den Hinweis auf einen Widerstand, der ist sinnvoll, aber nicht unbedingt notwendig . . . hier (nochn Klick). (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?p=439933&viewfull=1#post439933)

Jimmybot
26.10.2012, 07:40
[...]

Rate dreimal, warum ich mir wegen eines ähnlichen Problems Gedanken gemacht hatte. Hier ist die Lösung (klick) (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?p=439726&viewfull=1#post439726) - ohne Umweg über den C, mit Bordmitteln die Du schon hast. Bitte beachte den Hinweis auf einen Widerstand, der ist sinnvoll, aber nicht unbedingt notwendig . . . hier (nochn Klick). (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?p=439933&viewfull=1#post439933)

Ja... und dort hattes du das Signal mit nem Oszi aufgezeichnet... was da abgelesen habe engtsprach eine Frequenz von ca. 30kHz und die habe ich mit einem Funktionsgenerator auf XTAL1 gebracht... hatte keine Wirkung...

oberallgeier
26.10.2012, 08:37
... ca. 30kHz ... Funktionsgenerator auf XTAL1 gebracht ... hatte keine Wirkung ...Ohh ohhh. Dazu fällt mir leider dann nix mehr ein, ausser dass vielleicht pannenhafterweise noch´n anderes fusebit geändert wurde. BTW: ich nehme mal an, dass Du diesen Fusecalculator kennst (http://www.engbedded.com/fusecalc/) !?!?

Jedenfalls viel Erfolg.

Thomas E.
26.10.2012, 08:58
Ja... und dort hattes du das Signal mit nem Oszi aufgezeichnet... was da abgelesen habe engtsprach eine Frequenz von ca. 30kHz und die habe ich mit einem Funktionsgenerator auf XTAL1 gebracht... hatte keine Wirkung...
Welche ISP-Frequenz hast du bei dem 30kHz-Versuch verwendet? Bedenke, du solltest ungefähr 1/4 der Taktfrequenz des Controllers als ISP-Takt verwenden.

Jimmybot
06.11.2012, 17:40
So... Zeit gehabt wieder an mein Problemweiter zu arbeiten.

Nun läst AVR-Studio max. 1,8MHz einstellen. Bei 16MHz betrieb muss aber 4MHz eingestellt werden...

Habe den Quarzoszi auf ein Steckbrett gesteckt und dann den Takt auf XTAL1 geführt... ohne Wirkung... -,-

Hat jemand ne Idee?

Hubert.G
06.11.2012, 20:29
Den Quarzoszi mit Spannung versorgt und GND mit dem GND von µC verbunden?
Die Programmierfrequenz darf maximal 1/4 der Taktfrequenz sein, weniger macht nichts.

Jimmybot
06.11.2012, 21:04
Okay... die GNDs hatte ich nicht verbunden... korregiere ich demnächst.

Aber mal ne Frage: wie änder ich ein Programm auf den Controller, wenn er mit 16MHz läuft?
Den wenn ich ja in AVR Studio die Programmierfrequenz nicht auf 1/4 des Takt einstellen kann wird es schwer, oder wie macht ihr es?

Hubert.G
07.11.2012, 08:40
Die Programmierfrequenz darf max. 1/4 der Taktfrequenz sein.
Es ist aber kein Problem den Controller der mit 16MHz läuft mit einer Programmierfrequenz von 125kHz zu programmieren.

Jimmybot
07.11.2012, 11:03
Die Programmierfrequenz darf max. 1/4 der Taktfrequenz sein.
Es ist aber kein Problem den Controller der mit 16MHz läuft mit einer Programmierfrequenz von 125kHz zu programmieren.

Okay... ich bin jetzt einwenig verwirrt.
Die Taktfrequenz ist die 16MHz, oder verwechsel ich was?

HeXPloreR
07.11.2012, 11:49
...
Programmierfrequenz darf maximal 1/4 der Taktfrequenz sein, weniger macht nichts.

Das heißt das dann die Programmierfrequenz nicht über 4MHz sein darf bei 16Mhz Quarz, weniger machts nichts - also auch 125kHz ist in Ordnung.

Hubert.G
07.11.2012, 15:26
Genau so ist es. Bei einem neuen Kontroller, der mit 1MHz Takt läuft, sollte man demnach mit der Programmierfrequenz unter 250kHz sein. Also sind die 125kHz standardmäßig immer gut.

Jimmybot
14.11.2012, 20:48
Bin gerade dabei mich wieder dem dummen Fehler zu wittmen.

Dabei habe ich den Fehler mit absicht auf auf anderen Controller wiederholt und nen zweiten Controller habe ich dann als Takt geber programmiert.
Tja... den Controller, wo ich mich mit absicht aus gesperrt habe läuft wieder...

Aber der Controller, wo ich mich ausversehen ausgesperrt habe, will immer noch nicht.

Frage:
Könnte der 16MHz Quarz der an XTAL1 angeschlossen ist das Ganze stören?

HeXPloreR
15.11.2012, 08:43
Wie wäre es denn wenn Du den Quarz dann einfach mal entfernst, wenn Du schon vermutest er würde stören. Wenn das also nicht unmöglich ist. Hast Du den Quarz nicht auch selbst angeschlossen. Außerdem...wenn es ein Quarz ist, muß der auch von XTAL2 entfernt werden - dort müsste er ja vorher hoffentlich auch dran gewesen sein.
Vielleicht geht es ja dann.

Hubert.G
15.11.2012, 09:08
Die Kondensatoren an XTAL1 und 2 sind sicher auch richtig? Sonst vorsichtshalber auch entfernen.