mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Studio und STK500


Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe mal eine kleine Frage. Wenn ich im AVR Studio auf den
AVR-Button(Connect to AVR Programmer) klicke, dann gelange ich ja in
die Einstellungen für den AVR. Nun möchte ich dort gerne einen externen
Takt festlegen und zwar "genau" 1 MHz. Was muss ich dazu alles tun?
Ich habe bis jetzt die Fusebits auf Ext.Clock gestellt(Startup-Time 6CK
+0ms),dann in "Advanced" den Oszillator auf 1 MHz calibriert. Außerdem
habe ich die Jumper auf dem STK500 folgendermaßen gesetzt: XTAL1 mounted
und Oscsel auf PIN 1 und 2. Ist das auch richtig, wenn man eine externe
1 MHz Frequenz benutzen möchte?

Nun meine anderen Fragen:
1.Muss ich den Value vom Oszillator Calibration Byte in eine bestimmte
Adresse schreiben, wenn ja in welche und Flash oder Eeprom?
2.Muss ich auf "Board" auch noch etwas umstellen? Ich verstehe
nämlich noch nicht ganz wofür dort nochmal die STK500
Oszillatorfrequenz geändert werden kann.

Ich hoffe, daß mir jemand weiterhelfen kann. Nach lesen des Manuals und
des Datenblattes bin ich nur noch verwirrter und weiß nicht genau was
ich nun wie tun muss um die Frequenz zu erzeugen.

Freue mich auf eure Antworten!
Hoffe habe meine Fragen verständlich ausgedrückt.

Gruß Marian

Autor: Hannes Lux (hannes)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du am AVR etwas "verstellen" willst, dann geschieht das über die
Fuse-Bits. Stell dir diese als einen Satz "DIP-Schalter" vor, die du
nur mit der Programmiersoftware über Programmiergerät erreichst (also
nicht aus deinem Programm im AVR-Flash).

Um diese sinnvoll einstellen zu können, hilft nur, im Datenblatt des
jeweiligen AVRs das Kapitel über die Fusebits zu lesen und zu
verstehen. Rätselraten hilft da nicht, konzentriere dich auf das, was
du ändern willst und lass alles Andere so wie es ist.

Denke immer daran, dass eine "programmed Fuse" 0 ist und eine
"unprogrammed Fuse" eine 1 ist. Das hat technische und historische
Gründe und wird wegen der nachwachsenden Generation nicht verändert
werden, es lohnt sich also nicht, dagegen zu protestieren.

Du fragst nach dem Calibrieren des RC-Oszillators.
Das Problem dabei ist, dass die Calibrationsbytes vom Hersteller
dauerhaft in den Signaturebereich (H-Bytes) des AVRs geschrieben sind
und da nur ein "Programmiergerät" mit seiner (PC-) Software heran
kommt.

Um den Oszillator zu calibrieren, muss aber die im Flash des AVRs
befindliche AVR-Software (alsi dein selbstgeschriebenes Programm) das
Byte in das Register OSCCAL schreiben. Dein USER-Programm kann aber den
Signature-Bereich nicht auslesen...

Bei neuen AVRs ist das Signature-Byte zusätzlich in der letzten
Flash-Zelle (L und H) gespeichert, geht aber beim ersten Löschen
verloren.

Ich benutze auch die letzte Flash-Zelle (L-Byte) und schreibe das vom
Programmer ermittelte Calibrationsbyte in diese letzte Zelle. Das
AVR-Programm ruft dann in der Reset-Routine (Initialisierung) die
Calibrationsroutine (Anhang) auf, wodurch das Byte aus dem Flash geholt
wird, auf Plausiblität geprüft wird und (falls gültig) in das
OSCCAL-Register geschrieben wird.

Es gibt auch andere Lösungen, aber da ATMEL die letzte Flash-Zelle
nutzt, mach' ich das auch so...

Beim Brennprogramm des AVR-Studio muss man leider bei jedem Typwechsel
die Flash-Adresse neu ausrechnen (blöd gemacht, zu diesem Brennprogramm
hätte ich sowiso schon eine lange Liste mit Verbesserungsvorschlägen!),
meine Eigenbau ISP-Software (in QBASIC) macht das automatisch bei jedem
Löschen.

...

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort. Leider kann ich kein Assambler und programmiere
nur in C. Deshalb verstehe ich deinen Code nicht so ganz und kann ihn
auch nicht in C umwandeln...d.h. ich weiß immernoch nicht, wie ich mein
Oscsel-wert in das Oscal-Register schreibe, damit mein AVR endlich mit 1
MHz betrieben wird.

Nochmal zum Verständnis: D.h ich muss im AVR-Studio nichts weiter
umstellen außer die Fusebits auf Externe Clock zu stellen und den
Oscsel-Wert ins Oscal-Registerschreiben um dann einen extern
generierten Takt von 1 MHz zu bekommen?

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du einen externen Takt benutzt, nützen dir die Kalibrierungsbits
gar nichts. Die sind nur für den ansonsten recht ungenauen internen
Oszillator.

