Hallo, mein Arduino micro lässt sich seit mehreren Wochen nicht mehr programmieren. Ich war gerade dabei ein selbstgebautes lenkrad zu programmieren und hatte ein programm laufen, welches per serielle schnittstelle daten an den pc sendete. Das programm läuft immernoch, allerdings werden immer dieselben werte gesendet, selbst wenn der arduino garnicht eingebaut ist. Hier das programm das auf µc ist: //#include <Joystick.h> int Kupplung; int Bremse; int Gas; int Kupplung1; int Bremse1; int Gas1; int s; void setup() { // put your setup code here, to run once: Serial.begin(9600); for (int i=2; i<17;i++){ pinMode(i,INPUT);} for (int i=2; i<17;i++){ digitalWrite(i,HIGH);} //Joystick.begin(); } void loop() { if(Serial.available() > 0) {Serial.end();} for (int i = 2; i < 17; i++){ s = digitalRead(i); if (s == 0){s = 1;} else {s = 0;} // Joystick.setButton(i,s); } //Kupplung Kupplung = analogRead(A3); //poti2 = map(poti,47,990,-127,127); //Joystick.setZAxis(poti2); //Bremse Bremse = analogRead(A4); Bremse1 = map(Bremse,0,485,0,127); //Joystick.setXAxis(Bremse1); Serial.println(Bremse); //Gas Gas = analogRead(A5); Gas1 = map(Gas,634,914,0,127); //Joystick.setYAxis(Gas1); Serial.println(Gas); /*Serial.print(analogRead(A3)); Serial.println(" =Kupplung"); Serial.print(analogRead(A4)); Serial.println(" =Bremse"); Serial.print(analogRead(A5)); Serial.println(" =Gas");*/ delay(50); } Hier die fehrlermeldung wenn reset bis "hochladen" gedrückt wird: Der Sketch verwendet 5.884 Bytes (20%) des Programmspeicherplatzes. Das Maximum sind 28.672 Bytes. Globale Variablen verwenden 182 Bytes (7%) des dynamischen Speichers, 2.378 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.560 Bytes. PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {COM9, } => {} PORTS {COM9, } / {} => {} PORTS {} / {} => {} PORTS {} / {COM10, } => {COM10, } Found upload port: COM10 C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM10 -b57600 -D -Uflash:w:C:\Users\Julian\AppData\Local\Temp\build1fd255a953a8c14710f29c 1c59ff99b2.tmp/Lenkrad.ino.hex:i avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" Using Port : COM10 Using Programmer : avr109 Overriding Baud Rate : 57600 AVR Part : ATmega32U4 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PA0 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 9000 9000 0x00 0x00 flash 65 6 128 0 yes 32768 128 256 4500 4500 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : butterfly Description : Atmel AppNote AVR109 Boot Loader Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding Problem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload. Ich habe schon alles mögliche versucht, aber der arduino will sich einfach nicht mehr programmieren lasse! Ich bitte um eure hilfe
PS: Die angezeigten Werte sind IMMER 267 und 176. Vielleicht hilft euch das weiter :-/
Noch was: Die erste zeile nach loop: if(Serial.available() > 0) {Serial.end();} hab ich erst vor kurzem hinzugefügt, dass ich, wenn ich das programm hochladen kann, die serielle schnittstelle deaktivieren kann. Hätte ich besser seit anfang ins programm gemacht..
guest78987 schrieb: > Hätte ich besser seit anfang ins programm gemacht.. Das ist nicht dein Problem. guest78987 schrieb: > if(Serial.available() > 0) {Serial.end();} > hab ich erst vor kurzem hinzugefügt, dass ich, wenn ich das programm > hochladen kann, die serielle schnittstelle deaktivieren kann. > Hätte ich besser seit anfang ins programm gemacht.. Das ist völlig unnötig, denn dieser Code interessiert den Bootloader herzlich wenig. Der Bootloader funktioniert so: Die Arduino IDE macht einen Softreset (bei manchen Arduino-Boards funktioniert das nicht, und man muss durch drücken der Reset-Taste nachhelfen). Nach dem Reset führt der uC ca. 0.5 Sekunden lang den Bootloader aus, und wartet auf Daten. Für diese Zeit spielt dein Programm absolut keine Geige. Kommen keine Daten wird dein Programm geladen und ausgeführt. Ab diesem Zeitpunkt spielt der Bootloader keine Geige mehr. Außerdem ist es von der Logik her unschön, wenn du die Serielleschnittstelle zumachst (Serial.end()) und später trotzdem versuchst was zu schreiben(Serial.println()). Keine Ahnung was das Arduino-Gedöns macht, wenn man versucht auf die geschlossene Schnittstelle zu schreiben. guest78987 schrieb: > -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v > -patmega32u4 -cavr109 -PCOM10 -b57600 -D > -Uflash:w:C:\Users\Julian\AppData\Local\Temp\build1fd255a953a8c14710f29c > 1c59ff99b2.tmp/Lenkrad.ino.hex:i Rufst du das Ding von Hand auf? Benutzt die die Arduino IDE? Welche Version? Benutzt du die IDE von arduino.cc oder von arduino.org?
Hallo, Wenn ich das richtig verstanden habe funktioniert also mein bootloader nicht mehr richtig, oder? Denn ich habe schon oft die arduino ide geschlossen (version 1.6.4 von arduino.cc), den resetknopf am arduino gedrückt, die ide wieder gestartet, ein leeres programm geöffnet und auf hochladen geklickt und sobald "hochladen" erschien den resetknopf wieder losgelassen. Der arduino wird ja auch erkannt und sendet daten an die serielle Schnittstelle. Die Meldung "programmer is not responding" kommt auch jedes mal, was ja eigentlich auch nur am bootloader liegen kann oder? Ausserdem wird auch ab und zu "port busy" angezeigt. Gibt es irgend eine Möglichkeit den arduino zu retten oder muss ich mir einen zweiten kaufen und mit diesem den bootloader neu flashen? Was ich auch sehr komisch finden ist, dass immer die gleichen werte im seriellen Monitor angezeigt werden, was bei einem funktionsfähigen arduino ja nicht sein kann? Kaj schrieb: > guest78987 schrieb: > -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v > -patmega32u4 -cavr109 -PCOM10 -b57600 -D > -Uflash:w:C:\Users\Julian\AppData\Local\Temp\build1fd255a953a8c14710f29c > 1c59ff99b2.tmp/Lenkrad.ino.hex:i > > Rufst du das Ding von Hand auf? > Benutzt die die Arduino IDE? Welche Version? > Benutzt du die IDE von arduino.cc oder von arduino.org? Was meinst du mit von Hand aufrufen? Ich klick einfach auf hochladen. Und was mir, nach deiner erklärung, wie der bootloader funktioniert auch komisch vorkommt, ist dass wenn ich wie oben beschrieben den reset knopf bis hochladen drücke, der Arduino erst nach etwa 0,5s, also wenn ja eigentlich schon das programm läuft, von der IDE erkannt wird.
Ohne diese beiden zeilen: Taster am lenkrad gedrückt -> pin wird low -> 0 Taster wird nicht gedrückt: durch pullup pin high -> 1 Da es ja genau umgekehrt sein soll habe ich diese beiden zeilen eingebaut. Aus 0 wird 1 und aus 1 wird 0. Ohne else ist die variable ja immer 1?? Das programm hat so auf jeden fall funktioniert
guest78987 schrieb: > Ohne else ist die variable ja immer 1?? Sorry, hab da was anderes gelesen. hast recht.
Kaufe dir einen preiswerten Pro Mini und flashe den micro per ISP. Benutze dazu Arduino as ISP. Anleitungen dazu gibt es im Netz reichlich.
Ok danke Und sonst gibt es keine Möglichkeit den micro wieder zu programmieren?
Du kannst es ja noch mit einem USB-Serial-Wandler versuchen. Könnte auch funktionieren, da bin ich jetzt aber nicht so sicher.
Hallo, ich habe mir jetzt mittlerweilevielleichtweiten, nichtoriginalen arduino micro gekauft und versucht, mit diesem auf meinen original arduino micro einen neuen bootloader zu brennen. Der nachbauarduino wurde auf Anhieb ganz normal von der IdE erkannt und funktioniert auch einwandfrei. Ich habe also die pins (alle an der Unterseite, nicht am icsp Anschluß) miso, mosi, sck, 5v, gnd und pin 10 an den icsp anschluss des defekten arduino micro angeschlossen. Die power led des def. Arduino leuchtete, sobald der andere arduino per usb an den pc angeschlossen wurde. Als nächstes habe ich dann auf den funktionsfähigen arduino das isp sketch geladen, arduino as isp als programmer ausgewählt und bin dann auf bootloader brennen. Doch leider kam, genauso wie wenn ich ihn direkt per usb programmieren will "programmer is not responding" und noch irgendwas mit "not in sync" die IDE probierte das ganze 10 mal, ohne erfolg. Jetzt ist meine frage, ob der arduino vieleicht kaputt sein könnte (er ist erst wenige monate alt und wurde teuer bei conrad gekauft) oder ob ich eventuell was falsch gemacht hab? Läuft sowas eventuell auch über Garantie, also dass ich das ganze über conrad reklamiere und dann einen neuen bekomm bzw. Der alte repariert wird oder sind solche Fälle von der Garantie ausgeschlossen?
Sorry in der zweiten zeile hat wohl die autokorektur bisschen mist gebaut. Das soll natürlich "ich habe mir jetzt einen zweiten, nichtoriginalen arduino micro gekauft..." heissen.
Kann kaputt sein oder auch nicht. Ich würde mal alle Anschlüsse deines ISP-Programmers überprüfen. Ob du das reklamieren und als Garantie abwickeln kannst musst du mit Conrad klären.
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.