Hallo Forum, ich hoffe, ich bin hier richtig; wenn nicht, bitte Bescheid sagen und / oder ins richtige Forum verschieben. Herzlichen Dank. Nun, ich bin ein Anfänger in der Elektronik und schätze dieses Forum als -- für mich jedenfalls -- nahezu unerschöpfliche Wissensquelle. Leider muß ich nochmal alle Fehler wiederholen, die die geschätzten Anwesenden wohl bereits hinter sich oder nie gemacht haben. ;-) Deswegen habe ich heute meinen ATMega16 zeitweilig ins Nirvana geschickt. Wie auch immer, ich möchte derlei unangenehme Erfahrungen in Zukunft gern vermeiden. Ich habe hier einen 8-MHz-Quarz (das Teil mit zwei Beinchen) und zwei 22pF-Kerkos als Lastkapazitäten und bin ein wenig verwirrt, wie ich meine Fuses dafür setzen muß. Das Datenblatt des uC verwirrt mich eher, als das es hülfe, und der "AVR Fuse Calculator" von Engbedded kennt die "External Clock" sowie den "External Chrystal/Resonator" mit "Low-", "Medium-" und "High-Frequency". Sehe ich das richtig, daß mit "External Clock" ein externer Taktgeber gemeint ist, also etwa ein NE555 oder ein Pin von einem ATTiny mit PWM? Und: ist mein 8-MHz-Quarz nun ein "Medium-" oder ein "High-Frequency" "External Chrystal/Resonator"? Auch bezüglich der CKOPT-Fuse habe ich noch Fragen. Da an meinem uC ein PWM-geregelter Gleichstrommotor über einen L293D und eine Halogen-Lampe über einen IRL540N hängen werden, rechne ich mit Ripples und Störungen, also wohl mit dem, was das ATMega16-Datenblatt ein "noisy environment" nennt -- in dem ich CKOPT laut Datenblatt setzen sollte. Habe ich das tatsächlich richtig verstanden? Beste Grüße und lieben Dank, Luke PS: Heute habe ich mir meinen ATMega16 "verfust", wie man hier wohl sagt: lfuse=0xE8 und hfuse=0x99 sind nicht für, wie gewünscht, einen externen 8-MHz-Quarz, sondern einen externen RC-Oszillator. Im Nachhinein habe ich mich jedenfalls ziemlich über meine eigene Doofheit geärgert. Wer Lesen kann, ist eben doch klar im Vorteil. (Nicht lachen, bitte.) Ich bin übrigens ein bisschen stolz darauf, das ich das nicht nur selbst herausgefunden habe, sondern es obendrein geschafft habe, einen zur Fuse-Einstellung passenden RC-Oszillator zusammenzubasteln und meinen ISP-Programmer "mySmartUSB light" so anzustecken, daß ich die Fuses auf die Werkseinstellung zurücksetzen konnte. Ganz alleine! (Jetzt dürft Ihr mich gerne auslachen.)
Also ich find das gut, was du dir bisher erarbeitet hast. Das schaffen bei weitem nicht alle Anfänger :) . Das Datenblatt hast du (glaube ich) richtig verstanden. Wobei: dieses CKOPT-Fuse hab ich bisher noch nie sinnvoll einsetzen können. Wenn deine Schaltung halbwegs ordentlich aufgebaut ist, dann ist der Krieg gegen die Störungen schonmal halb gewonnen. Zu deinen Fragen mit dem "Medium-" oder "High-Frequency" "External Chrystal/Resonator": das kann man sich mit Seite 26 des Datenblattes zusammenreihmen. Da stehen ja drei "Frequenzbereiche". Die werden dann ja low, med, und high sein :) . Und ja, dein NE555 ist ein "external clock" . Eigentlich sagen einem die Bilder ja fast alles... Ich schreib zwar auch immer gern und viel, aber versuch doch mal, deine Fragen so zu stellen, daß man sie in deinem Text leichter findet. Das macht das beantworten leichter ;) ... Gruß
Hallo, vielen Dank, morgen mittag probier ich's aus. Liebe Grüße, Luke
Hallo, so, genug probiert, aber irgendwas klappt dort immer noch nicht und jetzt bin ich mit meinem bisschen Latein am Ende. Auf der seriellen Schnettstille bekomme ich nur reproduzierbaren Zeichensalat, bei egal welcher Baudrate (probiert: 2400, 4800, 9600, 34200 Bd, mit util/setserial.h und auf die im AVR-GCC-Tutorial angegebenen Präprozessormakros). Meine Fuses stehen derzeit auf lfuse=0xFF und hfuse=0xC9; CKOPT, JTAGEN, SUT[0:1] und CKSEL0 machen dabei nur einen Unterschied beim Zeichensalat. Deswegen nehme ich an, daß da trotzdem irgend etwas mit dem Takt nicht stimmt. Geprüft und befunden habe ich folgendes: Der Quarz schwingt mit 8 MHz, sagt mein DMM, ein Oszilloskop habe ich leider nicht. Mit einer programmierten CKOPT-Fuse (0) liegen an XTAL1 und XTAL2 je ca. 580mV, mit unprogrammierter (1) etwa 2,5V an. Eine kleine Hauptschleife while(TRUE) { PORTC |= (1<<PC1); PORTC &= ~(1<<PC1); } gibt an dem betreffenden Pin eine Frequenz von 1,33 MHz aus. Wenn ich das richtig verstanden habe und ein Schleifendurchlauf hier sechs CPU-Takte braucht, würde das doch passen. Für die serielle Verbindung verwende ich einen Wandler von USB auf RS-232, den Linux als pl2303 erkennt und als USB-TTY einbindet. Darauf greife ich per gtkterm zu. Hat jemand eine Idee, wo der Hund denn stecken könnte? Liebe Grüße und vielen Dank, Luke
Hallo, Problem gelöst: es lag an der Invertierung des Signals. ;-) Liebe Grüße, Luke
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.