Hallo Besucher, der Thread wurde 8,8k mal aufgerufen und enthält 24 Antworten

letzter Beitrag von Rob64 am

Firmware auf einen ATMega8-16PU programmieren

  • Hallo,


    ich möchte mir einen PS/2 to C64 Mouse Adapter bauen (siehe http://sensi.org/~svo/%5Bm%5Douse/). Ich habe eine Platine und alle Bauteile beisammen. Kern der Schaltung ist ein ATMega8-16PU. Ich habe mir einen bei Reichelt besorgt (Bestellnummer "ATMEGA 8-16 DIP"). Nun stehe ich vor der Aufgabe, die Firmware in den ATMega8 zu brennen.


    Den Code gibt es hier:


    https://github.com/svofski/mouse1351


    Nach den Angaben auf dieser Seite muss der Code mit WinAVR kompiliert werden. WinAVR habe ich mir bereits installiert. Ich habe leider überhaupt keine Ahnung von diesen Dingen und wie man ein Programm auf einen ATmega bringt. Daher bitte ich schon vorab um Nachsicht für die vielen Fragen, die sich vielleicht einfach mit google beantworten lassen, wenn ich denn genau wüßte, wonach ich suchen soll.....


    Ich müsste also als erstes wissen, wie ich welche Sourcecode - Datei mit welchen Befehlen mit WinAVR kompilieren kann.


    Dann muss die Firmware ja irgendwie in den ATMega8. Mit welcher Hardware mache ich das ?

    Ich habe einen "Jotka Arduino Uno ICSP Shield" auf einem Arduino Uno und auch einen TL866CS MiniPro.


    Wie war das mit dem Bootloader, ist der auf dem ATMega8 von Reichelt drauf ?


    Wenn nicht, kann ich den mit dem Jotka Arduino Uno ICSP Shield oder auch mit dem TL866CS MiniPro aufspielen ? Welches Programm kann ich dann zum Brennen der Firmware nehmen ?


    Grüße,

    Ralf

  • Also, am Brennen der Firmware wird es nicht scheitern, das kann ich Dir gerne machen.

    Ein ATmega, der nicht ausdrücklich mit „eingebautem“ Bootloader verkauft wird, hat auch keinen. Ein Arduino hat dagegen immer einen Bootloader.

    Das Shield kenne ich nicht und den TL866 kenne ich nur als EPROM Brenner, aber es kann gut sein, dass damit auch AVR geflasht werden können. Muss ich erst googlen...


    Edit 1: Note: TL866CS does not support ICSP Das kannst Du schon mal knicken.

  • Laut http://www.autoelectric.cn/en/tl866_main.html kann die CS-Version das aber nicht.

    Was genau kann die CS-Version Deiner Meinung nach nicht? Ich habe hier einen TL866CS und damit schon diverse AVR Controller programmiert. Das einzige, was die CS-Version nicht hat, ist ein ISP-Anschluß. Daher schrieb ich ja auch:

    (Vorausgesetzt natürlich, der IC ist noch nicht fest verlötet. :) )

  • Wenn nicht, kann ich den mit dem Jotka Arduino Uno ICSP Shield oder auch mit dem TL866CS MiniPro aufspielen ?


    Das Shield kenne ich nicht und den TL866 kenne ich nur als EPROM Brenner, aber es kann gut sein, dass damit auch AVR geflasht werden können.

    Der TL866 könnte den ATMega8 per ICSP programmieren der TL866CS nicht. Dem fehlt die passende Schnittstelle.


    Der ATMega8-16PU ist ja einer im DIL Gehäuse, den kannst Du direkt (wie ein EEPROM) in den TL866 stecken und mit der zugehörigen Software programmieren, sowohl die Firmware als auch die Fuse-Bits. (Vorausgesetzt natürlich, der IC ist noch nicht fest verlötet. :) )

    Der ATMega der in der verlinkten Schaltung verwendet wird kommt in MLF Bauform daher. Man bräuchte also einen Adapter MLF zu DIL um den direkt im TL866 programmieren zu können. Die sind richtig teuer.


    Wie gesagt der TL866 hat eine ICSP Schnittstelle mit dem der Chip auf der Platine programmiert werden könnte, wäre nur die Schnittstelle schon vorgesehen.

    So bleibt eigentlich nichts anderes übrig als die ICSP Schittstelle (6 Leitungen an die passenden ATMega8 Pins) direkt einzulöten. Dann kann der Controller mit jedem ISP Programmer beschrieben werden. Die Frage ist eigentlich nur warum man noch mit einem Bootlader rum machen soll. Denn der wird für ICSP programmierung nicht gebraucht.


    Also wenn das meine Baustelle wäre würde ich, falls kein TL866 vorhanden ist, mir einen günstigen Programmer besorgen, die Schnittstelle an die Platien löten, und die Fuses und die Firmware (ohne Bootlader) flashen.

    Ein guter Programmer (nicht der billigste) ist nach meiner Erfahrung der von Pololu. Der ist schön zu konfigurieren und arbeitet auch problemlos mit WinAVR zusammen.

  • Der ATMega der in der verlinkten Schaltung verwendet wird kommt in MLF Bauform daher.

    Ja schon, aber anscheinend hat ralf02 eine etwas andere Platine, denn:

    Kern der Schaltung ist ein ATMega8-16PU. Ich habe mir einen bei Reichelt besorgt (Bestellnummer "ATMEGA 8-16 DIP").

    Und den kann man sehr wohl mit dem TL866CS programmieren!


    Ich kenne das Projekt zwar nicht, aber wenn ich einen Blick auf das Github Repo werfe, würde ich vermuten, dass Du die Firmware auch gar nicht selbst compilieren musst. Anscheinend findest Du die fertige Datei bereits im Unterverzeichnis "boot" unter dem Namen "mouse+boot.hex". Die kannst Du direkt mit MiniPro öffnen. Dann musst Du noch die Fuse-Bits in der Config-Sektion einstellen, so dass hfuse=0xDC und lfuse=0xE4, also etwa so:


    mouse1531fuses.PNG

  • Ah OK das hab ich überlesen. Dann gebe ich dir natürlich recht. Das mit der HEX Datei scheint auch so zu sein. Frag mich halt immer noch für was der Bootlader gut sein soll. Aber wenn er mit drauf ist dann stört das auch nicht weiter.

  • Hallo,


    Danke für die Infos. Ich habe es jetzt hinbekommen. Es ging mit dem TL866CS und der Hex-Datei "mouse+boot.hex". Ich habe diese Platine:


    PS2to1351.JPG


    Auf dieser Seite stehen auch die Fuse-Einstellungen:


    https://www.pcbway.com/project…_hardware_emulation_.html


    Der Adapter hat auf Anhieb funktioniert, ich hatte allerdings erst Probleme, weil ich ihn als erstes mit GEOS getestet hatte und dort kein Maustreiber geladen war.


    Grüße,

    Ralf

  • Ich hab mir gerade die Schaltung, die auf der Projektseite zu download steht, mal in Eagle angesehen. Da ist definitiv ein MLF verbaut. Also ralf02 wenn du da nicht ein anderes Layout verwendest dann hast du die falsche Bauform vom Atmega gewählt.


    MLF.JPG



    Edit:

    Zu langsam...

    OK dann sollte es passen.

  • Hallo, hänge mich mit meiner Frage hier dran:

    habe noch zwei CJoy-Adapter (--> Cjoy) welche ich nochmals flashen wollte (Devicename ändern). Hatte das seinerzeit mit einem Parallel-Adapter (Drucker-Port) und PonyProg übertragen.

    Mein Rechner hat nun keinen Parallelport mehr. Wie bekomme ich das hin ? evt. mit einen FTI232 ? auch müsste ich das *.asm-File neu compilieren, nur mit welcher SW ?

  • Also mit compilieren kann ich Dir nicht weiterhelfen, da habe ich selbst keine Ahnung von. Aber fürs Flashen der fertigen Hex-Datei kann ich den TL866CS empfehlen, kostet so ca. 50 EUR. Der ist, so finde ich, sein Geld wert, denn man kann damit viele Prozessoren flashen und fast alle Eproms brennen (er kann allerdings keine 25 Volt Eproms brennen).


    Grüße,

    Ralf

  • Es ist eine einmalige Sache, habe sonst kaum ATmega8 zu flashen.

    Wie siehts mit USB Adaptern aus ? wie oben schon gefragt mit dem FTI232 ?

    für Atmega´s benutze ich AVRDude mit Guloprog Programmer. Einfacher Aufbau und funktioniert.

    "Was heute noch wie ein Märchen klingt,kann morgen Wirklichkeit sein.Hier ist ein Märchen von übermorgen.Es gibt keine Kupferka­bel mehr,es gibt nur noch die Glasfaser und Terminals in jedem Raum.Man siedelt auf fernen Rech­nern.Die Mailboxen sind als Wohnraum erschlossen.Mit heute noch unvorstellbaren Geschwindigkeiten durcheilen Computerclubs unser Da­tenverbundsystem.Einer dieser Com­puterclubs ist der CCC.Gigantischer Teil eines winzigen Sicher­heitssystems,das die Erde vor Bedrohungen durch den Gilb schützt.Begleiten wir den CCC und seine Mitglieder bei ihrem Patrouillendienst am Rande der Unkenntlich­keit. CCC'84 nach ORION'64"

  • arris: eine mögliche Lösung die ich gerne probiere. Wenn der BeispielSketch ArduinoISP geflasht ist und der Arduino per USB am Rechner hängt, wie wird dann der Flashvorgang zum ATmega8 gestartet ?

    Der exterme Quartz hat 12MHz, muss ich den Sketch hier anpassen ?


    Markus64: oder mit angeschlossenem Arduino per USB und AVRDude den Flashvorgang starten ?



    Die Beschaltungmitt einem Quartz als Taktgeber ist vorhanden und der ATmega8 auch nicht mehr taufrisch (wg. FuseBits). In der Anleitung zu CJoy sollen die FuseBits BODLEVEL und BODEN gesetzt werden (neg. Logik)


    Also soetwas:

    Code
    1. avrdude -c avrisp -p atmega8 -P COM5 -b 19200 -U hfuse:w:0xff:m -U lfuse:w:0x3f:m
  • Es gibt irgendwo ne Anleitung, wie man einen Arduino Uno z.B. als Programmer verwendet und wie MISO, MOSI, RESET, GND UND Vcc angeschlossen werden. Es steht auch in der Arduino IDE als Beispiel. Aber aus dem Hut weiß ich das jetzt auch nicht. Letztlich verwendet die IDE ja auch nur AVRDude.

    "Was heute noch wie ein Märchen klingt,kann morgen Wirklichkeit sein.Hier ist ein Märchen von übermorgen.Es gibt keine Kupferka­bel mehr,es gibt nur noch die Glasfaser und Terminals in jedem Raum.Man siedelt auf fernen Rech­nern.Die Mailboxen sind als Wohnraum erschlossen.Mit heute noch unvorstellbaren Geschwindigkeiten durcheilen Computerclubs unser Da­tenverbundsystem.Einer dieser Com­puterclubs ist der CCC.Gigantischer Teil eines winzigen Sicher­heitssystems,das die Erde vor Bedrohungen durch den Gilb schützt.Begleiten wir den CCC und seine Mitglieder bei ihrem Patrouillendienst am Rande der Unkenntlich­keit. CCC'84 nach ORION'64"

  • Hallo,


    habe die Variante mit ArduinoISP und avrdude hinbekommen :thumbsup:


    Jetzt möchte ich den SourceCode ändern (DeviceName), da ich zwei Controller habe. Wie bekomme ich den Sourccode compiliert ? gibt es ein Komandozeilen-Tool ?