PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega32 und 16MHz Quartz



ElchiMtr
23.02.2011, 09:17
Hey Freunde,

Ich wollte fragen mit was ihr die FUSE bits einstellt.
Ich habe es einmal mit dem AVR-Studio gemacht der µC lief dann auch ne genze weile mit 16 Hz, allerdings hab ich ihn wohl mit der Außenbeschaltung geschrottet.
Nun wollte ich einen neuen einsetzten und Stellte die Fusebits wieder um und nun machter nix mehr.
Meine zweite Frage ist daher, hatte schon mal jemand Probleme wenn er das AVR-Studio benutzt hat um die Fuses zu ändern ?

und als drittes was bedeuten eigentlich die vielen Unterschieldichen einstellungen für

Ext.Crystal/Resonator High Freg: Start-up time: 258 CK + 64ms

was bedeuten die 285 CK ? und die 64ms ?
das hab ich noch nicht so ganz verstanden.

vielen dank für eure Hilfe.

BMS
23.02.2011, 10:53
Hallo,
diese CK + 64ms geben soweit ich weiß eine Verzögerung beim Start an. Also 285 CK (Taktzyklen) plus 64 Millisekunden.
Mit AVR Studio hab' ich noch nicht gearbeitet. Habe bisher Ponyprog verwendet, um die Fuses einzustellen. Seit ich aber über USB flashe, ist das ein Job für avrdude (in avrgcc/WinAvr integriert).
Bei den Fuses muss man höllisch aufpassen, in manchen Programmen werden die Bits invertiert (immer genau falsch herum) dargestellt. Oder man schaltet versehentlich den ISP ab. Da kann man schnell mal falsch klicken und der µC lässt sich nicht mehr ansprechen... Lieber immer ein paar Controller als Reserve kaufen ;)
Dafür gibt es sog. Online Fuse Calculators, die einem die Fuses "ausrechnen".
Siehe Engbedded Fuse Calculator (http://www.engbedded.com/fusecalc)
Grüße,
Bernhard

askazo
23.02.2011, 11:22
Ich stelle die Fuses immer mit dem AVR-Studio ein und hatte bisher noch keine Probleme damit. Wenn Du sicher bist, dass Du die Fuses passend zu Deiner Taktquelle richtig eingestellt hast, stimmt wahrscheinlich was mit der Taktquelle selber nicht.

Was die Start-Up-Time betrifft:
Die Taktzyklen (die 285 CK aus Deinem Beispiel, CK= Clock Cycles) dienen dazu, beim "Hochfahren" nach einem Power-Down oder Power-Safe eine bestimmte Anzahl an Taktzyklen abzuwarten, bevor der erste Befehl ausgeführt wird. Damit kann gewährleistet werden, dass der Taktgeber stabil arbeitet, bevor der Prozessor anfängt zu arbeiten.

Die Echtzeit hintendran ist eine zusätzliche Wartezeit, die über den Watchdog-Timer generiert wird. Diese wird nur nach einem Reset ausgeführt (also nicht nach einem Power-Safe) und dient dazu, der Versorgungsspannung ein bißchen Zeit zum stabilisieren zu geben.

Ich stelle fast immer die längste Startup-Time ein, da mir die paar Millisekunden nicht weh tun und ich damit dann immer stabile Verhältnisse habe, bevor mein Programm los läuft.

Gruß,
askazo

hardware.bas
23.02.2011, 12:22
BASCOM hat alles drin. ElchiMtr, Dein Prozessor lief eine ganze
Weile mit 16 Hz? Was war denn das für eine "Echtzeitanwendung"?
VG Micha

ElchiMtr
23.02.2011, 12:47
nein ich experimentiere zur Zeit auf einem breadboard, ich betreibe das ganze nur als Hobby. Mein Ziel ist es wie von vielen hier einen kleinen Roboter zu bauen. Ich hatte auch einen ASURO, aber nun beginnge quasi noch mal bei NULL.
Wenn es das AVR-Studio nicht Schlud ist und ich die Schaltung auch nicht geändert habe, was könnte es dann noch sein?

ich hab auch einen anderen Quarz und andere Kondensatoren getestet das brachte auch keinen Erfolg.
Etwas anderes kann ja an der Taktquelle nicht kaputt gehen.

ratlose Grüße

BMS
23.02.2011, 14:29
Hallo,
kannst du die Fuses noch einmal auslesen, die du gesetzt hast? Wenn ja, welche genau sind das?
Ist der Controller überhaupt ansprechbar, also wird er von deinem Programmer erkannt? Kannst du ein Programm zum Controller übertragen?
Wenn das nicht klappt, ist eventuell die Übertragungsgeschwindigkeit zu hoch (oder der Atmega läuft zu langsam).
Wenn du ein Oszilloskop hast, kannst du einmal an den XTAL-Pins messen, ob da ein Signal im Mhz-Bereich anliegt? (Das Oszilloskop belastet allerdings auch).
Oder hast du noch einen Ersatz-Controller? Sonst hält man sich zu lange an so etwas auf.
Grüße,
Bernhard

ElchiMtr
23.02.2011, 17:26
Leider reagiert der Controller auf gar nix mehr.

Nen Oszi hab ich leider auch nicht zur Verfügung.
Einen neuen Controller nehmen will ich auch nicht sofort, weil ich das erst getan habe. Der "neue" ging noch als er noch mit dem internen takt lief, als ich auf extern gewechselt hab ging er nicht mehr. Ich hatte ein "LED-Blinker Testprogramm" drauf.

Wenn ich nicht rausfinde wo das problem liegt werde ich sicher noch mehr unbrauchbare MEGAS erzeugen.

schmeuki
17.03.2011, 08:02
Hallo
Ich habe ein Problem. Also ich habe ein JTAGice MKII und benutze AVR Studio 5.0 - habe einen ATMEGA32 dip über einen 10-poligen JTAG angeschlossen und beschrieben ( .hex File aus dem Internet) nun noch eben über die Fuses den richtigen Mhz Wert eingestellt und es funktioniert. Hier für danke ich schon mal für die Tipps im Forum.

Nun das Problem . Es sind bei einem Bausatz baugleiche ATMEGA32 mitgeliefert morgen auf der eine Software ist - diese kann ich nicht auslesen . Ich verdrahte beide ATMEGA gleich und auch sonst habe ich laborbedingungen . Jemand ne Idee ? Achso an die Fuses bzw Lockbits oder so kann ich nicht zugreifen ! Ist der Chip vllt vom Hersteller gesperrt worden oder oder oder ??? Ich hofffe auf Antwort

Gruß Stephan

Hubert.G
17.03.2011, 14:14
Firmen wollen nicht nur die µC sondern in erster Linie die Software verkaufen. Es werden daher mit großer Wahrscheinlichkeit die Lockbits gesetzt sein.
Ein auslesen ist in diesem Fall nicht möglich.

schmeuki
17.03.2011, 14:47
Der Witz ist ja dass eine neue bessere Software zum Download bereit steht und man dort die .hex File sehen kann. Kann ich den Controller komplett reseten ? So dass ich ihn wieder beschreiben kann ?
Gruß Stephan

Hubert.G
17.03.2011, 14:50
Bei einem Reset-Device wird der Kontroller gelöscht und die Lockbits zurückgesetzt. Es bleiben nur die Fusebits erhalten.
Dann kann wieder ganz normal beschrieben werden.

schmeuki
18.03.2011, 08:57
Wie würde dies Praktisch laufen ?? Mein Reset Eingang ist negiert.
Einfach Betriebsspannung auf den Reset Eingang ?

Gruß Stephan

BMS
18.03.2011, 09:27
Hallo,
der Programmieradapter kümmert sich um den Reset-Pin, du selbst musst da nicht nachhelfen. ;)
Um Missverständnissen vorzubeugen: Ein normaler "Reset" heißt nur, der Controller beginnt mit seinem Programm wieder von vorn. Gemeint ist hier aber, den kompletten Speicher des Controllers zu löschen ("Erase") und danach neu mit deinem hex-File zu beschreiben.

