- 12V Akku mit 280 Ah bauen         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 50

Thema: Microsoft Visual Studio 2008 Express als AVR IDE für C-Code!

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    15.02.2008
    Ort
    Fürth
    Alter
    40
    Beiträge
    46

    Die Vorteile

    Anzeige

    Powerstation Test
    Jetzt muss ich hier aufpassen, dass ich keine Werbung mache. Das Microsoft Visual Studio ist eine der besten IDEs (vergleichbar mit Eclipse). Die Kontextsensitive Soforthilfe Intellisense kann man mit der Tastenkombination Strg + Space auslösen. Diese Funktionalität ist vergleichbar mit ... wie heisst dieses Tool "Whole Tomato"(?) Dann diese hochdynamische GUI, in der man alle Fenster schieben und strecken kann. Jedes einzelne Fenster kann herausgezogen werden. Wenn man Codeblöcke markiert, kann man mit Tab und Shift + Tab einrücken. Bookmarks sind möglich. Und mit Tastenkombinationen Strg+"-" (neben der ShiftTaste) und Strg+Shift+"-" kann man vor- und zurückspringen. F12 führt die Funktion "Go to Definition" aus und und und......
    ...
    Sind das genug Vorteile ?
    Aber ich gebe dir recht, wenn du sagst, dass das Studio genauso den GCC benutzt wie das AVRStudio. Ich will auch garnicht sagen, dass das AVRStudio schlecht ist. Ich wollte hier nur eine andere Möglichkeit vorstellen, effizient zu programmieren.
    ...
    Hab ich die Frage beantwortet? (Oder drumrum geredet?)

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo, DerMaddin,

    Das hört sich wirklich sehr interessant an !
    Muß ich mal ausprobieren, wenn ich das nächste mal Winows nutze.
    Visual Studio hat wirklich eine sehr angenehme Oberfläche.

    Jetzt ist meine Frage natürlich, was bringt mir die o.g Lösung im Gegensatz zu AVR Studio mit WinAVR? Vorteile?
    AVR Studios Editor ist das letzte, was ich unter Editoren gesehen habe, es eignet sich vielleicht für Assembler, aber für C kann man es vergessen, da ist PN2 um Welten besser !

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    15.02.2008
    Ort
    Fürth
    Alter
    40
    Beiträge
    46

    Aber...

    Naja, man sollte das Ganze nicht zu einseitig bewerten. Bei der Installation von Visual Studio wird das komplette .NET Framework in der Version 3.5 mit installiert, was man beim C-Programmieren nicht braucht. Man "müllt" den Rechner damit etwas zu. Es hat also nicht nur Vorzüge. Ich habe mich aber für das Studio entschieden, weil es zB Erweiterungsmöglichkeiten besitzt. Man kann eigene Wizards erstellen, mit denen eine Projektvorlage eingefügt wird. Damit muss man nicht die lästigen custombuildsteps eintragen. (Wenn der Wizard ausgereift ist, wird er online gestellt. Momentan bin ich noch am Basteln.)
    Am Besten man informiert sich vorher auf der Microsoftseite ein bisschen darüber.

    Mfg, Der Maddin

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    15.02.2008
    Ort
    Fürth
    Alter
    40
    Beiträge
    46

    AVRWizards

    So. Die Wizards sind fertig. Mit diesen Wizards ist es möglich, im Studio zu sagen: Datei->Neu->Projekt->AVRProjekt. Alle Einstellungen, die bis jetzt manuell vorgenommen werden mussten, macht der Wizard jetzt. Das heisst, man vergisst nichts mehr. Auch das Einfügen neuer Module kann ein Wizard übernehmen. Ich denke, diese Wizards werden nochmal eine erhebliche Erleichterung darstellen.

    Ich habe beschrieben, an welchen Stellen die Wizards zu modifizieren sind, sodass sich jeder die Wizards customizen kann.

    Lest euch erst die Doku durch und dann extrahiert die Zipfiles --> have fun

    Mfg, DerMaddin
    Angehängte Dateien Angehängte Dateien

  5. #15
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    Hi Maddin,

    freut mich, dass du uns an deinen Erkenntnissen teil haben läßt.

    Habe mir zwar den Wizard noch nicht angesehen, da ich gerade erst wieder in den Thread geschaut habe, aber dafür hab ich mir mal Gedanken gemacht, wie man mit den Batches und Pfaden mit Leerzeichen umgehen kann.

    Werde also versuchen, das Ergebnis hier unterzubringen.

    Zum Anderen interessiert mich warum du zum WinAvr noch extra das PonyProg brauchst. Mit avrdude kann man das Programm doch auch übertragen. Gibt es da irgendwelche Vorteile?

    So nun zu meinen Vorschlägen, die sich natürlich etwas an deinen Batches anlehnen.

    Das Ganze ist jetzt alphabetisch sortiert und nicht in der Reihenfolge der Abarbeitung.

    calcsize.bat
    Code:
    REM %1 ProjectDir, %2 OutDir\InputFileName, %3 OutDir
    
    IF exist %3\programsize.txt DEL %3\programsize.txt
    
    SET "OutDir=%3"
    SET "LogFile=%OutDir%\erstellen.log"
    ECHO "Getting size of %3\%2.elf ..." >> %LogFile%
    
    SET OldDir=%CD%
    CD %1
    SET PrjDir=%CD%
    CD %OldDir%
    
    ECHO +++ Size begin +++ >> %3\programsize.txt
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-size.exe" -x -A %3\%2.elf >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-size.exe" -x -A %3\%2.elf >> %3\programsize.txt
    ECHO +++ Sorted by size +++ >> %3\programsize.txt
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-nm.exe" -x -A %3\%2.elf >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-nm.exe" --size-sort -s %3\%2.elf >> %3\programsize.txt
    ECHO +++ Size end +++ >> %3\programsize.txt
    clean.bat
    Code:
    REM %1 OutDir
    
    SET "OutDir=%1"
    
    IF exist %OutDir% DEL %OutDir%\*.* /q
    IF exist %OutDir% CALL :log
    GOTO :end
    
    :log
    SET "LogFile=%OutDir%\erstellen.log"
    ECHO "Cleaning %OutDir% ..." > %LogFile%
    GOTO :eof
    
    :end
    EXIT
    compile.bat
    Code:
    REM %1 ProjectDir, %2 InputFileName, %3 OutDir
    
    IF NOT exist %3 MD %3
    
    SET "OutDir=%3"
    SET "LogFile=%OutDir%\erstellen.log"
    ECHO "Compiling %2 ..." >> %LogFile%
    
    SET OldDir=%CD%
    CD %1
    SET PrjDir=%CD%
    CD %OldDir%
    
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -c -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.obj >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -c -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.obj
    
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -E -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.pre >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -E -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.pre
    
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -S -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.asm >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -S -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.asm
    
    EXIT
    link.bat
    Code:
    REM %1 ProjectDir, %2 OutDir
    
    SET "OutDir=%2"
    SET "LogFile=%OutDir%\erstellen.log"
    ECHO "Linking AVR project ..." >> %LogFile%
    
    SET "OutputFileName=program"
    
    setlocal enableDelayedExpansion
    
    SET OldDir=%CD%
    CD %1
    SET PrjDir=%CD%
    CD %OldDir%
    
    SET ObjFiles=
    
    FOR %%i IN (%2\*.obj) DO CALL :objCounter "%%i"
    ECHO %ObjFiles% >> %LogFile%
    
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -mmcu=atmega8%ObjFiles% -o %2\%OutputFileName%.elf -Os --relax -Wl,--section-start=.fuse=0x820000 -Wl,-Map,%2\%OutputFileName%.map >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -mmcu=atmega8%ObjFiles% -o %2\%OutputFileName%.elf -Os --relax -Wl,--section-start=.fuse=0x820000 -Wl,-Map,%2\%OutputFileName%.map >> %LogFile%
    IF NOT %ERRORLEVEL%==0 (ECHO Linking error %ERRORLEVEL% >> %LogFile%) & ECHO %ERRORLEVEL%
    GOTO :end
    
    :objCounter
    SET ObjFiles=!ObjFiles! %1
    GOTO :eof
    
    :end
    
    CALL "%PrjDir%\BuildTools\makehex.bat" "%PrjDir%" %OutputFileName% %OutDir%
    CALL "%PrjDir%\BuildTools\calcsize.bat" "%PrjDir%" %OutputFileName% %OutDir%
    CALL "%PrjDir%\BuildTools\makelistfile.bat" "%PrjDir%" %OutputFileName% %OutDir%
    CALL "%PrjDir%\BuildTools\send_program.bat" "%PrjDir%" %OutputFileName% %OutDir%
    
    EXIT
    makehex.bat
    Code:
    REM %1 ProjectDir, %2 InputFileName, %3 OutDir
    
    SET "OutDir=%3"
    SET "LogFile=%OutDir%\erstellen.log"
    ECHO "Making .hex file of %3\%2.elf ..." >> %LogFile%
    
    SET OldDir=%CD%
    CD %1
    SET PrjDir=%CD%
    CD %OldDir%
    
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .text -j .data %3\%2.elf %3\flash.hex >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .text -j .data %3\%2.elf %3\flash.hex
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .eeprom --change-section-lma .eeprom=0 %3\%2.elf %3\eeprom.hex >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .eeprom --change-section-lma .eeprom=0 %3\%2.elf %3\eeprom.hex
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .fuse %3\%2.elf %3\fuse.hex >> %LogFile%
    makelistfile.bat
    Code:
    REM %1 ProjectDir, %2 InputFileName, %3 OutDir
    
    SET "OutDir=%3"
    SET "LogFile=%OutDir%\erstellen.log"
    ECHO "Making listfile %3\listfile.lst ..." >> %LogFile%
    
    SET OldDir=%CD%
    CD %1
    SET PrjDir=%CD%
    CD %OldDir%
    
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objdump.exe" -s -j .fuse %3\%2.elf >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-objdump.exe" -s -j .fuse %3\%2.elf > %3\fuses.txt
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objdump.exe" -h -s -j .text -j .data %3\%2.elf  >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avr-objdump.exe" -h -s -j .text -j .data %3\%2.elf > %3\listfile.lst
    send_program.bat

    Hier bitte aufpassen, da ich auch die Fusebits mit setze und einen ATMega8 verwende
    Code:
    REM %1 ProjectDir, %2 InputFileName, %3 OutDir
    
    SET "OutDir=%3"
    SET "LogFile=%OutDir%\erstellen.log"
    ECHO "Programming %3\flash.hex eeprom.hex ..." >> %LogFile%
    
    SET OldDir=%CD%
    CD %1
    SET PrjDir=%CD%
    CD %OldDir%
    
    REM Programming support using avrdude. Settings and variables.
    
    REM Programming hardware: alf AVR910 avrisp Bascom bsd 
    REM dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
    SET AVRDUDE_PROGRAMMER=avrisp
    
    SET AVRDUDE_PORT=com1
    REM SET AVRDUDE_PORT=lpt1
    
    SET AVRDUDE_WRITE_LFUSE=-U lfuse:w:0x24:m
    SET AVRDUDE_WRITE_HFUSE=-U hfuse:w:0xd9:m
    SET AVRDUDE_WRITE_LOCK =-U lock:w:0x2f:m
    
    SET AVRDUDE_WRITE_FLASH=-U flash:w:flash.hex
    SET AVRDUDE_WRITE_EEPROM=-U eeprom:w:eeprom.hex
    SET AVRDUDE_FLAGS=-p atmega8 -P %AVRDUDE_PORT% -c %AVRDUDE_PROGRAMMER%
    
    CD %3
    REM liest den Inhalt des Flashspeichers vom ATMega8 in die Datei flash.bin r=raw i=intel s=motorola
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% -U flash:r:"./flash.bin":r >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% -U flash:r:"./flash.bin":r
    
    REM liest den Inhalt des EEPROM (512Byte) vom ATMega8 in die Datei eeprom.bin
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% -U eeprom:r:"./eeprom.bin":r >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% -U eeprom:r:"./eeprom.bin":r
    
    ECHO "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% %AVRDUDE_WRITE_FLASH% %AVRDUDE_WRITE_EEPROM% %AVRDUDE_WRITE_LFUSE% %AVRDUDE_WRITE_HFUSE% >> %LogFile%
    "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% %AVRDUDE_WRITE_FLASH% %AVRDUDE_WRITE_EEPROM% %AVRDUDE_WRITE_LFUSE% %AVRDUDE_WRITE_HFUSE% >> %LogFile%
    CD %OldDir%
    In der Befehlszeile des Studios müssen natürlich alle Parameter (alle heißt auch der nullte) in Anführungszeichen gesetzt werden, die eine Pfadangabe beinhalten. Dabei aber darauf achten, dass jeder Parameter für sich eingekapselt wird. Sonst denkt das Studio es gibt nur den nullten.

    So jetzt muss ich erst mal sehen wie das Ergebnis meines CODE - Weitergebe - Versuches aussieht.

    sast

    雅思特史特芬
    开发及研究

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.112
    Ich finde die Sache auch toll (Danke schonmal) und habe auch schon fleißig drauflos programmiert.
    Aber ich habe wieder davon abgesehen, weil ich den AVRISP MKII Programmer (USB) benutze. So wie ich das sehe, lässt sich mit diesem der Code nicht zum AVR übertragen oder habe ich da was falsch verstanden?
    Der andere Nachteil zu AVRStudio, den ich sehe, ist doch, dass ich die einzelnen Register und die ganze Hardware des AVR während des Debugging nicht angezeigt bekomme. Oder habe ich das auch was verpeilt???
    Wäre nett, wenn mich jemand aufklären könnte...
    Gruß

  7. #17
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    ...\WinAVR\utils\libusb\bin\avrisp2.inf

    ist ja wohl eindeutig eine Windows inf Datei mit der man dem Ding einen Treiber verpassen kann

    Und das folgende hab ich in der avrdude.conf gefunden

    Programmer
    id = "avrispmkII";
    desc = "Atmel AVR ISP mkII";
    type = stk500v2;
    ;

    Programmer
    id = "avrisp2";
    desc = "Atmel AVR ISP mkII";
    type = stk500v2;
    ;

    Zum Debugging kann ich nichts sagen, da ich wie der Maddin auch meistens nur mit RS232 Ausgaben arbeite oder nem Oszi.

    sast

    雅思特史特芬
    开发及研究

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    15.02.2008
    Ort
    Fürth
    Alter
    40
    Beiträge
    46

    Was nicht geht

    Also erstmal zur Frage, warum ich Ponyprog nehme. Der Grund ist ganz einfach:

    Bei Ponyprog muss man sich keine Gedanken um Fusebits machen, da die negierten Bits vom Ponyprog intern nocheinmal negiert werden. Das ist der einzige Vorteil.

    Debugging geht entweder nur mit einem JTAG Debugger auf dem Gerät oder mithilfe eines DeviceEmulators im AVRStudio. Vielleicht kann man eine ähnliche Lösung auch noch im Visual Studio umsetzen.

  9. #19
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    Beim avr-gcc musst du auch bloß die Fuses setzen, die du haben willst (also alle die auf 0 gesetzt werden sollen. Wenn man Makros verwendet werden diese intern invertiert. Steht alles in den .h Dateien.

    Meine Headerdatei für den VS Test ist zum Beispiel
    Code:
    #ifndef _AST_FUSE_SET_ATMEGA8_H_
    #define _AST_FUSE_SET_ATMEGA8_H_
    
    #include <avr/io.h>
    
    FUSES = 
    {
    	.low = (FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL1 & FUSE_CKSEL0),// & FUSE_BODLEVEL & FUSE_BODEN),
    	.high = HFUSE_DEFAULT, //(FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0)
    };
    // high=0xD9 low=0x24
    //zum Fusebits ermitteln
    //http://palmavr.sourceforge.net/cgi-bin/fc.cgi
        
    /*
    Fuses
    
    #define FUSE_MEMORY_SIZE 2
    
    Low Fuse Byte
    #define FUSE_CKSEL0      ~_BV(0)
    #define FUSE_CKSEL1      ~_BV(1)
    #define FUSE_CKSEL2      ~_BV(2)
    #define FUSE_CKSEL3      ~_BV(3)
    #define FUSE_SUT0        ~_BV(4)
    #define FUSE_SUT1        ~_BV(5)
    #define FUSE_BODEN       ~_BV(6)
    #define FUSE_BODLEVEL    ~_BV(7)
    #define LFUSE_DEFAULT (FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1)
    
    High Fuse Byte
    #define FUSE_BOOTRST     ~_BV(0)
    #define FUSE_BOOTSZ0     ~_BV(1)
    #define FUSE_BOOTSZ1     ~_BV(2)
    #define FUSE_EESAVE      ~_BV(3)
    #define FUSE_CKOPT       ~_BV(4)
    #define FUSE_SPIEN       ~_BV(5)
    #define FUSE_WDTON       ~_BV(6)
    #define FUSE_RSTDISBL    ~_BV(7)
    #define HFUSE_DEFAULT (FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0)
    
    Lock Bits
    #define __LOCK_BITS_EXIST
    #define __BOOT_LOCK_BITS_0_EXIST
    #define __BOOT_LOCK_BITS_1_EXIST
    */
    
    #endif // _AST_FUSE_SET_ATMEGA8_H_
    Die defines sind aus der iom8.h. Muss man sich eben für jeden Typ extra raussuchen.

    sast

    雅思特史特芬
    开发及研究

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    15.02.2008
    Ort
    Fürth
    Alter
    40
    Beiträge
    46

    LinkThemAll.exe

    Nochmal zu den Fuses.
    Bei Ponyprog muss man GARKEIN Wissen über Fuses haben. Man kann sich auf das Wesentliche konzentrieren: Das Programmieren.

    Hey, wieso sagt mir keiner, dass ich mal das Linktool aus der Doku online stellen könnte? Dann braucht ihr es nicht selbst zu übersetzen.

    Mfg, Martin

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen