Seit einiger Zeit Baue ich Schaltungen mit dem Arduino Board. In meinem neusten Projekt nutze ich den ENC28J60 (über SPI) und ein monochrom 1,3" Display (über i2c). Wenn ich den Source Code nun übersetze und auf den Arduino Micro übertrage ist dieser über USB nicht mehr erreichbar (auch nicht mehr zum Programmieren).
Als Library benutze ich für den ENC die Ethercard Bibliotheken und für das monochrom Display die Bibliotheken von Adafruit.
Durch Neuflashen des Bootloaders kann ich den Arduino wiederbeleben.
Der Micro hat das gleiche Problem wie die Leonardos: wenn Dein Sketch fehlerhaft ist und in einer Endlos-Schleife hängen bleibt (Uwe's Vermutung könnte der Grund dafür sein), wird auch die USB-Schnittstelle nicht mehr bedient. Ein Reflashen des Bootloaders behebt das (weil das ganze Flash überschrieben wird), alternativ kannst Du das Hochladen durch manuellen Reset und gutes Timing beim Upload auch hinkriegen.
Dies ist dem Konzept geschuldet, dass der Hauptprozessor sich auch um den USB-Bus kümmert. Wenn dieser "stehen bleibt", funktioniert natürlich auf dem Bus auch nichts mehr.
Das war zunächst auch meine Vermutung daher habe ich in die Main loop einen delay von 40ms eingebaut um dem Prozessor sozusagen luft zum Arbeiten zu verschaffen. Dies war leider auch ohne erfolg.
Darüber hinaus habe ich das Netzwerk und das Display ein einzelnen Sketchen getestet hier haben beide ihre Aufgabe ohne Probleme lösen können.
Die einzige Schleife, die ich selber programmiert habe, ist die Main loop.
Wie könnte man auf einfache Art und weise so ein Problem finden?
chris596:
Die einzige Schleife, die ich selber programmiert habe, ist die Main loop.
Wie könnte man auf einfache Art und weise so ein Problem finden?
Stell mal den Sketch rein. Die loop-Schleife (while(1)) ist immer aktiv und so gewünscht. Eine for-Schleife die nicht hochzählt nicht, vielleicht ein Argument falsch gesetz.
Das war zunächst auch meine Vermutung daher habe ich in die Main loop einen delay von 40ms eingebaut um dem Prozessor sozusagen luft zum Arbeiten zu verschaffen. Dies war leider auch ohne erfolg.
Darüber hinaus habe ich das Netzwerk und das Display ein einzelnen Sketchen getestet hier haben beide ihre Aufgabe ohne Probleme lösen können.
Die einzige Schleife, die ich selber programmiert habe, ist die Main loop.
Wie könnte man auf einfache Art und weise so ein Problem finden?
Danke
Gurß
Chris596
Du hast mir nicht zugehört.
Jeder xx.print() verbraucht Ramspeicher. Wenn die 2,5kByte des ATmega32U2 voll sind werden Variablen bzw Stack überschrieben und der Micro reagiert nicht mehr und/oder macht irgendetwas nicht vorhersehbares.
also bitte gib in alle Serial.print("text"); und client Print("text"); das F() Makro
siehe FAQ Neuigkeiten und Probleme ab Arduino IDE 1.0 - #2 by uwefed - Deutsch - Arduino Forum
Grüße Uwe
Danke Uwe jetzt scheint der Arduino wieder erreichbar zu sein. Das F Makro kannte ich bisher noch nicht.
uwefed:
chris596:
Hallo pylon,
Das war zunächst auch meine Vermutung daher habe ich in die Main loop einen delay von 40ms eingebaut um dem Prozessor sozusagen luft zum Arbeiten zu verschaffen. Dies war leider auch ohne erfolg.
Darüber hinaus habe ich das Netzwerk und das Display ein einzelnen Sketchen getestet hier haben beide ihre Aufgabe ohne Probleme lösen können.
Die einzige Schleife, die ich selber programmiert habe, ist die Main loop.
Wie könnte man auf einfache Art und weise so ein Problem finden?
Danke
Gurß
Chris596
Du hast mir nicht zugehört.
Jeder xx.print() verbraucht Ramspeicher. Wenn die 2,5kByte des ATmega32U2 voll sind werden Variablen bzw Stack überschrieben und der Micro reagiert nicht mehr und/oder macht irgendetwas nicht vorhersehbares.
also bitte gib in alle Serial.print("text"); und client Print("text"); das F() Makro
siehe FAQ Neuigkeiten und Probleme ab Arduino IDE 1.0 - #2 by uwefed - Deutsch - Arduino Forum
Grüße Uwe