Upload in ProMicro 3,3V8MHz geht nicht

Hallo Arduino-Gemeinde. Ich bin neu hier. Ich habe bis jetzt ausschließlich C-Controls verwendet. Jetzt muss ich was mit RFID machen und musste feststellen, dass es bei C-Control keine einzige Lib dafür gibt. Also habe ich mir ProMicros 3,3V/8MHz bei eBay bestellt. Ich habe den Verdacht, dass ich den ersten schon platt gemacht habe. Ich habe in die jungfräuliche ProMicro per IDE ein Sketch eingespielt. Der güne Laufbalken der IDE läuft bis zum Ende, laut Protokoll fließen auch Daten. Allerdings blinkt wärend dessen auf dem Board keine LED. Wenn der Laufbalken am Ende ist, fängt grün und gelb an wild zu blinken. Schätze min. 10Hz. Solange das geblinke anhält ist der COM-Port weg. Nach einem Reset ist der COM wieder da. Habe schon allerhand probiert, aber an dem Verhalten ändert sich nichts. Allerdings habe ich nicht viel passende Dokumentation gefunden. Wenn ich einen der noch jungfräulichen Module anstecke leuchtet weder grün noch gelb und es ist konstant der Bootloader-COMport aktiv. Kann es sein, dass man bei diesen Modulen, bevor man den ersten Sketch einliest, erst einen Bootloader einspielen muss? Oder was mache ich falsch?

Der Booloader ist meist schon drauf. kann sein, wenn du irgend welche billigteile bekommen hast, das die ohne Bootloader sind.

Da du uns aber keine Fehlermeldung postest, wissen wir nicht, was du falsch machst. Allerdings wenn kein Fehler kommt sieht das alles richtig aus.

BerndyBrot: Der güne Laufbalken der IDE läuft bis zum Ende, laut Protokoll fließen auch Daten. Allerdings blinkt wärend dessen auf dem Board keine LED. Wenn der Laufbalken am Ende ist, fängt grün und gelb an wild zu blinken. Schätze min. 10Hz. Solange das geblinke anhält ist der COM-Port weg. Nach einem Reset ist der COM wieder da.

Das klingt eigentlich ganz normal. Der ProMicro ist ähnlich dem Leonardo. Deshalb reagiert er leicht anders als der Uno. Der Laufbalken zeigt an, dass der Sketch kompiliert wird. Erst wenn er am Ende ist, wird das Programm übertragen. Während dessen blinken die LEDs wild. Anschließend gibt es ein Reset, wo kurzzeitig der Com-Port verschwindet.

In den Voreinstellungen der IDE kannst Du "Ausführliche Ausgabe" auswählen, dann siehst Du, was die IDE macht. Außerdem kannst Du die "Compiler Warnings" einschalten, bringen manchmal wertvolle Tipps.

Welchen Sketch lädst Du rauf? Welche Meldung bekommst Du? Grüße Uwe

U.a. Sketch, Fehlermeldung und Protokoll. Ich lade nur eine "Hallo Welt". Dann ist das geblinkle also erst mal normal. Das Problem ist also, dass das Board nach dem Reset nicht zurueck kommt. Mir ist gerade aufgefallen. Unter Werkzeuge ist ein Programmer angehakt. AVRISP mkII. Das koennte doch der Fehler sein? Ich arbeite doch ohne Programmer? Was ist bei direktem USB-Anschluss auszuwaehlen?

void setup() {
  // put your setup code here, to run once:
//pinMode(17, OUTPUT);
Serial.begin(9600);
Serial.println("Hallo Welt");

}

void loop() {
  
//digitalWrite(17, HIGH);
Serial.println("EIN");
delay(1000);
//digitalWrite(17, LOW);
Serial.println("AUS");
delay(1000);
}

Arduino: 1.8.1 (Windows 7), Board: "SparkFun Pro Micro, ATmega32U4 (3.3V, 8 MHz)"

