PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega32+16MHZ Standartquarz



timo1105
20.11.2006, 20:38
Hallo,

Ich bin ein wenig am verzweifeln.
Ich habe am Wochenende meine Bauteile bekommen, die ich brauche um eine Grundschaltung mit einem Mega32 Controller aufzubauen.
Soweit so gut, ich habe das getan, nach der Anleitung im RN-Wissen Bereich "AVR-Einstieg leicht gemacht". Alles hat funktioniert bis ich den Quarz anschloss und die Einstellungen in Bascom umgestellt habe.

Ich ging folgendermaßen vor:

Ich habe die Betriebsspannung des Board angeschaltet-

Das vorher geschriebene Programm lief noch, bzw. war auf dem Chip drauf (in dem Programm u.a. $crystal= 1000000)

Dann habe ich auf "fusebits" gedrückt und habe das JTAG deaktiviert und folgenden Quarz eingestellt:
ich kann mich erinnern, dass es ein ext. Low-Freq. Oscillator war. Ich habe das getan, weil mir der Vater meiner Freundin erzählt hat, dass ich ersteinmal einen "niedrigen" wählen soll, weil die Schaltung soweiso keine 16MHZ schafft?! Ich würde den Quarz sozusagen "abhängen" bzw. nicht mehr einfangen können.

Danach habe ich im Programm $crystal = 2000000 gesetzt, wegen der Empfehlung ersmal niedrig anzufangen.

Dann wollte ich das Programm auf den Chip laden. Jedoch sagte mir das Programm dann" Could not identify Chip ID..."

Klasse. so ein mist aber auch.

Wie muss ich vorgehen und was habe ich falsch gemacht?
Vielleicht kann mir jemand weiterhelfen.

Ist zwar schade aber die nächsten beiden Mega32'er sind schon unterwegs zu mir ;)

Danke


Timo

Lenox
20.11.2006, 20:44
Damit hab ich auch angefangen, hatte nur probleme, hab jetzt ne einfache Grundshaltung mit nem Quarzoszillator, da passiert auch nichts wenn du die Fusebits mal falsch hast, der AVR "schmiert" nicht ab. Quarz ging bei mir auch nicht, kA warum. Quarzoszillator bevorzuge ich seit dem, einfach an GND VCC und dan XTAL1 und schon geht es.

Bin auch Anfänger ;)
Mfg
Lenox

PS: Hier der Schaltplan, musst halt nur gucken wo bei dir die endsprechenden Pins sind, funktioniert einwandfrei! Datenblatt oder googeln.
PS²: Versuchs mal mit dem Quarzoszillator konnte dadurch schon oft mein AVR wieder zum leben erwecken, da er den Takt sozusagen von allein vorgibt. hatte den fehelr mim neukauf auch gemacht und jetzt 2 funktionierende AVRs hier :D
http://dastefan.da.funpic.de/AVR/Avr-schaltplan-1.gif

timo1105
21.11.2006, 10:16
hi!
danke für den hinweis!

Nur eine Frage habe ich da: der von dir genannte quarzoszillator, was ist das genau? was ist der unterschied zum normalen quarz, welche einstellungen muss ich dann im programm einstellen?
hat der quarzos. dann 4 anschlüsse?
hast du da auch 16MHZ?:)

vielleicht dumme fragen aber auf die schnelle verstehe ich das noch nicht, sorry.

mfg
und danke
timo

SprinterSB
21.11.2006, 11:30
Ein Quarz-Oszillator enthält einen Quarz zusammen mit allem drumrum wie Treiberstufen, Temperatur-Kompensation etc. IdR arbeiten sie genauer als Quarze (durch die Kompensation, bekannte parasitäre Kapazitäten, etc), saugen aber mehr Strom und sind teurer und größer als Quarze.

Der Ausgang ist meist TTL-Kompatibel, die Dinger brauchen Versorge (oben zB Vcc = 5V) und passen in einen DIL-Sockel.

