Programmieren ATMEGA128A

    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!

    • Programmieren ATMEGA128A

      Hat schon jemand Erfahrung mit ATMEGA 128A auf Crumb 128 gesammelt?
      Chip läßt sich mit Bascom und Diamex AVR und STK500 Native unter Win10 trotz leichter Anlaufschwierigkeiten programmieren, aber bereits der erste Zeitbefehl, hier Waitms.. lässt das Programm an dieser Stelle stehen. Mit NOP als Ersatz läuft wenigstens eine primitive Schleife. Lt. Herstellerdatenblatt ist der Atmega als Ersatz für vorhergehende 128er vorgesehen. Ich kann den Fehler nicht zuordnen. Von defektes Bauelement über nicht in BASCOM unterstützt wäre alles möglich. Auch der auf dem Submodul fehlende Kondensator nach Masse konnte ich nicht als Fehler ausmachen. Ein ATMEGA128-16 fünktioniert in dieser Hardwarekombination auf einem Savvy problemlos und relativ schnell.
      Danke im voraus für Hilfestellung
      Siegie
    • Ja stimmt auch erste Aktion war (dummerweise) Programm einspielen und gleich on bord Quarzschaltung aktivieren mit 16MHz, dann gingen die ersten Probleme los. Der erste Chip hat den Programmiervorgang so ausgebremst, daß keine Rückmeldung kam und der Programmiervorgang abgebrochen wurde. Nach Unterbrechung des Programmiervorganges(USB_Adapter ziehen) zeigte er erfolgreiches Löschen an, aber beim Leercheck zeigte er immer neue Bytes an die nicht leer sind. Der Zweite Chip funktionierte bei 16MHz. Erkanntes Problem, daß Programm nicht lief, habe ich erst einmal durch Rückschalten auf internen 4MHz durchgeführt da lief der zweite aber genauso wenig. Den ersten habe ich erst einmal durch einen Quarztausch mit 4MHz zum laufen bekommen und auch auf internen RC gesetzt. Danach ließen sich beide wieder löschen und neu programmieren ohne Probleme, aber Programm bleibt vor dem ersten BASCOM typischen Befehl stehen.
    • $regfile = "m128def.dat"
      $crystal = 4000000 '<- change to whatever the SAAVY uses


      '$PROG &HFF,&H3F,&H99,&HFD' generated. Take care that the chip supports all fuse bytes.
      $PROG &HFF,&H03,&H99,&HFD' generated. Take care that the chip supports all fuse bytes.
      $hwstack = 50
      $swstack = 50
      $framesize = 60


      'Config Lcdpin = Pin , Db4 = Porte.4 , Db5 = Porte.5 , Db6 = Porte.6 , Db7 = Porte.7 , E = Porte.1 , Rs = Porte.0
      'Config Lcd = 16 * 2


      Config PORTa=Input 'Eingang Zählwertübernahme High-Byte


      Config PORTb.0=Input 'Eingabe Taste Start/Stop
      Config PORTb.4=Output 'Relais 1GMHz
      Config PORTb.5=Output 'Relais 200MHz
      Config PORTb.6=Output 'Relais 20MHz
      Config PORTb.7=Output 'Relais TTL/C-MOS


      enable INTERRUPTS
      enable Timer1


      Set portb.4
      nop
      nop
      nop
      nop
      nop
      Waitms 500
      reset PORTB.4


      Do 'start loop


      Set portb.5
      nop
      nop
      nop
      nop
      nop
      'waitms 1000
      reset PORTB.5



      Set portb.6
      nop
      nop
      nop
      nop
      nop
      'waitms 100
      reset PORTB.6


      Set portb.7
      nop
      nop
      nop
      nop
      nop
      'waitms 100
      reset PORTB.7



      loop


      so steht Programm hinter set Port b.4;
      bei deaktiviertem Waitms... Läuft Programm in Schleife.
      Regfile für ATMEGA128A ist nicht vorhanden?! und Hersteller sagt Bauelement ist kompatibel aber mit neuerer Technologie und geringerem Stromverbrauch?!
      Fuses beide probiert fur hohe Frequenz 111111 und 111110; keine Änderung
    • Ach ja noch etwas

      du hast

      Siegie schrieb:

      Config PORTa=Input 'Eingang Zählwertübernahme High-Byte


      Config PORTb.0=Input 'Eingabe Taste Start/Stop
      in deinem Code stehen nur werden diese Eingänge nirgendwo abgefragt.

      PS: Mit "</>" kannst du hier Code einfügen und in dem Fenster bei Hervorhebung "BASCOM-Quellcode" auswählen.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • sind alles nur noch Fragmente vom eigentlichen Programm, die hier keine Rolle spielen, und auch nicht vom Compiler angemahnt wurden. Könnte ich rausnehmen, aber da ändert sich auch nichts. Kann mal jemand schauen, ob er eine neue Version von BASCOM installiert hat, vielleicht gibt es ja schon eine m128Adef.dat, und mein Bascom ist genauso wie ich schon in Rente gegangen.
    • Siegie schrieb:

      bei deaktiviertem Waitms... Läuft Programm in Schleife.
      es ist schon ein Unterschied, ob du 5 NOPs oder Waitms 500 hast. Das sieht dann so aus, als ob der Chip nix macht.
      spätestens dann, wenn der interne Oszillator noch 1MHz liefert.

      Siegie schrieb:

      sind alles nur noch Fragmente vom eigentlichen Programm, die hier keine Rolle spielen, und auch nicht vom Compiler angemahnt wurden. Könnte ich rausnehmen, aber da ändert sich auch nichts.
      Ja, das ist ein großes Problem, besonders bei Anfängern.
      Haben wir hier öfters.
      Nimm doch bitte alles raus, was nicht wichtig ist, nimm am besten auch gleich alles raus, was sowieso auskommentiert ist.
      Dann haben wir eine Basis und müssen nicht dauernd Kleinigkeiten nachfragen.

      Siegie schrieb:

      Kann mal jemand schauen, ob er eine neue Version von BASCOM installiert hat, vielleicht gibt es ja schon eine m128Adef.dat, und mein Bascom ist genauso wie ich schon in Rente gegangen.
      Welche Bascom-Version hast du denn? (Steht ganz oben am Rand)
    • Frage habe ich mir soebend selbst beantwortet. Ich war mutig, und habe mein Bascom upgedatet auf Version 2.0.7.8. Die letzten rückgefragten Fragmente deaktiviert und mit neuer Version compiliert. Erfolg ist der gleiche. In den Def...dat habe ich auch keine Datei gefunden, die ich dem 128A direkt zuordnen kann.
    • Siegie schrieb:

      In den Def...dat habe ich auch keine Datei gefunden, die ich dem 128A direkt zuordnen kann.
      Die Chips der Variante "normal" und mit A hinten dran sind Pin- und Programmkompatibel.
      Es macht keinen Unterschied, welches Regfile du benutzt, wenn nur eines in dem Fall da ist, umso besser, dann gibt es keine Probleme beim programmieren.


      Siegie schrieb:

      und habe mein Bascom upgedatet auf Version 2.0.7.8
      Hast du also die Demo?
    • Hallo Michael,
      der Unterschied zwischen Waitms und NOP ist mir schon bekannt, und ich habe die NOP Befehle eingesetzt, weil Waitms und sicherlich dann auch andere Befehe wie Display- Befehle auch nicht gehen. Mit dem NOP Befehl werden wnigstens die Ausgänge so wie vorgegeben in der Schleife getoggelt und zwar mit knapp 246kHz. Programm entspricht jetzt der genauen Quarzfrequenz und das Fusebit ist auf 111110 gesetzt:
      $regfile = "m128def.dat"
      $crystal = 3686400 '<- change to whatever the SAAVY uses


      $hwstack = 50
      $swstack = 50
      $framesize = 60


      Config PORTb.4=Output 'Relais 1GMHz
      Config PORTb.5=Output 'Relais 200MHz
      Config PORTb.6=Output 'Relais 20MHz
      Config PORTb.7=Output 'Relais TTL/C-MOS


      Set portb.4
      'Waitms 500
      reset PORTB.4


      Do 'start loop


      Set portb.5
      nop
      nop
      nop
      nop
      nop
      'waitms 1000
      reset PORTB.5



      Set portb.6
      nop
      nop
      nop
      nop
      nop
      'waitms 100
      reset PORTB.6


      Set portb.7
      nop
      nop
      nop
      nop
      nop
      'waitms 100
      reset PORTB.7



      loop
    • wieder nur die Hälfte beantwortet. Ich habe jetzt die aktuelle Version, und benutze eine Vollversion. Übrigens bin ich auch kein ganz neuer Anfänger, und konnte mir bisher auch selbst immer behelfen, aber das Problem kannte ich noch nicht. Da aufgeben nicht mein Ding ist, habe ich mich erstmal in die Comunity eingelinkt, weil ich aus ehemals beruflicher Erfahrung weiß daß jüngere Leute oftmals bessere und neuere Ideen haben.
    • Siegie schrieb:

      NOP Befehle eingesetzt, weil Waitms und sicherlich dann auch andere Befehe wie Display- Befehle auch nicht gehen.
      NOP macht das gleiche wie Waitms, nur einzeln, nicht im Paket.


      Siegie schrieb:

      und zwar mit knapp 246kHz
      Da kann was nicht stimmen.
      Deine Loop läuft mit den NOPs in 30 Zyklen durch.
      Macht bei 3686400 MHz Takt 122,8kHz Ausgabefrequenz


      Siegie schrieb:

      Set portb.7
      nop
      nop
      nop
      nop
      nop
      'waitms 100
      reset PORTB.7
      Auch hier sehe ich Unstimmigkeiten.
      Hat der Compiler bei den NOPs nicht gemeckert?

      Möglicherweise compiliert dein Compiler nicht wegen der falschen nops und zeigt dir die Fehler nicht weil der Haken in den Einstellungen fehlt.
      Dann programmierst du immer wieder eine alte Hex-Datei.
      Ich sage das nur, weil mir das auch schon mal passiert ist ;)