Hallo an alle, ich programmiere hin und wieder mit meinem "Nerdkit". Normalerweise verwende ich dort den ATMega168, aber wenn der Programmcode etwas länger wird, kann man auch den ATMega328p verwenden weil dieser das gleiche Pinout hat. Ich habe ein und den selben Code einmal auf den 168 und einmal auf den 328p geflashed. (Natürlich das Makefile angepasst - siehe Anhang) Wenn ich nun das Programm starte, dann ist am 168 der Sound schön kurz und knapp. Aber am 328 hört sich der Sound wie Slow Motion an und ist viel zu lang. Als Ausgang verwende ich einen Piezo Buzzer. Beide Controller haben einen speziellen Bootloader von "Nerdkit" drauf welchen ich zuvor rauf lade. Habt ihr irgendeine Idee was ich hier falsch mache?
Gast
#4429019
CKDIV8 Fuse?
Nino K. schrieb: > viel zu lang. In Zahlen?
kurt schrieb: > CKDIV8 Fuse? Du meinst die Fuses mit denen ich den Bootloader schreibe? (siehe Anhang) @Lothar: Ich würde sagen doppelt so lang. Aber ich kann auch gern ein Video in meiner DropBox hochladen zur besseren Veranschaulichung.
Gast
#4429156
Da sind keine Fusebit Settings in deiner fuses_328.txt. Ich denke auch zu 99% das da der ClockDiv8 gesetzt ist.
Um das ganze zu vereinfachen, da ich bisher mit den fuses noch nicht viel zu tun hatte. Da ich nicht nur den Nerdkit besitze, kann ich auch alternativ mit einem AVRISP mkII und dem AVR Studio flashen. Sind diese Settings so korrekt? Bei EXTENDED, HIGH und LOW habe ich die Werte vom Arduino Board mal eingetragen, in der Hoffnung, dass die stimmen können. (Da der Arduino ja auch einen 328p hat) Als kleiner Hinweis. Beim Nerdkit verwenden wir einen 14.7456 Mhz Quarz. Beim Arduino einen 16 Mhz Quarz.
Ich habe nun in den Readme Dateien die Erklärung zu den fuses vom Nerdkit gefunden. Das scheint meiner Meinung nach zu passen und der ClockDiv8 ist aus. Wo könnte dann das Problem liegen? Was meint ihr dazu?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
Und hier das MakeFile for das flashen des Bootloaders:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Gast
#4429203
1 | |
2 | |
3 | |
4 | |
ClockDiv 8 ist doch aber an, wie kommst du da zum Schluss das es aus ist?!
Ach bin ich ein Hirsch. :-) Habe da total 1 und 0 durcheinander gebracht. Bin ich nun dieses Mal richtig mit der Annahme, das 1110111 also 0x77 der richtige Wert für LFUSE wäre?
Gast
#4429217
Lese doch einfach mal die Fuses aus, aus dem gerade laufenden Mega328. Was mich in der Liste ein wenig wundert ist halt auch:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
das BLB12 gesetzt ist, das bedeutet dann ja (Mit der Beschreibung dahinter) das er sich nicht über den BL selbst programmieren kann, was mich aber wundert, weil es geht ja wohl bestimmt - denn sonst könntest du über den BL ja nicht programmieren. Lese mal die Fuses aus, da sind wir auf der sicheren Seite.
Draco schrieb: > ClockDiv 8 ist doch aber an, wie kommst du da zum Schluss das es aus > ist?! Und nach dem geposteten Bild, wie kommst du darauf, dass er an ist?
Wenn ich im AVR Studio auf Device Programming gehe und dann auf Fuses ohne was zu verändern, dann sehe ich doch die aktuell gesetzten fuses oder? (siehe Bild)
Gast
#4429240
F. F. schrieb: > Draco schrieb: >> ClockDiv 8 ist doch aber an, wie kommst du da zum Schluss das es aus >> ist?! > > Und nach dem geposteten Bild, wie kommst du darauf, dass er an ist? Weil ich dann davon ausgehe das das dann so auch in den µC geschrieben wurde ;) Deswegen ja auch die Frage nach den aktuellen Fuses, welche sich im µC befinden - da ja mehrere Ungereimtheiten in dieser Liste sind ;) Aber laut dem neuen Bild ist CKDIV8 nicht gesetzt.
Nino K. schrieb: > Ach bin ich ein Hirsch. :-) Die größten Kritiker der Elche waren früher selber welche! Waidmannsheil! ;-) MfG Paul
Gast
#4429261
Ahhhhh...0 = programmed / 1 = unprogrammed... Jaja, andersrum (Nach zwei Tagen Bitshiften war mir itze grad nich klar das gerade bei den Fuses 0 ja und 1 nein heißt) - mein Fehler ^^ Da entschuldige ich mich :D
Draco schrieb: > Ahhhhh...0 = programmed / 1 = unprogrammed... > > > Jaja, andersrum (Nach zwei Tagen Bitshiften war mir itze grad nich klar > das gerade bei den Fuses 0 ja und 1 nein heißt) - mein Fehler ^^ Da > entschuldige ich mich :D Kein Problem. :-) Ich habe nun zu Testzwecken mal den Haken bei CKDIV8 reingemacht und dann das Programm ablaufen lassen. Nun ist der Ton noch langsamer. Also der Wert von CKDIV8 passt. Aber warum könnte dann der Sound dennoch um einiges langsamer sein, trotz deaktiviertem CKDIV8?
Guck mal, ob irgendwas mit dem CLKPR-Register in Deinem Programm gemacht wird. Damit kann man den internen Systemtakt auch beeinflussen. (Ich kann keinen C-Quelltext lesen -will es auch nicht mehr) MfG Paul
Ich habe nun ein Video gemacht in welchem man den Unterschied erkennen kann. (siehe DropBox) https://www.dropbox.com/sh/l26j78hab90cyot/AACp2Rgu8OyqTgrNyR3GWgcaa?dl=0 Einmal der Ton am 168 schön kurz und knapp. Und dann der Ton am 328 dumpf und lang.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.