Wenn du die Fuses auf "low freq xtal" hast, kannst du versuchen, ihn mit einem 32kHz Uhrenquarz wieder wachzuküssen. Evtl geht auch ein Quarzoszi oder zusammengestöpselte Taktschaltung. Mit diesem Takt arbeitet der AVR aber recht langsam, und der Progger muss diese langsame Geschwindigkeit abkönnen.


Ich habe das getan, weil mir der Vater meiner Freundin erzählt hat, dass ich ersteinmal einen "niedrigen" wählen soll, weil die Schaltung soweiso keine 16MHZ schafft?! Ich würde den Quarz sozusagen "abhängen" bzw. nicht mehr einfangen können.

Seltsame Ratschläge... Einen low-Freq-Quarz nimmt man zB dann, wenn man ne simple Uhr mit guter Ganggenauigkkeit bauen will und es aufs Stromsparen ankommt. Daß dein AVR mit 16MHz rennt bedeutet nicht, daß du die Schaltung, die dran hängt, mit 16MHz traktierst. Für die meisten Berechnungen dürfte ein low-Freq deutlich zu langsam sein.

Ein ATmega32 hat einen internen RC-Oszillator eingebaut, der per Werkseinstellung auf 1MHz taktet und den AVR versorgt. Du brauchst zum Test und für einfache Schaltungen also keinen Quarz oder was an den Fuses zu drehen. Mit Fuse-Anpassung bekommst du den internen RC-Oszi immerhin auf 8MHz. Den Quarz brauchst du, um die maximale Leistung auf dem AVR rauszuholen oder wenn dir der interne Oszi zu ungenau ist (Uhrenbau).

Um den µC mit der obigen Schaltung da rauszuholen würd ich zur Sicherheit ein paar kΩ zwischen XTAL1 und external Clock hängen. Ob er, wenn auf "low freq XTAL" eingestellt", auch mit höherer Frequenz anzuschieben ist, ist ein Versuch wert.

timo1105
21.11.2006, 13:54
Hallo!
danke für die Antwort!

ich habe jetzt doch nicht die Möglichkeit einen 16MHZ OSZI zu bekommen.

Irgendwie muss es doch gehen, wenn ich meinen ATmega32 bekomme, mit einem normalen 16MHZ Quarz die grundschaltung zu "takten".

Wie muss ich genau vorgehen? In etwa so:

-Quarz einbauen/einlöten mit Kondensatoren

-programm auf dem Atmega32 "reseten"

-neues Programm übertragen wo $crystal = 16000000 vorkommt

-Fusebits umstellen

Fragen dazu:
auf was muss ich die Fusebits stellen, da gibt s so viele Möglichkeiten?! 001111 oder welches 8-[

muss ich das JTAG deaktivieren?

soll ich erst das Programm übertragen und dann die Fusebits umstellen oder anders herum?


Eine Frage wäre aber noch und zwar ob ich das ganze auch mit einem 20 oder 12 MHZ Oszillator betreiben könnte. Warum immer 16MHZ?
Der würde bei Conrad aber 5€ kosten und das ist ein bisschen happig finde ich. (Reichelt: 1,50€)


Das wars dann erstmal, vielleicht hat ja jemand einen link auf lager, wo das ganze mit dem Quarz genau erklärt ist.

Dankeschön

Timo

Lenox
21.11.2006, 14:02
Hi, 16 Mhz ist die höchste taktrate des uC deshalb.
ich hab einfach den Quarz-Oszillator mit 5 V (VCC & GND) versorgt, und dann an Xtal1 des uCs angeschlossen.
Beiden Fuse hab ich "external Clock" ausgewählt.
hast du kein Elektronikladen in der Nähe? ;) hab leider nur den einen Oszi da!
Mfg
Lenox

