Direkt ein Hex File brennen

    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!

    • Direkt ein Hex File brennen

      Hallo
      kann ich über Bascom auch direkt ein Hex File brennen?
      Ich habe bei einem bestehenden Gerät den Code ausgelesen, den Controller anschließend geresetet und möchte nun den
      Orginal Code wieder einspielen. Ich konnte über Bascom zwar den Code auslesen und abspeichern, finde aber nichts um den
      Hex code aufzuspielen.
      Danke im Voraus
      Gruß Climber
      Komisch:Dauernd hängt sich mein Rechner auf, meine Wäsche macht das nie
    • Wenn du das programmer-Fenster öffnest, kannst du .bin oder .hex files in den Puffer laden und dann den Pufferinhald in den Kontroller flashen. Das geht hier auch andersrum, Inhalt vom Kontroller in den Puffer, Pufferinhalt als Datei speichern.

      Was meinst du mit 'chip resetet'? Was willst du bezwecken?

      Edit: ich meine das 'Programmier-Fenster', das man mit dem icon 'grüner chip' (oder textool-Fassung?) aufrufen kann, mit dem man auch die fuses einstellen kann.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von tschoeatsch ()

    • Danke habs gefunden. Auslesen und Einspielen klappt.
      Hintergrund:
      Habe eine Zirkulationspumpensteuerung mit deren Funktion ich nicht ganz einverstanden bin.
      Gerät geöffnet. Drin werkelt ein Atemega88. Habe mir einen ISP Adapter gebastelt und Verbindung getestet.
      Fuse auslesen geht. Dann den Hex Code ausgelesen. Mutig den bestehenden Code gelöscht ("Erase Chip") und den zuvor ausgelesenen Code wieder eingelesen.
      Eine zuvor dauerhaft leuchtende LED flackert jetzt ganz leicht. Also irgendwas stimmt nicht mehr. Wird mit "Erase Chip" auch das EEprom gelöscht ?

      Letztendlich wollte ich ja sowieso einen eigenen Code schreiben. Hätte aber schon erwartet dass nach auslesen und einspielen das Gerät wieder gleich funktioniert
      Komisch:Dauernd hängt sich mein Rechner auf, meine Wäsche macht das nie
    • @Climber kein Ausleseschutz in den fuses gesetzt gewesen? Wenn ja, dann kannst du ein Auslesen probieren, es wird aber nicht das Programm gelesen, ist ja geschützt. Löschen kann man trotz Schutz glaub' ich schon. Die fuses sollten aber dabei unangetastet bleiben. Wenn du jetzt wieder versuchst was zu Schreiben, wird das wieder nicht gehen. Es könnte also jetzt sein, das dein Kontroller leer ist und das Flackern spastische Zuckungen. Muss aber nicht so sein, alles wieder Vermutungen von mir.

      Ach, noch was, das eeprom muss man separat auslesen, genauso in den Puffer kopieren und Puffer speichern. Die Datei hat dan die Endung .eep (glaub' ich ;) )
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Noch ein Nachtrag. Wenn das eine kommerzielle Pumpe ist, würde mich das sehr wundern, wenn das Programm nicht vor Auslesen geschützt wäre. Da könnte man doch wunderbare Garantiefälle basteln und der Hersteller hätte keinen Nachweis, dass es nicht an seinem Programm liegt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • eigentlich müsste ich nun einen neuen Thread aufmachen. Der alte Code (Funktion) interessiert mich nicht mehr.
      Das ursprüngliche Programm konnte ich problemlos auslesen. Das war nicht geschützt.

      Jetzt geht es daran dem Gerät eine neue (bessere :) ) Funktion einzuhauchen.

      Anhand der Platine ordne ich aktuell die am verwendeten Gerät bestehenden Ports zu.
      Im Prinzip sind das zwei LED'S, zwei Temperatursensoren und ein 230 Volt Ausgang über ein Solid State Relais von Sharp.

      O.K. das erste Programm soll nur mal die Ausgänge ansteuern.
      Aber irgendwo ist in dem Gerät eine Gemeinheit versteckt die ich nicht blicke.

      Wenn ich in dem Code Waitms 1600 eintrage, flackern alle Ausgänge so ca. im 50 Herz Takt.
      Ab Waitms 1700 sehe ich kein Flackern mehr, die LED's scheinen aus zu sein.

      Nach dem Programm müssten die Ausgänge ja kurz aus und dann dauerhaft an sein.
      Nach meinem Verständnis lässt sich das Verhalten nur durch einen zyklischen Reset erklären.

      Eventuell muss ich nach dem Start einen Ausgang setzen damit der Controller weiterhin Spannung bekommt.
      Oder hat jemand eine andere Idee ???

      Das Ändern der Quarzfrequenz ändert übrigens nichts am verhalten.




      Fuse_Bits.JPG


      Quellcode

      1. Debug Off 'Debug Informationen werden seriell ausgegeben
      2. $regfile "m88def.dat"
      3. $crystal = 40000
      4. $hwstack = 100
      5. $swstack = 60
      6. $framesize = 100
      7. $baud = 4800 'serielle Schnittstelle
      8. Config PortD.5 = Output 'Solid State Relais
      9. Config PortD.6 = Output 'LED Rot
      10. Config PortD.7 = Output 'LED Grün
      11. PortD.5 = 0
      12. PortD.7 = 0
      13. PortD.6 = 0
      14. Waitms 1600
      15. PortD.5 = 1
      16. PortD.7 = 1
      17. PortD.6 = 1
      18. Do
      19. Loop
      Alles anzeigen
      Komisch:Dauernd hängt sich mein Rechner auf, meine Wäsche macht das nie

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Climber ()

    • Watchdog aktiv? Eventuell wirste die Schaltung nochmal checken müssen. Eventuell wurde die Pumpe über das Relais auch im Phasenanschnitt gesteuert, Energiesparen durch variable Drehzahl ist ja heute üblich. Dann gibts irgendwo nen sync mit der Netzspannung, eventuell produziert der das Flimmern.

      Tobias

      Jnd irgendwie kapier ich deine frequenz im Programm nicht. 1MHz ists aber auf keinen fall
    • Climber schrieb:

      Nach dem Programm müssten die Ausgänge ja kurz aus und dann dauerhaft an sein.
      Nach meinem Verständnis lässt sich das Verhalten nur durch einen zyklischen Reset erklären.
      ein Reset würde die LEDs ja nicht gleich einschalten, oder bedeutet LED = 0, dass sie eingeschaltet ist?
      50 Hz sieht man eher nicht flackern, hast du das gemessen?
    • Laut fuses arbeitet der Kontroller mit Quarztakt. Du gibst dem compiler aber 40 kHz! vor.

      So gesehen ist dein waitms deutlich kürzer. Wie @Schraubbaer schrieb, wird jetzt der watchdog (always on) immer wieder reseten.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Bei der Frequenz ist (war) nur der Kommentar falsch.

      Ich habe das bestehende Programm gelöscht (Erase) und durch meinen Code siehe oben ersetzt.
      Watchdog ist eventuell eine Idee. Müsste ich das nicht bei den Fuse Bits finden ?
      In meinem Code behandle ich nichts mit den Fuse Bits.
      Fuse_Bits.JPG
      Komisch:Dauernd hängt sich mein Rechner auf, meine Wäsche macht das nie
    • Hallo
      vielen Dank an alle Experten
      Das Fuse Bit H war tatsächlich der Grund.
      Das Kürzel "WDT" habe ich überlesen bzw. nicht mit Watchdog in Verbindung gebracht.
      Ohne Watchdog funktioniert mein kleines Programm wie gewünscht.
      Jetzt kann ich mit der Planung, Programmierung starten
      Komisch:Dauernd hängt sich mein Rechner auf, meine Wäsche macht das nie
    • Die Angabe für die Frequenz aus meinem Beispielcode stammt noch aus Versuchen ob das merkwürdige Blinken
      was mit der Frequenz zu tun hat.
      Auf dem Quarz ist AQ4.000 aufgedruckt.

      Mit $crystal = 4000000 verhält sich der Controller auch zeit-mäßig richtig.

      P.S.
      Zusätzlich zu Steuerung über Zeit möchte ich die Zirkulationspumpe über Funk an triggern.
      Dies möchte ich über ein RFM12B Modul machen, welches ich noch einfügen muss.

      Die aktuelle Einheit wird über 5 Volt versorgt. Das RFM12B Modul möchte 3,3 Volt.
      Aus meiner Sicht bietet sich folgende Lösung an.

      Lösung : Ich tausche den 5 Volt Längsregler gegen einen 3,3 Volt Typ aus. Der Controller ATEMEGA 88 20AU sollte das können,
      eventuell muss ich noch ein paar (Vor)Widerstände tauschen

      sehe ich das richtig, oder gibt es bessere Möglichkeiten ?
      Komisch:Dauernd hängt sich mein Rechner auf, meine Wäsche macht das nie
    • @Climber mit dem Eintrag $crystal=xxxx änderst du nicht den Systemtakt des Kontrollers. Wenn ich deine Beiträge hier lese, hab' ich den Eindruck, das wäre deine Meinung, das ginge so. Quarzfrequenz und die fuse 'div8' geben den Takt vor. Das $crystal ist nur die Info an den compiler, mit was für einer hw bzw. Systemtakt er rechnen muss. Wenn du zb. einen geringeren Wert vor gibt, dann berechnet bascom auf dieser Grundlage die Schleifen im wait, sodass eben die gewünschte Pause entsteht. Ist der Takt tatsächlich höher, ist der Kontroller schneller mit diesen Schleifen fertig und die Pause ist dann kürzer. Ein 'Spielen' mit dem $crystal bringt daher nix, es erzeugt mehr Durcheinander, als das es was hilft
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • danke tschoeatsch für Deine Info.
      Prinzipiell habe ich das so verstanden wie Du schreibst. Ich gebe zu wenn man meine vorherigen Kommentare liest kann man daran zweifeln. a_19_23577ce2
      Da da erstmalige schnelle Blinken halt ganz und gar nicht zu meinem Programm passte, wollte ich einfach mal schauen ob sich das Verhalten ändert wenn ich "$crystal = " ändere. Die Blinkfrequenz müsste sich ja ändern, wenn das Programm regulär abgearbeitet wird. Da es sich nicht geändert hat wusste ich dass da was "übergeordnetes" zuschlägt.
      Vielen Dank nochmals
      Komisch:Dauernd hängt sich mein Rechner auf, meine Wäsche macht das nie