D:\Programme\ARDUINO\arduino-builder -dump-prefs -logger=machine -hardware D:\Programme\ARDUINO\hardware -hardware C:\Users\JUERGEN\AppData\Local\Arduino15\packages -tools D:\Programme\ARDUINO\tools-builder -tools D:\Programme\ARDUINO\hardware\tools\avr -tools C:\Users\JUERGEN\AppData\Local\Arduino15\packages -built-in-libraries D:\Programme\ARDUINO\libraries -libraries D:\Programme\ARDUINO\Sketchbook\libraries -fqbn=SparkFun:avr:promicro:cpu=8MHzatmega32U4 -ide-version=10801 -build-path C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716 -warnings=all -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=D:\Programme\ARDUINO\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=D:\Programme\ARDUINO\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=D:\Programme\ARDUINO\hardware\tools\avr -verbose D:\Programme\ARDUINO\Sketchbook\hallowelt1\hallowelt1.ino D:\Programme\ARDUINO\arduino-builder -compile -logger=machine -hardware D:\Programme\ARDUINO\hardware -hardware C:\Users\JUERGEN\AppData\Local\Arduino15\packages -tools D:\Programme\ARDUINO\tools-builder -tools D:\Programme\ARDUINO\hardware\tools\avr -tools C:\Users\JUERGEN\AppData\Local\Arduino15\packages -built-in-libraries D:\Programme\ARDUINO\libraries -libraries D:\Programme\ARDUINO\Sketchbook\libraries -fqbn=SparkFun:avr:promicro:cpu=8MHzatmega32U4 -ide-version=10801 -build-path C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716 -warnings=all -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=D:\Programme\ARDUINO\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=D:\Programme\ARDUINO\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=D:\Programme\ARDUINO\hardware\tools\avr -verbose D:\Programme\ARDUINO\Sketchbook\hallowelt1\hallowelt1.ino Using board 'promicro' from platform in folder: C:\Users\JUERGEN\AppData\Local\Arduino15\packages\SparkFun\hardware\avr\1.1.5 Using core 'arduino' from platform in folder: D:\Programme\ARDUINO\hardware\arduino\avr Detecting libraries used... "D:\Programme\ARDUINO\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega32u4 -DF_CPU=8000000L -DARDUINO=10801 -DARDUINO_AVR_PROMICRO -DARDUINO_ARCH_AVR -DUSB_VID=0x1b4f -DUSB_PID=0x9204 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="SparkFun Pro Micro"' "-ID:\Programme\ARDUINO\hardware\arduino\avr\cores\arduino" "-IC:\Users\JUERGEN\AppData\Local\Arduino15\packages\SparkFun\hardware\avr\1.1.5\variants\promicro" "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716\sketch\hallowelt1.ino.cpp" -o "nul" Generating function prototypes... "D:\Programme\ARDUINO\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega32u4 -DF_CPU=8000000L -DARDUINO=10801 -DARDUINO_AVR_PROMICRO -DARDUINO_ARCH_AVR -DUSB_VID=0x1b4f -DUSB_PID=0x9204 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="SparkFun Pro Micro"' "-ID:\Programme\ARDUINO\hardware\arduino\avr\cores\arduino" "-IC:\Users\JUERGEN\AppData\Local\Arduino15\packages\SparkFun\hardware\avr\1.1.5\variants\promicro" "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716\sketch\hallowelt1.ino.cpp" -o "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716\preproc\ctags_target_for_gcc_minus_e.cpp" "D:\Programme\ARDUINO\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716\preproc\ctags_target_for_gcc_minus_e.cpp" Sketch wird kompiliert... "D:\Programme\ARDUINO\hardware\tools\avr/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega32u4 -DF_CPU=8000000L -DARDUINO=10801 -DARDUINO_AVR_PROMICRO -DARDUINO_ARCH_AVR -DUSB_VID=0x1b4f -DUSB_PID=0x9204 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="SparkFun Pro Micro"' "-ID:\Programme\ARDUINO\hardware\arduino\avr\cores\arduino" "-IC:\Users\JUERGEN\AppData\Local\Arduino15\packages\SparkFun\hardware\avr\1.1.5\variants\promicro" "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716\sketch\hallowelt1.ino.cpp" -o "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716\sketch\hallowelt1.ino.cpp.o" Compiling libraries... Compiling core...

.......................................

