Arduino Micro nicht mehr erkannt nach upload von MAX31855 Beispiel

Hallo erstmal,

ich habe folgendes Projekt geplant:

Temperaturregelung mit Arduino Micro, Max31855 inkl. Typ-K Thermoelement und SSR.

Wollte zu beginn erst einmal den Max31855 anschließen und schauen, ob ich die Temperatur am seriellen Monitor auslesen kann. Verwendet habe ich dazu die Bibliothek die bei Github dazu verfügbar ist.

Nach Anpassung der verwendeten SPI-Pins und Upload des Beispielcodes “Serialthermocouple” ist der Arduino aus der Liste der Com Ports verschwunden und nicht mehr erreichbar. Zusätzlich leuchtet die TX-LED dauerhaft. Habe im Netz diverse ähnliche Fälle gefunden aber keine der dort angegebenen Lösungen trifft bei mir exakt zu oder hat mein Problem behoben.

Ich verwende einen PC mit Windows7 64bit. Habe auch schon einen anderen Rechner versucht ebenfalls Win7 und 64bit und auch das Anschlusskabel getauscht - beides ohne Erfolg. Konnte aber mit dem ersten Rechner einen anderen Arduino Micro erfolgreich mit “Blink” bespielen und den Com-Port auswählen was bei dem anderen nicht mehr möglich war.

Schaltplan ist als PDF im Anhang.

Darf ich die SPI-Pins so verwenden?

Wie bekomme ich den Micro wieder in einen Zustand, in dem ich ihn programmieren kann?

Vielen Dank schonmal.

Temperaturregelung.pdf (11.9 KB)

Welche Library verwendest du für den Sensor ?
Bitte Link posten.
Den SPI kannst du so verwenden, ich kann da kein Problem erkennen.
Ich könnte mir vorstellen, dass der Sketch die Serielle Schnittstelle zum USB belegt und dadurch der Fehler auftritt.

Vermutlich ist der Fehler nur durch ein erneutes Flashen über den ISP-Port zu beheben.
Dann aber einen anderen Sketch.

Stecke mal alles vom Arduino ab und probiere es nochmal. Es darf wirklich nichts auser usb angeschlossen sein

Danke für die schnelle Antwort.

Folgende Lib wird verwendet:

Hatte diese auch erfolgreich mit einem UNO getestet.

Habe auch den Tip von EIEspanol versucht und wollte ohne irgendeine Peripherie das "Blink" aufspielen aber auch da keine Reaktion.

--> TX-LED leuchtet permanent
--> keine Com-Port Auswahl möglich
--> kein typischer USB-Geräte-Sound beim an-/ oder abstecken des Mico an den PC
--> kein Hochladen möglich

Habe noch den UNO. Kann ich diesen zum Flashen des Micro verwenden?

Viele Grüße

Elektrometaller:
Habe noch den UNO. Kann ich diesen zum Flashen des Micro verwenden?

ja, das geht.

Verwende Arduino as ISP: ArduinoAsISP

Auch wenn hier nur der Uno geflasht wird, das ist per ISP mit allen möglich.

Ich kenne den "micro" nicht weiter, da ich den selber nicht einsetze, aber ich vermute das Problem liegt hier:

 while (!Serial);

Da es auf dem Uno funktioniert, hättest du das Problem auf dem Nano nicht.

Das hat aber mit dem Sketchupload nichts zu tun.

ElEspanol:
Das hat aber mit dem Sketchupload nichts zu tun.

Ok, dann war meine Vermutung, dass dadurch der serielle Port blockiert wird, falsch.

Die Serielle Schnittstelle und manchmal der ganze Micro können ohne "while (!Serial); " blockiert sein.

Ich habe das gestern mit mehrmals ab/anstecken und dann via Reset ausprobiert.. irgendwann hat es dann einfach geklappt.

Reset drücken ist das gleiche wie Abstöppseln, man muss beim Programm uploaden den Richtigen Punkt zum Reset treffen, damit das klappt am besten nur ein Leeres Programm vorsichtshalber mit dem while (!Serial); Block.

Hallo,

habe durch den Tip von HotSystems mit Arduino as ISP den Micro wieder zum Leben erweckt. Konnte ihn anschließend wieder normal Bespielen.

Den Post mit "while (!Serial);" verstehe ich nicht so recht. Hab auch in der Funktionsbeschreibung geguckt aber nicht verstanden, was diese Codezeile macht. Kann mir dies bitte jemand etwas genauer erklären?

Was wäre die bessere Vorgehensweisefür die nächsten Schritte:

A:

Auf dem UNO den Quellcode entwicklen und am Ende auf den Micro aufspielen um zu vermeiden dass sich der Micro wieder aufhängt.

B:

Weiterhin auf dem Micro entwickeln und hoffen das zuvor genanntes Verhalten nicht wieder auftritt.

Vielen Dank und viele Grüße

Prima, dann gehts ja wieder weiter.

Wie sieht denn dein Sketch bisher aus, mit dem du den micro zum Absturz gebracht hast ?
Evtl. kann man ja das Problem da erkennen.

Offensichtlich ist die Anweisung, die ich vermutete, nicht das Problem.
Also nicht irritieren lassen.

Den Post mit “while (!Serial);” verstehe ich nicht so recht. Hab auch in der Funktionsbeschreibung geguckt aber nicht verstanden, was diese Codezeile macht. Kann mir dies bitte jemand etwas genauer erklären?

Ein Trick der für Leonardo und ähnliche erfunden wurde.

On 32u4 based boards (Leonardo, Yùn, ecc) , if (Serial) indicates wether or not the USB CDC serial connection is open. For all other instances, including if (Serial1) on the Leonardo, this will always returns true.

https://www.arduino.cc/en/Serial/IfSerial

Wenn HardwareSerial Objekte als Datentyp bool abgefragt werden, liefert das üblicherweise immer true zurück, ausser wenn dies direkt auf der USB-Serial Schnittstelle und zu früh ausgeführt wird. So kann man sicherstellen, dass diese bereit ist.
Das Ausrufezeichen und das Semikolon am Ende bedeuten das gleiche wie:

while ( Serial == false ) { 
   // nichts tun, nochmal abfragen 
}

falls das dein Verständnis-Problem löst.

Du hast halt aus irgendwelchen Gründen den Bootloader abgeschossen. Das kann passieren, hat meist aber nichts mit dem Sketch zu tun.

Nim weiterhin den Micro, so bleibt dir immer noch der UNO, damit du dem Micro ggf. wieder reparieren kannst.

Hab den Sketch nochmal aufgespielt. Das Beispiel mit seriellen Monitor funktioniert und auch schon die Ausgabe übers LCD-Display. Jetzt muss ich noch den Drehgeber hinzufügen und den Regel-Algorithmus implementieren. Dann sollte es das gewesen sein.

Ich werde dann so wie empfohlen weitermachen. Vielen vielen Dank. Ihr habt mir echt super schnell geholfen.

Viele Grüße