www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Crystal Oszillator?


Autor: Julius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

http://www.mikrocontroller.net/articles/AVR-Tutori...

^ - In diesem Artikel wird XTAL2 nicht verbunden, aber es wird ein Quarz 
Oszillator verwendet? Das Handbuch des ATmega16 schaltet den Oscillator 
zwischen XTAL1/XTAL2.
Frage, ist "Crystal Oscillator" richtig und passt es trotz der 
Schaltungsabweichung?

Mit freundlichen Grüßen
Julius Junghans

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Crystal = Quarz = Bauteil mit 2 Beinen an XTAL1/2.

Crystal oszillator = Baustein mit 4 Beinen (davon 1 unbenutzt), aus 
denen eine fertiger Takt rauskommt.

Autor: Julius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, nach dem lesen von 20 Forumsbeträgen die es alle voraussagten habe 
ich den AVR endlich zerschossen:

DEFAULT: (Das auslesen der Fuses klappt bis heute nicht mit avrdude)
uisp -dprog=avr910 -dserial=/dev/ttyUSB0 -dspeed=115200 -dpart=75 
--rd_fuses
Programmer Information:
  Software Version: 4.0, Hardware Version: 0.2


Atmel AVR ATmega16 is found.

Fuse Low Byte      = 0xe1
Fuse High Byte     = 0x99
Cannot read extended fuse bits on this device. Returning 0xff
Fuse Extended Byte = 0xff
Calibration Byte   = 0xb9  --  Read Only
Lock Bits          = 0xff
    BLB12 -> 1
    BLB11 -> 1
    BLB02 -> 1
    BLB01 -> 1
      LB2 -> 1
      LB1 -> 1
0xe1(16) ist 1110 0001(2)  - stimmt mit dem Datenblatt überein.

Was ich ändern wollte war der externe Takt durch einen "Crystal 
Oscillator" (4MHz) wie er hier im AVR Tutorium verbaut wird.

Meiner Meinung nach wäre das:
0xef(16) 1110 1111(2)


uisp -dprog=avr910 -dserial=/dev/ttyUSB0 -dspeed=115200 -dpart=75 
--wr_fuse_l=0xef
Programmer Information:
  Software Version: 4.0, Hardware Version: 0.2

Atmel AVR ATmega16 is found.

Fuse Low Byte set to 0xef


AUSLESEN:
uisp -dprog=avr910 -dserial=/dev/ttyUSB0 -dspeed=115200 -dpart=75 
--rd_fuses
Programmer Information:
  Software Version: 4.0, Hardware Version: 0.2

Probably the AVR MCU is not in the RESET state.
Check it out and run me again.


Hat jemand eine idee?

Mit freundlichen Grüßen
Julius Junghans

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

Bewertung
0 lesenswert
nicht lesenswert
> Was ich ändern wollte war der externe Takt durch einen "Crystal
> Oscillator" (4MHz) wie er hier im AVR Tutorium verbaut wird.

Ein Quarz-Oszillator ist kein Quarz!

Was du hast, ist wahrscheinlich ein Quarz und kein
Quarz-Oszillator. Ein Quarz-Oszillator schwingt von
alleine und liefert ein Taktsignal. Ein Quarz braucht
eine Verstärkerschaltung um ins Schwingen zu kommen.

Ein Quarzoszillator kann direkt über XTAL1 an den Mega16
angeschlossen werden, da er ja von alleine schwingt und einen
Takt erzeugt.

Ein Quarz muss mit beiden beiden Beinen an den Mega16
angeschlossen werden. Der Mega16 enthält den dazu passenden
Schaltkreis der dafür sorgt, dass der Quarz ins Schwingen
kommt.

Wenn du den Mega16 wiederbeleben möchtest, dann musst du
an XTAL1 jetzt irgendeine Schwingung rein zaubern (die
natürlich schnell genug sein muss). Wenn du noch einen
Mega16 hast, dann programmiere ihn so, dass er einen Pin
toggelt und benutze diesen Pin als Frequenzlieferant.
Du kannst auch einen 555 benutzen oder einen Frequenzgenerator
oder was du auch immer hast.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0000 = "external clock" = die erste Schaltung auf der o.A. Seite, die 
mit dem 3-Beiner an XTAL1, der als Quarz-Oszillator einen fertigen Takt 
liefert.

1111 = "external crystal/resonator" = die zweite Schaltung, die mit dem 
2-Beiner (Quarz) und den beiden Kondensatoren, in der die Kombination 
aus Quarz und der Schaltung im Controller zusammen zum Quarz-Oszillator 
wird.

Autor: Julius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe hier schon einen Quarz Oszillator 4Mhz (4 Beine)

http://www.reichelt.de/?SID=20RnbRD6wQARQAAF8nIwI8...



Dieser Code sollte sich zur Zeit im ATmega16 befinden:
#include <avr/io.h>          // (1)
#define F_CPU 1000000UL
#include <util/delay.h>

#define MEINBIT 0

int main (void) {            // (2)

DDRA  = 0xff;             // (3)

while(1) {                // (5a)

PORTA |= (1 << MEINBIT);
_delay_loop_2 (65536);
PORTA &= ~(1 << MEINBIT);
_delay_loop_2 (65536);
}                         // (5c)

/* wird nie erreicht */
return 0;                 // (6)
}


Mit 1Mhz hat er so vor sich hingeblinkt, gebe ich jetzt der Schaltung 
Spannung und habe den Programmer nicht mit dem PC Verbunden passiert 
erst einmal nichts.
berüht man jedoch die Verbindung Quarz Oszillator Pin 8 -> ATmega16 
XTAL1 Pin 13  fängt die ledt wieder an zu blinken, etwas schneller als 
zuvor aber gleichmäßig.

Das ganze ist auf einem Steckbrett aufgebaut, Kabel tauschen, andere 
Steckplätze alles zeigt keine Veränderung.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nu, dann ist der Weg ja klar. Finger dran und währenddessen die Fuses 
korrekt einstellen ;-).

Steckbretter sind übrigens nicht allzu zuverlässig. Wenn's mit Finger 
dran tut, kann auch ein Wackelkontakt im Spiel sein.

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.