"D:\Programme\ARDUINO\hardware\tools\avr/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716/hallowelt1.ino.elf" "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716/hallowelt1.ino.eep" "D:\Programme\ARDUINO\hardware\tools\avr/bin/avr-objcopy" -O ihex -R .eeprom "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716/hallowelt1.ino.elf" "C:\Users\JUERGEN\AppData\Local\Temp\arduino_build_864716/hallowelt1.ino.hex" Der Sketch verwendet 3862 Bytes (13%) des Programmspeicherplatzes. Das Maximum sind 28672 Bytes. Globale Variablen verwenden 170 Bytes (6%) des dynamischen Speichers, 2390 Bytes für lokale Variablen verbleiben. Das Maximum sind 2560 Bytes. Erzwinge Reset durch öffnen/schließen mit 1200 bps auf dem Port COM12 PORTS {COM1, COM7, COM8, COM12, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {} An dem ausgewählten Port konnte kein Board gefunden werden. Bitte überprüfen Sie die korrekte Auswahl des seriellen Ports. Ist diese korrekt, bitte das Board über die Reset-Taste nach dem Start des Hochladens neu starten.

Unter Werkzeuge ist ein Programmer angehakt. AVRISP mkII. Das koennte doch der Fehler sein? Ich arbeite doch ohne Programmer? Was ist bei direktem USB-Anschluss auszuwaehlen?

Bei normalem Hochladen (Strg-U) ist es egal. Gibt auch gar nicht die Variante da -nichts- auszuwählen.

Also, da ich nach wie vor kaum schlauer bin, muss ich es wohl wagen eines der jungfräulichen Boards zu verwenden. Das erste Board muss ich wohl erstmal abschreiben. Mal beobachten was beim ersten Upload genau vor sich geht. Ist das Auslieferungsverhalten normal? Es leuchtet weder grün noch gelb. Und es ist konstant der Bootloader-Port aktiv. Ich nehme mal an nach Reset geht es in den normalen Port? Gibts irgendwelche Ratschläge bezüglich Erstinbetriebnahme?

Ist diese korrekt, bitte das Board über die Reset-Taste nach dem Start des Hochladens neu starten.

Hast du das getan? Ausprobiert?

Hallo, der Arduino micro benutzt ja seine interne USB HW für die serielle Schnittstelle. Die muss ert initiiert werden. Im Gegensatz zum UART beim Uno dauert das ein bisschen. Wenn Du während der Initiierung bereits sendest, verhaspelt er sich, und es geht dann gar nichts mehr. Du musst als eine Abfrage einbauen, ob die USB Schnittstelle bereit ist. Da gibt's extra einen Befehl für:

void setup() {
  // put your setup code here, to run once:
  //pinMode(17, OUTPUT);
  Serial.begin(9600);
  while( !Serial ) ;
  Serial.println("Hallo Welt");

}

Und immer schön ordentlich einrücken ;)

Das sollte man aber tunlichst auskommentieren, wenn man nicht über Serial arbeiten will, sonst hängt der Prozessor.

Gruß Tommy

Klar, ab dann muss man eh alles auskommentieren, wo ‘Serial’ drin vorkommt.

Edit: im endgültigen Sketch sollte man auf jeden Fall noch einen ‘Notausgang’ in Form einer Zeitüberwachung einbauen. Sonst läuft der Sketch bei nicht gestecktem USB-Kabel nicht an. Der Micro ist hier halt etwas ‘speziell’.

Jetzt habt ihr mich ein ganzes Stueck weitergebracht. Mein Hallo-Welt-Sketch ist zum ersten mal gelaufen. Ich muss waerend der Portsuche, nach dem Reset, manuell resetten.

Erzwinge Reset durch öffnen/schließen mit 1200 bps auf dem Port COM12
PORTS {COM1, COM7, COM8, COM12, } / {COM1, COM7, COM8, } => {}
PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {}
PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {}
PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {}
PORTS {COM1, COM7, COM8, } / {COM1, COM7, COM8, } => {}

Dann laeuft der upload.

Damit der Sketch dann auch funktionert muss das
while( !Serial ) ;
eingefuegt sein.

Das mit dem manuellen Reset innerhalb dieser recht kurzen Zeitspanne, ist das beim ProMicro die zwingend erforderliche Vorgehensweise?
Wenn dem so ist, wundert mich schon, dass das in keiner, der bis jetzt von mir gefundenen Dokumentationen auftaucht.

BerndyBrot: Das mit dem manuellen Reset innerhalb dieser recht kurzen Zeitspanne, ist das beim ProMicro die zwingend erforderliche Vorgehensweise? Wenn dem so ist, wundert mich schon, dass das in keiner, der bis jetzt von mir gefundenen Dokumentationen auftaucht.

Das habe ich dazu gefunden: 32U4 Firmware Note

Wenn man’s mal weiss, kann man eigentlich ganz gut damit zurecht kommen. Ich bedanke mich bei allen die mich hier unterstuetzt haben. Jetzt mache ich mich an die komplizierteren Programme fuer mein RFID-Projekt. Kann sein, dass ich mich dann nochmal melden muss.

Gruss Juergen