www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA8 mit externem Quarz auf Pollin Eval Board


Autor: Se Wo (electro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

dies ist mein erster Post hier. Und gleich habe ich ein Problem:

Ich arbeite mich gerade in die AVR uC Programmierung ein und verwende 
hierzu einen ATMEGA8 auf einem Pollin Evaluationsboard V2.01.
Soweit hat auch alles gut funktioniert. Nun wollte ich, um einen 
genaueren Timer zu erhalten, auf externen Takt umstellen. Ein 16Mhz 
Quarz ist ja auf dem Board aufgelötet.
Dazu habe ich den ATMEGA8 per Avrdude mit folgenden Fuses beschrieben 
(mit Hilfe von http://www.engbedded.com/fusecalc):
Low: 0xE0
High: 0xD9

Nun tut sich nichts mehr - leider. Ich kann den uC auch nicht mehr 
auslesen geschweige denn neu beschreiben.

Hab ich die falsche Fusekonfiguration verwendet? Muss der Quarz auf dem 
Pollin Board erst aktiviert werden? Kann ich den Chip noch retten?

Danke schonmal für Eure Hilfe!

Viele Grüße
Sebastian

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die '0' im

> Low: 0xE0

steht für 'external Clock'. Hülfe gibbet da [1].

Einfach öfters mal ins Datenplatt kucken.

HTH und nix für ungut

[1] 
http://www.mikrocontroller.net/articles/AVR_Fuses#...

Autor: Se Wo (electro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Info.
Ich verstehe - ich habe 'externel clock' eingestellt, das meint aber 
einen Quarzosszilator. Für meinen Quarz hätte ich 'external crystal' 
verwenden sollen. Zu spät nun also.
Ich habe noch einen zweiten ATMEGA8, den ich möglicherweise mit der von 
Dir verlinkten Anleitung zum Erzeugen des Reaktivier-Taktes hernehmen 
könnte. Leider kann ich diesen nicht mit auf das Pollin Board packen. 
Ich muss also warten, bis ich mir ein Steckbrett besorgt habe, um dann 
eine Schaltung mit den 2 uCs aufzubauen.
Ich hoffe, ich bekomme das hin.

Ach, und was bedeutet HTH?

Sebastian

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hope that helps :-)

Viel Erfolg mit dem externen Taktgenerator! Masseverbindung nicht 
vergessen dann klappt das schon :-)

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für sowas hat man einen Defuser :-)

Man nehme einen Quarzoszillator (von einer ollen Platine gelötet)
drei Drähte dran. (+ - out) Kann man immer gebrauchen.

Autor: Se Wo (electro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe tatsächlich von einer alten Ethernetkarte einen Quarzosszilator 
ausgelötet. Hat wohl 20 Mhz. Kann ich diesen verwenden? Wie muss ich die 
4 Pins anlöten?

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hat wohl 20 Mhz. Kann ich diesen verwenden?

Ja.

> Wie muss ich die 4 Pins anlöten?

Normalerweise(tm):

NC  1   14 Vcc
GND 7    8 Takt

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Bei den quadratischen analog, nur die Ziffern verschieben sich 
entsprechend)</ingrid>

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm, 20 MHz könnten je nach ATMEGA etwas zuviel sein.

Belegung -> Datenblatt -> google ?

Autor: Se Wo (electro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werds mal probieren. Oder kann ich den uC mit einem zu hohen Takt 
schrotten? Werde ihn ja nicht über längere Zeit dranhängen...

Autor: Nils ‫‪ (n-regen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Takt zu schnell ist, läuft der µC unter Umständen instabil, 
übersieht also ab und an mal einen Takt.
Kaputt gehen kann dabei nichts, schlimmstenfalls verhält sich der µC 
merkwürdig.
(Dein ATmega8 verträgt übrigens laut Spezifikation 16MHz, 20MHz 
müssten also zumindest fürs Ausprobieren noch im Rahmen sein.)

Autor: Se Wo (electro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Top! Es hat funktioniert. Hab die Fuses nun richtig gesetzt und der uC 
ist wieder voll ansprechbar :D Danke an alle!
Werde meinen 'Defuser' aufheben. Wie gut, dass ich die Netzwerkkarte 
bzw. den Quarzosszilator damals nicht weggeschmissen habe.

Noch eine Frage:
Um eine korrektes Timing zu bekommen, muss ich in meinem Quellcode F_CPU 
definieren.
Was gebe ich hier an: 16000000 oder 16000000UL ?
Habe es eben mit letzterem probiert. Ein z.B. 1 Sek. Takt läuft aber 
nach ca. 2 Minuten mit meiner Armbanduhr nicht mehr syncron. Auf dem 
Quarz ist aber genau K16.000 aufgedruckt.

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Übrigends, wenn du das Pollin-Board hast, ist ein "Lebensretter" auch 
leicht unterzukriegen... du lötest auf ein Stück Lochraster eine Fassung 
für einen Controller deiner Wahl. Für eine x-beliebige Fassung auf dem 
Pollin-Board nimmst du Stecknadeln und versorgst deine Fassung mit 5 V. 
Nun noch eine Reset-Beschaltung (Kondensator/ Widerstand) und fertig ist 
deine "Minimalbeschaltung" für den Controller. Auf einem Ausgang 
generierst du dir einen Takt, den du durchaus aus der internen Frequenz 
ableiten kannst. Diesen Ausgang verdrahtest du ebenfalls auf eine 
Stecknadel, diesmal aber frei beweglich.
Nun kannst du dem verfummelten µC einen Takt anbieten, dem er sich nicht 
widersetzen kann.....
Noch ein Tip. In der Bucht gibt's für ca. 20 € einen USP-ISP 
Programmierstick. Damit kannst du direkt aus AVR-Studio heraus deinen µC 
flashen und es geht um Welten schneller. Mit OpenEye kannst du dir über 
die serielle Schnittstelle ein Fenster auf die Variablen im Controller 
legen und dir die internen Werte ansehen. Hab ich mir mal geschrieben 
und dann hier veröffentlicht. Wenn du damit umgehen kannst, wirst du es 
nicht mehr missen wollen.
Gruß oldmax

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian Wolf schrieb:

> Noch eine Frage:
> Um eine korrektes Timing zu bekommen, muss ich in meinem Quellcode F_CPU
> definieren.
> Was gebe ich hier an: 16000000 oder 16000000UL ?
> Habe es eben mit letzterem probiert. Ein z.B. 1 Sek. Takt läuft aber
> nach ca. 2 Minuten mit meiner Armbanduhr nicht mehr syncron.

Was hast du benutzt?
_delay_ms?
Das ist auch nicht unbedingt das Genaueste. Du verbrätst ja zb auch 
immer Takte dazwischen, die vom delay_ms nicht berücksichtigt werden.

Wenn's stimmen soll, musst du die Sache mit einem Timer angehen.

> Auf dem
> Quarz ist aber genau K16.000 aufgedruckt.

Das heißt noch lange nicht, dass er exakt 16000000 Schwingungen/Sekunde 
macht. Ein paar Hundert +- sind immer drinnen. Hängt auch von der 
Temperatur ab.

Autor: Se Wo (electro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich habe _delay_ms verwendet. Werde das Ganze mal wie vorgeschlagen 
mit einem Timer probieren. Hatte gedacht, _delay_ms wäre ausreichend 
genau.
Wie gesagt - ich arbeite mich noch ein ;)

UL steht also für unsigned long, das müsste ja passen. Und wie viel 
Abweichung der Quarz dann hat, müsste man halt mal Messen. Solange es 
für eine fehlerfreie RS232-Kommunikation reicht, bin ich zufrieden.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.