- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Mega168 mit STK200 und GCC programmieren

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2006
    Ort
    Gratkorn
    Alter
    34
    Beiträge
    207

    Mega168 mit STK200 und GCC programmieren

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo an alle

    Da mein Mega 8 nun kaoutt ist muss ich mir einen neuen µC besorgen. ICh werd natürlich wieder ein Mega 8 nehmen.

    Ich will jedoch auch noch einen Mega168 mitkaufen da er Pinkompatibel ist und sehr interessante Daten hat.

    Nun meine Frage. Kann man den Mega 168 mit dem STK 200/ STK 300 Programmmer (LPT mit IC 78HCT244) mit WinAvr programmieren?

    Wenn ja, wie?

    Kann mir das wer erkären?

    Unter AvrDude hab ich ihn ncht gefunden

    Danke im Voraus

    Gruß Robert

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    Hardwaremässig läuft das für beide vom programmieren her gesehen gleich, ich hab meinen bis jetzt nur unter Bascom programmiert, Pony kennt den M168 auch nicht, kommt darauf an ob AvrDude die ID des M168 kennt.
    Oder ist das genau das Problem ?
    Dei neueste Version sollte die 168er aber kennen/können !

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    also ich hab etwas rumprobiert mit AVRDude,
    mit der Version die bei WinAVR-20050214 dabei ist geht es von Haus aus nicht (AVRDude 4.4.0),
    Welche bei WinAVR-20060125 dabei ist weiss ich nicht, denn da gibts auch Probleme mit AVRStudio, weshalb ich das nicht installiert habe.
    AVRDude 5.0 kann das auch nicht,
    aber AVRDude 5.1 könnte das, gibts aber nur als Source, da ich aber keine Lust hatte irgendwas zu kompilieren, hab ich einfach die Teile aus der Config kopiert und ein wenig angepasst,
    wenn man die 5.0 verwendet muss man nix anpassen, einfach reinkopieren,
    bei einer älteren hab ich auch erstmal reinkopiert, und dann solange aufgerufen und die Fehlerhaften Zeilen gelöscht, bis es geklappt hat

    Wenn man das AVRDude-GUI verwendet gibts noch das Problem, das man den M168 nicht per Dropdown auswählen kann,
    dazu kann man aber einfach unten bei "Command-Line" die option -p ändern.
    Klappte bei mir jetzt wunderbar mit AVRDdude 5.0 und einem M168
    \/

    dieser Teil muss mit in die avrdude.conf (passend für AVRDude 5.0)
    Code:
    #------------------------------------------------------------
    # ATmega168
    #------------------------------------------------------------
    
    part
        id              = "m168";
        desc            = "ATMEGA168";
        stk500_devcode  = 0x86;
        # AVR910_devcode = 0x;
        pagel           = 0xd7;
        bs2             = 0xc2;
        chip_erase_delay = 9000;
        pgm_enable       = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
                           "x x x x x x x x x x x x x x x x";
    
        chip_erase       = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
                           "x x x x x x x x x x x x x x x x";
    
        timeout         = 200;
        stabdelay       = 100;
        cmdexedelay     = 25;
        synchloops      = 32;
        bytedelay       = 0;
        pollindex       = 3;
        pollvalue       = 0x53;
        predelay        = 1;
        postdelay       = 1;
        pollmethod      = 1;
    
        memory "eeprom"
            size            = 512;
            min_write_delay = 3600;
            max_write_delay = 3600;
            readback_p1     = 0xff;
            readback_p2     = 0xff;
            read            = " 1 0 1 0 0 0 0 0",
                              " 0 0 0 x x x x a8",
                              " a7 a6 a5 a4 a3 a2 a1 a0",
                              " o o o o o o o o";
        
            write           = " 1 1 0 0 0 0 0 0",
                              " 0 0 0 x x x x a8",
                              " a7 a6 a5 a4 a3 a2 a1 a0",
                              " i i i i i i i i";
            ;
    
        memory "flash"
            paged           = yes;
            size            = 16384;
            page_size       = 128;
            num_pages       = 128;
            min_write_delay = 4500;
            max_write_delay = 4500;
            readback_p1     = 0xff;
            readback_p2     = 0xff;
            read_lo         = " 0 0 1 0 0 0 0 0",
                              " 0 0 0 a12 a11 a10 a9 a8",
                              " a7 a6 a5 a4 a3 a2 a1 a0",
                              " o o o o o o o o";
            
            read_hi          = " 0 0 1 0 1 0 0 0",
                               " 0 0 0 a12 a11 a10 a9 a8",
                               " a7 a6 a5 a4 a3 a2 a1 a0",
                               " o o o o o o o o";
            
            loadpage_lo     = " 0 1 0 0 0 0 0 0",
                              " 0 0 0 x x x x x",
                              " x x a5 a4 a3 a2 a1 a0",
                              " i i i i i i i i";
            
            loadpage_hi     = " 0 1 0 0 1 0 0 0",
                              " 0 0 0 x x x x x",
                              " x x a5 a4 a3 a2 a1 a0",
                              " i i i i i i i i";
            
            writepage       = " 0 1 0 0 1 1 0 0",
                              " 0 0 0 a12 a11 a10 a9 a8",
                              " a7 a6 x x x x x x",
                              " x x x x x x x x";
    
            mode        = 0x41;
            delay       = 6;
            blocksize   = 128;
            readsize    = 256;
    
            ;
            
        memory "lfuse"
            size            = 1;
            min_write_delay = 4500;
            max_write_delay = 4500;
            read            = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
                              "x x x x x x x x o o o o o o o o";
            
            write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
                              "x x x x x x x x i i i i i i i i";
            ;
        
        memory "hfuse"
            size            = 1;
            min_write_delay = 4500;
            max_write_delay = 4500;
            read            = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
                              "x x x x x x x x o o o o o o o o";
            
            write           = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
                              "x x x x x x x x i i i i i i i i";
            ;
        
        memory "efuse"
            size            = 1;
            min_write_delay = 4500;
            max_write_delay = 4500;
            read            = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
                              "x x x x x x x x x x x x x o o o";
            
            write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
                              "x x x x x x x x x x x x x i i i";
            ;
        
        memory "lock"
            size            = 1;
            min_write_delay = 4500;
            max_write_delay = 4500;
            read            = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
                              "x x x x x x x x x x o o o o o o";
            
            write           = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
                              "x x x x x x x x 1 1 i i i i i i";
            ;
        
        memory "calibration"
            size            = 1;
            read            = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
                              "0 0 0 0 0 0 0 0 o o o o o o o o";
            ;
        
        memory "signature"
            size            = 3;
            read            = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
                              "x x x x x x a1 a0 o o o o o o o o";
            ;
    ;
    Die Binary zu AVRdude 5.0 kann man sich hier ziehen:
    http://download.savannah.gnu.org/releases/avr/

    Eine AVRdude-GUI (für Windose) gibts nur eine, die 0.2.0:
    http://sourceforge.net/project/showf...ease_id=291782
    Ist auch schon in allen WinAVR Paketen enthalten.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2006
    Ort
    Gratkorn
    Alter
    34
    Beiträge
    207
    Hallo an alle

    Dank für die Konfigurationen für den M168. Wie genau funktioniert das mit der Kommandozeile??

    zb so?:

    "C:\WinAVR\bin\avrdude.exe" -p m168 -c stk200 -P lpt1 -U flash:r:"<PFAD>":a

    Stimmt das so? jetzt steht beim pull down Menü Mega8 aber das m8 hab ich in der Kommandozeile in m168 geändert.

    Kann das so funktionieren??

    Und wie kann ich dann direkt aus WinAvr flashen? Muss ich da dann was im Makefile änderen?

    Danke im Voraus

    Gruß Robert

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Ja, bei mir gehts auch so,
    im Makefile wird sowieso angegeben für welchen AVR compiliert werden soll, dieser Wert wird auch an AVRDude übergeben, sollte somit passen,
    der Rest ist schon im Makefile vordefiniert für das schreiben,
    wenns jetzt schon mit dem Mega8 geht, gehts auch mit dem M168.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2006
    Ort
    Gratkorn
    Alter
    34
    Beiträge
    207
    Ok, super
    Danke

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2006
    Ort
    Gratkorn
    Alter
    34
    Beiträge
    207
    Hallo

    Gibt es auch so einen Code für den Mega 88??

    Danke im Voraus

    Gruß Robert

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.10.2005
    Ort
    Zürich
    Beiträge
    117
    Mit uisp geht es problemlos, unter Linux. Weiss jedoch nicht, obs den für Windows auch gibt, denke aber eher nicht.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2006
    Ort
    Gratkorn
    Alter
    34
    Beiträge
    207
    Ich hab leider nur Windows.

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    ATmega88 ist zwar pinkompatibel zu ATmega8, aber in den Innereien hat sich einiges geändert und von Atmel ist er nicht als Ersatz für ATmega8 gedacht.

    So wird z.B. der EEPROM anders angesprochen, was bei avr-gcc Probleme machen kann, weil nur Mega8 unterstützt wird. Du müsstest dann also ein paars Sachen von Hand machen. Gleiches gilt natürlich für ATmega168.
    Disclaimer: none. Sue me.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad