Hab ich mir den Bootloader zerschossen?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Hab ich mir den Bootloader zerschossen?

      Hallo,

      ich habe das Programm getestet:
      mikrocontroller.net/topic/27901

      Jetzt bekomme ich kein Programm mehr geladen.
      Der Chip wird noch erkannt, fann versucht der Bootloader was hochzulade,
      der grüne Balken läuft fast bis durch und dann tut sich nichts mehr.
      Komischerweise, hatte es danach einmal noch geklappt und ich konnte mein
      altes Programm laden.
      Das wars dann aber, jetzt bekomme ich nichts mehr rauf.

      Gruß Ralf
    • Der Bootloader ist jetzt wirklich runter.
      Ich habe das AVR Studio installiert und meinen AVR MKII Programmer rausgekramt.
      Mal kurz falsch was angeklickt und das Programm war oben und der Bootloader
      wahrscheinlich unten.
      Egal, er hat nicht mehr funktioniert.
      Was habe ich den jetzt für Möglichkeiten? Könnte ich den MSC Bootloader auf dem
      Arduino Uno installieren? Mit dem habe ich schon oft was gemacht und der hat einwandfrei
      funktioniert? Normalerweise ist da ein FT232 verbaut, ist aber ein China Klon,
      da steht nichts drauf.
      Ich könnte natürlich alles mit dem ISP Programmer machen, aber ab Dienstag ist das Gerät
      außer Landes und ich wollte eigentlich über den Teamwiever drauf zugreifen können.
      Außerdem möchte meine Tochter, für die ich das baue, da auch selbst mal was verändern können.

      Zeitmäßig wäre ich wahrscheinlich gerade so fertig geworden, wenn nichts dazwischen gekommen
      wäre. Jetzt komme ich so richtig in Panik und hab das Gefühl, die ganze Arbeit und das versaute
      Weihnachten war umsonst.
      Was tun?

      Gruß Ralf
    • Beachte bevor du den Button zum brennen drückst, ob in der Voreinstellung ein Häkchen für AVR vor dem brennen "löschen" definiert ist!
      Zu erwarten ist dann doch, es wird der ganze AVR inclusive Bootloader gelöscht. Futsch ist dann also der Bootloader auf Befehl.
      Daran zu denken ist nicht einfach, weil man bisher nur per ISP programmiert hat und an solche Vorbereitungen beim brennen über Bootloader nicht denkt.

      Ich brenne Arduino-Boards mittlerweile mit dem XLoader. Programmiere wie üblich in Basic, lasse die Hexdatei per compilieren erzeugen. Brenne dann diese Hexdatei über USB Kabel und den Xloader in den Mega auf dem Board.

      Apropos Arduino-Boards. Ich habe bemerkt beim Mega2560 sind 16 Portpins nicht nach außen geführt, hängen also in der Luft.
      Diese sollte man wohl besser definiert auf H- oder L-Pegel legen, oder hat jemand einen anderen Vorschlag?
    • Ging schon wieder nicht.
      Ein paar Versuche, dann ließ sich wieder nichts hochladen.
      Wollte den Bootloader noch mal neu aufspielen, aber jetzt geht es wieder.

      Irgendwie instabil das Ganze.

      An meiner Verkabelung kanns nicht liegen, der UNO hängt
      dann nur mit dem USB Kabel am Computer.
    • Ralf schrieb:

      Irgendwie instabil das Ganze.

      An meiner Verkabelung kanns nicht liegen, der UNO hängt
      dann nur mit dem USB Kabel am Computer
      Der Bootloader ist normalerweise recht stabil. Ich habe schon etliche nanos und Unos (Atmega328p) über Bootloader und Bascom programmiert und selten Probleme gehabt.
      Probleme hatte ich mal mit einem Nano, der brauchte noch einen Abblockkondensator, dann lief es.
      Auch wenn das Programm viel auf der seriellen rumrödelt, dann gibt es Probleme mit der Erkennung, hier einfach mal den Reset drücken und dann gleich auf Programmieren. In der ersten Sekunde nach dem Reset ist nämlich der Bootloader aktiv.
    • Nein, nein, bitte verwechsel das nicht.
      An die Reset-Leitung gehört kein Kondensator.
      Ich meinte, an GND-VCC, zur Stabilisierung der Versorgung.
      Der Thread von deinem Link schafft mehr Verwirrung als Klarheit, besser du vergisst das wieder.

      Ralf schrieb:

      Wenn er hängt und ich drücke den Resettaster, dann programmiert er.
      Eigenartigerweise auch, wenn einige Sekunden verstrichen sind.
      Wie gesagt, wenn dein Programm auf der seriellen viel macht, dann gibt es manchmal Schwierigkeiten.
      Wenn dein Programm erst später mit der seriellen Aktivität anfängt, dann hast du auch länger Zeit nach dem Reset. Aber ohne Programm ist das nur Spekulation aus meiner Erfahrung heraus.
    • Das ist wieder so ein Fall, wo ein Waitms 500 oder Wait 1 als erster Befehl Wunder wirkt..
      Wahrscheinlich war der Bootloader gar nicht zerschossen, sondern das Programm sendete zu früh, der Programmmer hatte wahrscheinlich gar keine Zeit, das Programm zu übertragen, bevor der Bootloader beendet wurde.

      Ich kenne den Effekt zu gut, wenn man Arduino-Boads mit Arduino-Bootloader mit Bascom programmieren will.
      Wie gesagt, ein Wait am Anfang einfügen hilft da Wunder.
    • Ralf schrieb:

      Aber der Kondensator, der zwischen Resetpin und DTR liegt, scheint wohl
      das Problen zu sein.


      Mag sein, aber in dem Link war auch das Problem, dass der USB-Chip beim Reset-Drücken vom Betriebssystem abgemeldet wurde, was nicht der Normalfall ist. Außerdem wurde im Reset der Pegel Vcc auf 3,3V heruntergezogen, auch nicht normal, vermutlich schlechte Versorgung, aber den Abblockkondensator hatte ich schon erwähnt.
      Wie gesagt, bisher habe ich so was noch nicht erlebt und es wäre blauäugig, sich daran festzubeißen.

      Ist ein bisschen wie Krankheiten googeln a_28_2c02f089
    • Hallo,

      ich bins nochmal.
      Mittlerweile ist das Programm fertig, habe eine Menge geändert und es läuft erstaunlicherweise zur Zeit ohne den WAIT Befehl am Anfang.
      Ich würde ihn gerne drin lassen, denn der ATMega wird ja dann an einem anderen Computer programmiert und da klappt es dann eventuell nicht.
      Das Problem ist, das der Controller Laborpumen steuert, die auf keinen Fall nach einem Stromausfall mit voller oder halben Leistung anlaufen dürfen. Auch die eine Sekunde wäre eine Sekunde zuviel.
      Die Digitalpotis stehen beim Einschalten automatisch auf Mittelstellung, die würde ich gleich am Anfang in den Shutdownmodus versetzen und dann werden die Werte aus dem EEprom geladen und die Pumpen werden gestartet.
      Wann könnte ich denn im Programm am frühesten den Portpin setzen?
      Vor dem Waitbefehl, bringt der dann noch was?
      Ich kanns auch schlecht testen, wie schon geschrieben, zur Zeit läufts auch ohne Wait.

      Gruß Ralf
    • Ralf schrieb:

      Mittlerweile ist das Programm fertig, habe eine Menge geändert und es läuft erstaunlicherweise zur Zeit ohne den WAIT Befehl am Anfang.
      Der Wait-Befehl soll verhindern, dass der Controller gleich nach dem Reset serielle Ausgaben macht und damit den Programmer daran hindert per Bootloader ein Programm einzuspielen.

      Das Wait kannst du auch später einfügen - nachdem Pins und Schnittstellen konfiguriert sind.
      Der sollte aber i.d.R. vor der Hauptschleife (vor regelmäßigen seriellen Ausgaben) ausgeführt werden.
      Damit gibst du dem Programmer Zeit und das Programm lässt sich flashen.

      Das Programm läuft selbstverständlich auch ohne diesen Wait. Aber Flashen lässt es sich dann per Bootloader unter Umständen nicht mehr. Die Erfahrung habe ich immer wieder mit Arduino-Boards gemacht, die im Bit Bascom per Bootloader (und originalem Arduino Bootloader) programmiert habe.

      Bezüglich Loslaufen der Laborpumpen beim Einschalten:

      Sollte das Problem dennoch bestehen, dass die Laborpumpen anlaufen, bevor das Programm seinen regulären Dienst aufnimmt, musst du dafür sorgen, dass die Pumpen noch kein Loslaufsignal bekommen.

      Während dem Start helfen da je nach notwendigem Pegel PullUp oder PullDown-Widerstände, damit ein definierter Pegel herrscht, solange die Pins noch im Tristate-Mode sind (hochohmig als Eingang konfiguriert).
      Meist reichen hier Widerstände zw. 4,7kOhm und 22kOhm. Hängt aber auch von der Beschaltung ab.

      Da hat Pluto völlig recht! Pins per PullUp hoch- bzw. per PullDown runterziehen, so dass für die Pumpen ein inaktiver Pegel anliegt.

      Dein Display-Fehler (sporadisch kryptische Zeichen) hängt bestimmt mit dem Schalten der Pumpen zusammen.
      Vielleicht brauchst du Blockkondensatoren am Controller und am Display, was man normalerweise obligatorisch macht. Hast du die Pins für DB4 bis DB7, Enable und Write-Pin als Ausgang geschaltet?