Modul vergisst Programmierung

rotagon

Neues Mitglied
01. Mai 2013
5
0
0
Sprachen
Hallo

Ich mache gerade meine ersten „Gehversuche“ mit diesem Modul. ( blinkende LED )
Dabei fällt mir auf, das nach Abschalten der externen Betriebsspannung der Controller sein Programm verliert. Nach erneuten Einschalten tut sich nichts mehr. Abhilfe schafft bis jetzt nur eine
neue Programmierung. Ist das Normal?
Wenn ich während der Laufzeit den Resettaster betätige ist das Programm weg. Auch hier bleibt bisher nur eine neue Programmierung übrig.
Das Modul ist im Auslieferungszustand.
Hat jemand ähnliche Beobachtungen gemacht, oder kennt das Problem?
 
Hallo,

dass ein Mikrocontroller sein Programm im Flash Memory nach Abschalten der Betriebsspannung "verliert", kann ich mir nicht vorstellen. Es hat bestimmt einen anderen Grund fuer diesen Effekt.
Welchen Programmer verwendet du denn, programmierst du via Bootloader, kannst du dein Testprogramm einmal hier in das Forum stellen? Wird das Modul über USB (Loetjumper) oder extern mit Betriebsspannung versorgt, wenn extern, wie hoch ist diese?

Dirk :ciao:
 
Hallo,

Ich mache gerade meine ersten „Gehversuche“ mit diesem Modul. ( blinkende LED ) Dabei fällt mir auf, das nach Abschalten der externen Betriebsspannung der Controller sein Programm verliert. Nach erneuten Einschalten tut sich nichts mehr. Abhilfe schafft bis jetzt nur eine
neue Programmierung. Ist das Normal?
Wenn ich während der Laufzeit den Resettaster betätige ist das Programm weg. Auch hier bleibt bisher nur eine neue Programmierung übrig.

ein Controller verliert aus dem EEPROM oder Flash keine Daten wenn man es ihm nicht sagt das er sie löschen soll oder man es selber löscht. Da kann man so oft Reset drücken und Strom a/aus machen wie man will. Sonst würde ein PC ja sein BIOS (im Flash) auch beim Strom abschalten verlieren.

Schreib doch mal ein wenig mehr Infos damit man sich ein besseres Bild von deinem Aufbau und Programm machen kann. So ist das irgendwie Kaffesatzleserei.

Gruß
Dino
 
Hallo

Die externe Stromversorgung ist derzeit an den Pins 9 Vcc und 10 GND an der Leiste JP1 angeschlossen, und beträgt 5V. Die LED ,eine low Current mit 2mA an Pin 17 PA1, ist über 1,5k Ohm ebenfalls an Vcc. Das Modul zieht etwa 38 mA ohne LED.
Der Jumper S1 ist offen.
Das Programm:

$regfile = "m128def.dat"
$crystal = 16000000
$baud = 9600

Config PORTA = Output
Do
Toggle PORTA
Waitms 250
Loop
End

wurde mit Bascom geschrieben. Das entstandene .hex File wird anschließend mit dem Development Manager an das Modul gesendet. Das funktioniert soweit problemlos.
Unmittelbar nach der Übertragung beginnt die LED zu blinken.
Solange der USB-Stecker eingesteckt bleibt kann ich die ext.Stromversorgung Ein und Ausschalten. Das Programm beginnt immer wieder zu laufen.
Sobald der USB Stecker und die Stromversorgung entfernt werden geht nach erneutem Einschalten nichts mehr.
Wird Reset gedrückt,ist es, egal in welcher Konfiguration, gleich vorbei.
 
Hi,

wurde mit Bascom geschrieben. Das entstandene .hex File wird anschließend mit dem Development Manager an das Modul gesendet. Das funktioniert soweit problemlos.
Unmittelbar nach der Übertragung beginnt die LED zu blinken.
Solange der USB-Stecker eingesteckt bleibt kann ich die ext.Stromversorgung Ein und Ausschalten. Das Programm beginnt immer wieder zu laufen.
Sobald der USB Stecker und die Stromversorgung entfernt werden geht nach erneutem Einschalten nichts mehr.
Wird Reset gedrückt,ist es, egal in welcher Konfiguration, gleich vorbei.

hmmm ... :confused: ... hört sich irgendwie so an als wenn der Controller im Reset-Status gehalten wird. Also eigentlich garnicht losläuft.

Leg doch mal ne zweite LED an einen weiteren IO-Pin die du einfach nur am Anfang vor deiner Do-Loop-Schleife einschaltest. Wenn die nicht anfängt zu leuchten, dann hast du da Gewissheit.