Bei einem externen Clock mußt du schon die Quelle dieser Clock so
einstellen, daß du die gewünschte Frequenz hast.

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau das ist mein Problem! Ich weiß nicht wie ich mit dem AVR Studio
dem STK500 klar mache, das er dem µC einen 1 MHz Takt gibt. Ich
versuche halt mit Uart ein paar Zeichen an meinen PC zu senden, aber da
kommt immer nur wirres Zeug an und ich denke das es an dem Takt liegt!

Autor: Togger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Marian,
"extern" setzt einen externen Quarz vorraus, wichtig!!!
Die Genauigkeit kommt also vom Quarz, die verschiedenen
Einstellungsmöglichkeiten dienen also vermutlich der Grobanpassung im
AVR (Filter etc.).
Wozu die verschiedenen "Startuptimes" sind weiss ich nicht, hab schon
alle möglichen probiert, gab nie Probleme.
Vielleicht weiss dazu jemand mehr!?

Nochmal: wenn du auf extern umstellst MUSS ein Quarz montiert sein,
sonst kommst nach dem Setzen nicht mehr an den Chip!!!

lg Ralf

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha...aber es gibt doch einen software generierten Takt oder nicht? Was
ist denn sonst "Onboard software clock signal"? Es gibt ja 3
verschieden möglichkeiten einen externen Takt zu nutzen(mit dem Oscsel
Jumper): 1.Das oben genannte, 2.Onboard crystal signal und 3. Onboard
XTAL1.
Wenn ich den XTAL1 Jumper disconnecte müsste ich den internen Takt
nutzen, was aber irgendwie nicht geht, da ich dann keine Verbindung
mehr zum Board bekomme. Also wollte ich den externen
softwaregenerierten takt nutzen, da ich noch keinen Quarz habe. Der
kommt erst noch ;)...wollte mich halt in mein Uart reinarbeiten. Habe
ich mich jetzt etwa schon ausgesperrt? ich kann mich aber noch mit dem
STK verbinden und auch den µC flashen!

Nur beim Uart kommt totaler müll raus und ich weiß nicht mehr weiter!

Ich finde das alles ganz schön schwierig.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DE nexternen Takt kannst du nicht beeinflussen.
Habe ledier kein STK500 sonst würde ich mal nachsehen, was du da
einstellen mußt. (Es gibt aber hier im Forum ein deutsches Handbuch,d
as sollte die Fragen beantworten).

Die Startuptime ist die  Zeit, die der Controller nach einem Reset
(evtl. auch nur PowerOn Reset) wartet, bis er mit der Programm
abarbeitung anfängt. Ist dafür da, falls die Versorgungsspannung noch
etwas schwankt.

Autor: Togger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, aber mit dem OnBoard Software Clock habe ich noch nicht
gearbeitet.
Denke, dass der Takt ähnlich "genau" wie der interne ist.
OSCSEL Jumper überprüfen, XTAL1 muss dann raus.
Willst alle Probleme ausschliessen, führt kein Weg an einem Quarz
vorbei.

lg Ralf

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte bitte bitte das Handbuch zum STK500 lesen, meinetwegen auch in der
Übersetzung. Und auch die Datenblätter zu den Prozessoren. Da steht
alles drin, auch der Unterschied zwischen internen und externen
Oszillatoren.... Es muß doch ´nen Grund geben, daß Handbücher
mitgeliefert werden und warum meins schon Eselsohren hat. Keiner kann
was dafür, wenn man mal was vergißt, aber wenn man gar nicht erst
´reinguckt....

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht reinguckt??? Ich habe das schon 20000mal durchgelesen aber
schlauer werde ich daraus auch nicht! Wenn man sich das erste mal mit
diesem Thema beschäftigt ist es ziemlich schwer alles was im Handbuch
steht auch eindeutig zu interpretieren und umzusetzen.

Danke für alle die mir versucht haben zu helfen, leider bin ich
immernoch nicht weiter aber die Erleuchtung wird bestimmt noch kommen.

Gruß Marian

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Hilfe des AVRStudios ist auch hilfreich, allerdinsg auch ziemlich
Englisch...

Autor: Togger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marian,
schau mal im Handbuch S.3-19, da ist es erklärt.
Fuses auf "external".
XTAL1 Jumper ist egal, also rein oder raus.
OSCSEL Jumper auf Pin 1 und 2 (die zählen von rechts).
Nur...geht das jetzt schief, ist die Tür zu ;-)
Daher würde ich erstmal mit den internen Takten rumspielen bis nen
Quarz hast.
Auch mit internem Takt muss (z.b. auf 8Mhz) das UART laufen, sonst hast
nen anderen Fehler.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lesen alleine nützt nix, du musst es auch verstehen. Kannst du es nicht
verstehen, dann fehlen dir weitere Grundlagen, dann musst du eben damit
anfangen. Sollte dir das zu mühsam sein, dann wäre vielleicht "Malen
nach Zahlen" auch ein schönes Hobby. ;-)

Solltest du mich jetzt für arrogant halten, dann muss ich wohl oder
übel damit leben...

...

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hätte noch ne Strickliesel abzugeben...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.