Ich habe gerade ein AVRISP mit einem alten Arduino Nano (ATmega328p) gebaut und versucht, ein einfaches Blinkprogramm auf einen ATmega328 (nicht Picopower) zu flashen. Als ich das Programm zum ersten Mal geflasht habe, hat alles super geklappt – die 1000 ms Ein- und 1000 ms Aus-Intervall waren so, wie ich es erwartet hatte. Ich habe das Ausschaltintervall jedoch auf 100 ms geändert, und plötzlich betrug die Periode insgesamt fast 9 Sekunden – ungefähr 8 Sekunden ein und 0,8 Sekunden aus. Das Blinken der ursprünglichen Ein- und Ausschaltintervalle von 1000 ms führte ebenfalls zu einer verlängerten Periode.
Ich verwende das Makefile aus einem einfachen Blink-Tutorial ; Das einzige, was ich geändert habe, ist die Portbezeichnung und MCU. Angesichts dessen glaube ich, dass das Problem bei meinem ISP liegt ... aber was könnte einen anfänglichen Erfolg und dann einen wiederholten Misserfolg verursachen? Wenn Sie weitere Informationen benötigen (Header- oder Hex-Dump usw.), lassen Sie es mich wissen und ich werde Ihnen gerne helfen.
Das Problem ist, dass Ihre Definition von F_CPU
nicht mit der Hardware übereinstimmt. Auf MCUs frisch von Atmel ist die CKDIV8
Sicherung (die den CPU-Takt durch 8 teilt) programmiert, also stellen Sie sicher, dass Sie sie bei Bedarf deprogrammieren, falls Sie dies noch nicht getan haben.
JRobert
Ignacio Vazquez-Abrams
TSL
TSL
JRobert