Zum Beispiel ...

Code:
$regfile = "m128def.dat"
$crystal = 16000000
$baud = 9600

' Config PORTA = Output  ' hab ich mal auskommentiert (totgelegt) 
DDRA = &B1111_1111       ' Alle Pins von PortA auf Ausgang (alternativ zu =Output)

Reset PORTA.2          ' PA.2 auf GND legen, mit LED nach Vcc sollte die dann dauernd leuchten
                       ' wenn nicht, dann steht der Controller im Reset und PA.2 ist hochohmig

Do
  Toggle PORTA.1         ' LED am PA.1 toggeln, man muß nicht den gesamten Port toggeln ;-)
  Waitms 250             ' macht dann 2Hz Blinkfrequenz
Loop

End

Gruß
Dino
 
Hallo. Ich bin gerade unterwegs deshalb kurz.

es tritt ja anscheinend dann auf wenn der usb Stecker nicht eingesteckt ist. Eventuell erhaelt der bootloader dann nach reset ein byte ueber usart ... warum auch immer. In dem Fall wuerde er die app nicht starten sondern auf weitere Kommandos warten. Ich schaue mir das spaeter noch einmal genauer an. Testen kann ich leider erst am Montag.
 
...Welchen Programmer verwendet du denn, programmierst du via Bootloader...
Ich präzisiere mal:
Welchen Hardware-Programmer verwendest Du? Oder programmierst Du via Bootloader?

Das klingt derzeit extrem nach dem Bootloader - den Manager kenne/verwende ich nicht.

Edit: Dirk geht ja bereits drauf ein...
 
Hallo,

im Moment habe ich sonst keine weitere Ideen. Die Sache mit dem Bootloader, der ggf. nach Reset ein Byte über USART empfängt (bzw. RXC1 flag ist gesetzt) und dann aktiviert bleibt, ist das einzigste, was mir im Moment einfällt.

Ich kann das leider erst am Montag testen, bis dahin bitte noch etwas Geduld. Ich melde mich dann.

Dirk :ciao:
 
Hallo

Ja, ich gehe über den Bootloader.

Ich habe die Schaltung und das Programm entsprechend angepasst und konnte folgendes Beobachten. ( USB Stecker ist eingesteckt und ext.Stromversorgung wird fortwährend Ein und Aus geschalten )

Sehr oft wird das Programm korrekt gestartet. LED an PA1 blinkt. LED an PA2 an.
Zwischendrin dann undefinierte Zustände, mal ist PA1 an, mal ist PA2 an und auch mal beide. Selten sind beide aus.
Da das Programm offenbar nicht immer am Anfang gestartet wird habe ich zunächst Störungen vom Labornetzteil vermutet.
Deshalb wurde die ext.Stromversorgung auf Batterie 5V umgestellt. Musste aber dieselben Probleme beobachten.
Als letzte Möglichkeit habe ich nun das Modul auf USB Versorgung umgestellt. Dies brachte aber auch keine Abhilfe. Das Programm läuft nur solange wie der USB Stecker eingesteckt ist. Nach erneutem Einstecken oder Reset ist alles aus.
 
Gut, diese Infos helfen sicherlich schon mal weiter, die Ursache einzugrenzen. Ich werde mich am Montag damit befassen und mich dann hier melden.

Dirk :ciao:
 
Hi,

Ja, ich gehe über den Bootloader.

hmm ... dann hast du wohl auch keinen ISP-Progger :eek:
Das ist natürlich blöd sonst könnte man es mal mit dem blanken Programm (ohne Bootloader) mit entsprechend eingestellten Fuses versuchen. Aber das wäre bei dir dann ne Einbahnstraße aus der du nicht mehr rauskommst :rolleyes:

Wenn du vorhast mehr mit den Atmels zu machen, dann wäre ein ISP-Progger ne gute Investition. Am optimalsten wäre in dem Fall dann der AVRISPmk2.

Gruß
Dino
 
Wenn du vorhast mehr mit den Atmels zu machen, dann wäre ein ISP-Progger ne gute Investition. Am optimalsten wäre in dem Fall dann der AVRISPmk2.

Den AVRISPmkII kann ich auch empfehlen, den haben wir auch im Shop. Das mit der Programmierung über Bootloader in Verbindung mit der Nano-Board Software ist aber schon elegant und funktioniert super schnell und sicher. Das habe ich bei Projekten mit dem MEGA2560-USB und dem XMEGA-A1-USB selber genutzt, obwohl bei mir auch Hardware-Programmer und -Debugger auf dem Arbeitsplatz liegt. ;) Am Montag schaue ich erst mal, ob es irgendwie am Bootloader des Mega128 liegt.