wkrug
21.11.2006, 14:28
Wenn Du auf Low Freq ext. Oszillator gefused hast hift es auch nicht wenn Du in Bascom die Frequenz umstellst.

Die Fuses sin halt nun mal so eingestellt, es muß Zwingend ein Oszillator an den XTAL1 Anschluß ran. Da die Frequenz unkritisch ist kannst Du dir ja aus einem Gatter, Widerständen und Kondensatoren einen einfachen RC Oszillator aufbauen?!

Erst dann kann der Chip wieder mit ISP Programmiert werden.

Mei Tipp- versuch erstmal die Fuses wieder neu zu Proggen (z.B. mit Ponyprog) und dann erst das neue Programm in den Prozessor zu spielen, dann dauert das Proggen auch nicht mehr so lang.

Hubert.G
21.11.2006, 14:42
Dieses Programm zum Fuses einstellen hat sich anscheinend immer noch nicht herumgesprochen. palmavr.sourceforge.net/cgi-bin/fc.cgi

wkrug
21.11.2006, 17:10
Das Tool kannte ich tatsächlich noch nicht - erspart aber eine Menge Suchzeit in den Datenblättern

SprinterSB
21.11.2006, 17:14
Dieses Programm zum Fuses einstellen hat sich anscheinend immer noch nicht herumgesprochen.
Vielleicht weil es in FF nicht funktioniert sondern nur in IE?

Hubert.G
21.11.2006, 19:20
@SprinterSB kann ich nicht nachvollziehen

krulli
21.11.2006, 19:34
Bei mir funktioniert es auch im FF und im Opera einwandfrei

timo1105
23.11.2006, 17:14
Hallo,

Danke für die Antworten.

Ich weis leider immer noch nicht, welche externe Taktquelle ich wählen soll.

da sind so viele verschiedene ext. Os. z.B: 16K Startuptime...usw.

Welchen muss ich genau wählen, wenn ich einen Quarz (16MHZ) anschließen will?
sind das dann beim Oszillator die gleichen Einstellungen?

Wie baue ich mir aus einem Gatter (was ist das?:) ) und Widerständen einen Oszillator?

Danke!


Timo

Lenox
23.11.2006, 17:40
16 Mhz Oszillator = external Clock auswählen.
Kauf dir besser nen fertigen, ist fürn anfang leichter.
In Bascom heißt es dann
$crystal = 16000000
Aber es geht auch theoretisch ohne, dass dient nur dazu das Bascom "weiß" wie der AVR getaktet ist, und das Programm auch richtig compiliert wird.

Meld dich einfach mal in ICQ

Mfg
Lenox

Urmeloid
23.11.2006, 20:14
Hallo zusammen.
..bin gerade neu in diese Forum gerutscht und hoffe auf spannende Diskussionen und Erkenntnisse!

z.Z. wage ich mich ebenfalls per PonyProg an eine 16MHz-Quarz-Unterstuetzung. Problem: der Atmega8 ist korrekt auf den exteren Takt eingestellt und arbeitet jetzt schneller als vorher mit dem 1Mhz interem Takt (freu, jubel). Der 'aufgestiegene' Atmega8 ist jetzt für Ponyprog unsichtbar - trotz eingelötetem 1Mhz-Quarz im Programmierboard kann ich jetzt nicht einmal die Fusebit-Konfiguration auslesen. Warum eigentlich nicht? Was interessiert Ponyprog per ISP an LPT1 ob der Atmega während des Programmierens mit externem Quarz oder mit dem internen funzt?

Wollt heute schon den Quarz gegen einen Ozi-Quarz austauschen, aber verstehen kann ich das nicht!

Gibt es nicht die Möglichkeit, per Kurzschluss oder so den Atmega wieder auf Fabrikwerte zu resetten? Dann könnte ich mir den (5Euro Treuen) 1Mhz Oziillator an XTAL1 sparen.