Ich kenne das AVR Studio jetzt nicht, aber schau mal nach Begriffen wie Erase Device / Erase Chip o.ä.

Grüße, Bernhard

schmeuki
18.03.2011, 09:42
Lässt sich eine Löschung nicht extern herbeiführen ?? Das Programm erkennt das "Device" nicht also kann ich nicht löschen.

BMS
18.03.2011, 10:10
Dann brauchst du vielleicht einen HV-Programmer.
http://www.mikrocontroller.net/articles/AVR_HV-Programmer
Du überträgst über JTAG, richtig? Kannst du auch über ISP programmieren? Vielleicht wurde JTAG per Fuse deaktiviert. :-k

schmeuki
18.03.2011, 10:31
Ja über JTAG .
Wie muss ich ihn denn dann anschließen wenn ich es über ISP versuchen will ?

schmeuki
18.03.2011, 11:20
Also wenn ich den ATMEGA32 über ISP anschließe passiert auch nichts. Gleiche Fehlermeldung . Gibt es die Möglichkeit die Kontroller zu flashen ohne dass sie erkannt werden ? 5v am Reset für 5 Minuten oder so was ?

BMS
18.03.2011, 14:00
Hallo,
erst einmal ist der JTAG und ISP nicht zueinander kompatibel. Die Stecker können zwar gleich aussehen, aber den Programmieradapter muss auch entsprechend dafür ausgelegt sein.