Dirk :ciao:
 
Hi,

Das mit der Programmierung über Bootloader in Verbindung mit der Nano-Board Software ist aber schon elegant und funktioniert super schnell und sicher.
das stimmt schon. So ein ISP-Progger ist aber immer nochmal ne gute Versicherung für den Fall das man mal richtig Probleme hat.

Gruß
Dino
 
Hallo

Ich habe heute versucht das Modul von einem anderen Rechner aus zu programmieren.
Leider entstehen auch hier die selben Probleme.
Sollte sich ISP in diesem Fall wirklich als „Retter in der Not“ erweisen?
Weshalb eigentlich?
 
Hi,

Sollte sich ISP in diesem Fall wirklich als „Retter in der Not“ erweisen?
Weshalb eigentlich?
also ein ISP-Progger ist kein "Retter in der Not". Er kann aber den Atmel auch programmieren wenn du zB aus Versehen den Bootloader mal zerschießt.

Der Atmel muß nach dem Reset ja beim Programmstart entscheiden ob der Bootloader ausgeführt werden soll oder ob dein Programm laufen soll. Da scheint irgendwas durcheinander zu sein. Ob das nun am Bootloader, an der Programmierung oder an äußeren Umständen hängt, das ist so aus der Ferne etwas schlecht zu ermitteln. Dirk wollte sich das ja am Montag mal ansehen. Neben dem Forum/Shop/Arbeit hat er ja auch noch Familie :rolleyes:

Mit nem ISP-Progger kann man den Atmel auch programmieren wenn er total blank ist (also nichtmal nen Bootloader programmiert ist). Ein Bootloader hat dagegen den Vorteil das man keine weitere "Spezialhardware" (Progger) benötigt um was mit dem Atmel zu machen. Das ist dann für den Anfang insgesamt etwas günstiger für den Geldbeutel.

Gruß
Dino
 
Hallo Rotagon,

wir haben leider am Bootloader etwas ändern müssen. Bei Start prüft der Bootloader ob sich eine Applikation im Flash Memory befindet. Ist dies der Fall, wird die Applikation gestartet. Die Prüfung (mittels LPM bei Adresse 0 und 1) hat nicht zuverlässig funktioniert, so dass nicht immer die Applikation gestartet wurde. Das Problem ist nun behoben, die Applikation wird nun immer bei Reset durch Reset-Taster oder PowerOn gestartet.

Ich weiß nun nicht, ob du selber die Möglichkeit hast, den neuen Bootloader zu programmieren oder jemand in der näheren Umgebung kennst, der dies machen kann (Die Fusebits müssen nicht geändert werden). Falls du selber keine Möglichkeit hast, den Bootloader zu programmieren, sende das Modul bitte einfach zurück, wir werden dies dann machen. Hierzu schreibe ich dir gleich noch einmal eine private Nachricht.

Den aktuellen Bootloader (Version 2) kann man hier in meinem Blog herunterladen.
Ich habe zusätzlich noch eine zweite Version mit LED-Unterstützung an PA0 erstellt, da bei dem Modul keine onboard LED vorhanden ist.


(Noch ein Hinweis: Falls das Modul mit externer Betriebsspannung versorgt wird und das USB-Kabel angeschlossen ist, erhält der Mikrocontroller bei ausgeschalteter externer Betriebsspannung noch etwas Spannung über RXD Pin, so dass manchmal ein PowerOn nicht erkannt wird (der Brownout-Detector ist auch nicht aktiviert). Es kommt dann beim Einschalten der externen Betriebsspannung manchmal nicht zu einem PowerOn Reset. Hier also die Betriebsspannung aktiviert lassen und ggf über Reset-Taster resetten oder im autarken Betrieb das USB-Kabel nicht anschließen, oder über USB-VBUS versorgen.)

Grüße,
Dirk
 
Hallo Dirk

Besten Dank für die Hilfe. Super!
Nachdem ich schon an mir gezweifelt habe, gibt das nun wieder richtig Auftrieb.
Leider kann ich den Bootloader nicht selbst programmieren. Ich werde deshalb das Modul, wie in der PM beschrieben, zurücksenden.

Grüße
Rotagon
 
:) Hallo Rotagon,

ich werde es dann schnell programmieren, nochmal testen und zügig wieder zurück senden.

Dirk :ciao:
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)