Lenox
23.11.2006, 22:16
Hi,
versteh dich nicht ganz, wen ndu ihn auf 16 Mhz gesetten hast kannst du ihn doch nicht mit einem 1 Mhz Quarz betreiben?

Urmeloid
23.11.2006, 23:12
Hallo Lenox -
zunächst einmal schönen Dank für die schnelle Nachfrage.

Ich habe einen Atmega8. Diesen habe ich per ponyprog auf
CKOPT = Häkchen,
CKSEL3 = kein Häkchen,
CKSEL2 = kein Häkchen,
CKSEL1 = kein Häkchen,
CKSEL0 = kein Häkchen
auf externen Quarz gesetzt.
Von der Möglichkeit, irgendwo die Frequenz auf 16Mhz zu stellen habe ich noch nichts gelesen. Den internen Oszi kann ich auf 1,2,4 und 8Mhz einstellen, aber so wie ich das verstehe hängt bei externem Quarz (ich verwende KEINEN QuarzOszillator sondern einen 16Mhz + 2 Kondensatoren).
die Taktfrequenz allein von dem extrenen Quarz ab - also warum sollte ich einen auf externen Quarz konfigurierten Atmega nicht mit einem 1MB Quarz betreiben können.

Erst schiebe ich mein Programm bei Werksseitigem 1Mhz-intern-Takt rein,
dann setze ich die Fuse-Bits auf Externen Quarz und die Schaltung funzt dann auch. Nur das Neuprogrammieren klappt nicht, weil der Ponyprog die
Secure-Bits nicht wieder einlesen kann. Vorher habe ich die Programmier-Schaltung mit einem 16Mhz-Quarz versehen - auch da hat Ponyprog den "Device missing or unknown device (-24) Fehler geworfen.

Werde versuchen, mit einem 'sauberen' Atmega (noch 1Mhz interne Taktfrequenz) den XTAL1 zu beschalten, da ich vermute, dass ich irgendwie nicht doch auf externen Quarz-OSZILLATOR statt Quarz-Resonator konfiguriert habe (obwohl der Atmega8 ja wunderbar mit
dem 16Mhz-Resonator läuft)...

Ich habe nicht wirklich eine Ahnung, warum Ponyprog den Atmega8 nach dem Setzen der Fuse-bits nicht mehr wiederfindet. Ansonsten ist der Atmega8 ein feiner, unkomplizierter Baustein mit einer sehr guten Compiler-Unterstützung.

Lenox
24.11.2006, 13:11
hmm sorry aber mit Ponyprog hab ich noch nichts gemacht, bin ja selber einsteiger!

Urmeloid
28.11.2006, 00:06
Hallo Lenox,
das Problem habe ich jetzt in den Griff bekommen - ich bin davon ausgegangen dass bei einem extern getakteten Atmega die Geschwindigkeit des Quarzes egal ist - darum hab ich einfach einen 1mhz-Quarz genommen, der gerade so herumlag. Irgendwie scheint der Atmega aber eine groessere externe Frequenz (>=4Mhz schätze ich) zu brauchen. Nach Einbau eines 16Mhz Quarzes auch auf dem Programmiert-Board konnte Ponyprog die Fusebits korrekt auslesen und
wider setzen....Der Atmega ist der einfachste Microcontroller, den ich kenne - er hat zwar keinen eingebauten USB-port, aber das ändert sich bald bestimmt in der Familie, oder es kommt ein nettes Protoboard raus.

wkrug
28.11.2006, 07:44
Mit Ponyprog und dem internen 1MHz Oszillator an einem Attiny12 hatte ich auch schon mal Probleme.
Die Fusebits ließen sich zwar verstellen.
Das Programm ließ sich aber erst downloaden als auf externen Quarz (4MHz) umgefused wurde.

Anscheinend gibts bei 1MHz Taktfrequenz da doch ein paar Probleme.
Ob das an Ponyprog, dem PC oder der Druckerschnittstelle liegt kann ich leider auch nicht sagen.