Hast du zufällig WinAVR/avrgcc installiert? Dann könnte man noch versuchen, den Chip über avrdude löschen, Fehlermeldungen lassen sich dabei auch ignorieren.
Wenn das auch nicht klappt, der Controller weder ISP noch JTAG annimmt, dann sind wohl per Fuse beide Schnittstellen deaktiviert, der Hersteller will dadurch wahrscheinlich sein Programm schützen.

Reset an 5V bedeutet, der Controller arbeitet ganz normal. Reset auf 0V bedeutet dass der Controller seine Programmausführung anhält und erst wenn wieder 5V am Reset anliegen, sein Programm nochmals von vorn beginnt. Der Speicher lässt sich damit nicht löschen.
Allerdings arbeiten die HV-Programmer mit 12V am Reset-Pin. Diese Spannung allein dort anzulegen, wird aber nicht ausreichen um den Speicher zu löschen. Die HV-Programmer werden dazu noch ein paar Bits an den Controller übertragen, so genau kenne ich mich damit aber nicht aus!

Ich vermute, dass es darauf hinausläuft, dass du dir einen "frischen" Atmega kaufst, den in die Schaltung steckst und das Hex-File drauflädst (und die Fuses dabei so setzt, dass der Controller weiterhin über JTAG oder ISP ansprechbar bleibt).

Grüße, Bernhard

Richard
18.03.2011, 14:24
Der Witz ist ja dass eine neue bessere Software zum Download bereit steht und man dort die .hex File sehen kann. Kann ich den Controller komplett reseten ? So dass ich ihn wieder beschreiben kann ?
Gruß Stephan

Mit Hoch Volt Programmierung sollte das gehen, ebenso wie auch falsch gesetzte Fuses wieder "geradebiegen".
Allerdings können das die wenigsten Programmer . Mein STk500 kann das b.B. :-)

Hier einmal studio 4 mega16 mit 16MHz Fuse Einstellung.
https://storage.driveonweb.de/dowdoc/1867b7c1f4c11873c6d7141f43148d14.JPG

Gruß Richard