Hallo, ich bin gleich zu Anfang auf einen blöden Fehler gestoßen. Hab mein mnega32 Board fertig gehabt, alles angeschlossen und erstes Programm - blinken einer LED programmiert! Dabei habe ich _delay_ms (1000); aufgerufen. Beim AVR hat nach rumexperimentieren mit den fuses aber 4 mal so schnel genlinkt, also ca 250ms. (12Mhz Quarz) In der Libc Anleitung habe ich dann gelesen: "The maximal possible delay is 262.14 ms / F_CPU in MHz." Bedeutet das, dass diese Funktion aus "delay.h" nur 262.14ms kann oder 262.14 "geteilt" durch die Herzzahl. Bin ein wenig verwirrt, denn ich habe dann weiter an den fuses rumgespielt, bis gar nichts mehr ging. Wenn die Funktion, nur die eben erwähnten 262ms kann, hätte ich meinen mega32 nicht "zerschießen" brauchen!? Danke für die Hilfe!
in deinem fall ist das maximale delay 262.14ms/12 (da 12 Mhz) also ca. 22ms. also entweder: -eine eigene delay-routine schreiben -eine halbeigene schreiben(zb for(i=0;i<50;i++) _delay_ms(20);) -oder das eleganteste: timer verwenden gruss, bjoern.
warum ging dann die zeitroutine ca 250ms??? (zählen 21, 22... und dann die anzahl blinkimpulse!) ich wollte die routine ja nur verwenden um zu schauen ob ich die fuses richtig eingerichtet habe und der externe quarz verwendet wird und nicht der interne!
ach ja, zu den zerschossenen fuses: dazu sollte die forensuche einiges hervorbringen. bist nicht der erste, der das geschafft hat. je nach dem, was da jetzt eingestellt ist, kann man den aber recht einfach wieder retten. meisst reicht ein von einem 2ten controller erzeugtes rechtecksignal. dafuer nimmste dein led-blinke-programm und machst das delay schoen klein, und fertig ist der recheckgenerator. das ganze an XTAL1 und mit ein bisschen glueck kann man die fuses in diesem zustand wieder richtig einstellen. naja, kann gehen, muss aber nicht. aber da du ja sowieso einen neuen kaufen wirst/musst, kannst du das gleich mal ausprobieren. wiegesagt, einfach mal im forum suchen und schon sollten dazu etliche beitraege auftauchen. gruss, bjoern.
das mit den komischen zeiten kann ich mir spontan auch nicht erklaeren, aber ist auch schon spaet ;) vllt lief der controller da noch ueber internen oszillator. gruss, bjoern.
Das hab ich schon gemacht, aber im moment weis ich nicht was ich noch testen soll hab das mit dem takt schon gemacht, bei den ersten "verstellungen" gings ja. aber jetzt nimma :( Vielleicht ist es ja auf RC eingestellt... Naja die neuen sollten bald kommen! mich interessiert nur warum die delay routine 250ms ging, ob der da wohl den externen quarz genommen hat!?
ich hoffe es wird dann das nächste mal mit den gezeigten einstellungen für yaap gehen, welche im AVR Tutorial gezeigt werden!!! Das ist zwar 8 MHz, aber ich glaub müsste das gleich sein, dann werde ichd as mit dem delay nochmal versuchen. Und für den Test eine kleine "for" Schleifen nehmen!
dann musst du aber aufpassen und zwischen crytal und crystal oscillator unterscheiden. am besten mal im datenblatt nachschauen. das waere naemlich genau der fall, dass man externen rechtecktakt braucht, obwohl man nen quarz meinte. gruss, bjoern.
ja das hab ich schon kappiert... und wenn ich den externen crystal oszillator einstelle, dann bekomm ich das ja auch weider hin.. funktionsgenerator oder so! naja mal schaune, ich beschäftige mich noch ein wenig mit den fuses bis die neuen controller kommen!
ich empfehle zum setzen der fuses den interaktiven modus von avrdude + datenblatt. wenn man das so macht, muss man sich zwangslaeufig mit der invertierten logik der fuses auseinandersetzen und sich die werte vorher auf papier schreiben. das dauert zwar beim ersten mal ne weile, aber dafuer hat mans dann auch verstanden und klickt nicht wild drauf los, bis nichts mehr geht. naja, viel erfolg mit den controllern weiterhin, ist ein schoenes hobby fuer kalte winterabende. gruss, bjoern.
Hallo Leute! Ich kann zum Thema leider nichts beitragen, aber ich hätte gerne gewusst was es mit diesen ominösen Fuses aufsich hat. So ein AVR scheint sehr anfällig zu sein für Hardwarefehler bzw. falsche Handhabung. Ich beabsichtige irgendwan mal so ein AVR zu zulegen um etwas Erfahrung über so ein Teil zu bekommen. Wäre nett wenn jemand etwas näheres weiss und Antwortet. Danke im vorraus Klaus
@D.N. fuses kann man so oft setzen und wieder loeschen wie man mag. oder bis man mal das falsche gesetzt hat --> http://www.mikrocontroller.net/articles/AVR_Fuses @Klaus das wirklich tueckische ist das bei den fuse-bits 1=nicht gesetzt und 0=gesetzt bedeutet. also grade andersrum, als man es erwarten wuerde. (das liegt an der weise, wie man flash-speicher beschreibt. kurz gesagt kann man nicht einfach einen wert reinschreiben, sondern muss ihn erst loeschen(danach hat jedes bit den wert 1) und kann dann die passenden bits auf 0 setzen um auf seinen wert zu kommen) dazu kommt noch, dass einige programmiertools gesetzte bits invertiert darstellen, andere nicht. das und die tatsache, dass es "gefaehrliche" fusebits gibt fuehrt dann immer dazu, dass sich anfaenger schnell mal beim wilden klicken aussperren und dies nicht so einfach rueckgaengig zu machen ist. naja, aus fehlern lernt man und hat das naechste mal das datenblatt vor sich liegen, wenn man an den fuses was aendern will. dort ist eindeutig beschrieben, wofuer die einzelnen bits stehen, wird aber von einsteigern oft nicht gelesen oder halt erst zu spaet. deswegen sollte man sich das datenblatt auch komplett ausdrucken, oder wenigstens immer griffbereit auf dem desktop haben. ohne kommt man auch bei allen anderen sachen nicht sehr weit, da dort saemtliche controllerspezifischen register und deren benutzung drinsteht. gruss, bjoern.
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.