Hi, http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment ^ - 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
Crystal = Quarz = Bauteil mit 2 Beinen an XTAL1/2. Crystal oszillator = Baustein mit 4 Beinen (davon 1 unbenutzt), aus denen eine fertiger Takt rauskommt.
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
> 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.
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.
Ich habe hier schon einen Quarz Oszillator 4Mhz (4 Beine) http://www.reichelt.de/?SID=20RnbRD6wQARQAAF8nIwI8a801066781fe744f5a84648d53a9daf;ACTION=3;LA=4;GROUP=B42;GROUPID=3174;ARTICLE=13706;START=0;SORT=artnr;OFFSET=16 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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.