logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AVRStudio 4 i AVRgcc na Windows XP - Kompatybilność i konfiguracja

cieplaq81 21 Kwi 2006 19:00 1571 8
REKLAMA
  • #1 2551803
    cieplaq81
    Poziom 11  
    Posty: 30
    Witam
    Mam pare pytań
    1) Czy można połączyć AVRStudio 4 i jakiś kompilator C (AVRgcc) ??
    2) Czy połączenie j.w. będzie chodziło pod XP ??
    3) Czy AVRgcc można podpiąć tylko pod AVRStudio 3.53 ??
    4) Czy którekolwiek z tych połączeń pójdzie pod XP czy mam instalować drugi system (win98) ??
    Programuje Atmega32

    Dzieki i pozdrawiam
  • REKLAMA
  • #2 2551898
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    Najnowsza wersja AVR Studio 4 ma chyba już wbudowany kompilator C
    Zobacz na stronie

    Cytat:

    AVR Studio 4.12 (build 460) (45 MB, updated 11/05)
    AVR Studio 4.12 includes new device support and numerous overall enhancements;
    new breakpoint system, integrated AVR GCC development and improved docking system!
    See release notes for more details.


    Jeszcze nie instalowałem ,więc nie wiem jak to działa

    Boogie
  • #3 2551919
    max_gg
    Poziom 26  
    Posty: 631
    Pomógł: 83
    Ocena: 26
    Witam!

    WinAVR (lub inny kompilator GCC) musimy sobie doinstalować, ale faktem jest, że AVR-Studio 4.12 build 460 pracuje z tym kompilatorem.

    Pozdrawiam!

    Marcin "Max" G.
  • REKLAMA
  • #4 2552114
    cieplaq81
    Poziom 11  
    Posty: 30
    To powiedzcie jak dodać AVRgcc do AVRStudio bo nie wiem a mają najnowszą wersje AVRStudio przy kompilacji wywala mi błędy o pliki nagłówkowe :/ tak jakby ich nie widział :/
    Obecnie posiadam AVRStudio 4.12 Build 472 + SP2

    Integrated development with any AVR GCC compiler is now supported with AVR Studio. WinAVR or any other AVR GCC compiler must be downloaded and installed separately, but with IDE support in AVR Studio you can easily and fast get started with C code development and debugging

    Wiec chyba trzeba doinstalowywac AVRGCC :/
    ALE JAK............... ???

    Wywala mi m.in takie błędy:
    
    ../zzz.c:8:16: io.h: No such file or directory
    ../zzz.c:9:21: progmem.h: No such file or directory
    ../zzz.c:11:23: interrupt.h: No such file or directory
    ../zzz.c:12:20: signal.h: No such file or directory
    [/code]
  • #5 2553152
    siemensik
    Poziom 10  
    Posty: 41
    Hej
    Mam ten sam problem, nie kompiluje mi- nie załącza plików, zadeklarowane zmienne traktuje jakby ich nie było ( działa tak jakby wogóle C nie rozpoznawał) :/ Czy ktoś wie co z tym zrobić??????
  • REKLAMA
  • #6 2553715
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    #include <io.h> >zamieniamy na> #include <avr/io.h>
    #include <progmem.h> >>> #include <avr/progmem.h>
    #include <interrupt.h> >>> #include <avr/interrupt.h>

    a signal.h możesz odpuścić całkowicie.

    Po prostu trzeba dodawać przedrostek avr/ przed nazwe pliku nagłówkowego.
  • #7 2553900
    cieplaq81
    Poziom 11  
    Posty: 30
    Próbowalem j.w. efekt taki:
    
    #include <avr/stdio.h>
    #include <avr/interrupt.h>
    
    
    typedef struct _bit_struct
    {
    
    unsigned char bit0: 1;
    unsigned char bit1: 1;
    unsigned char bit2: 1;
    unsigned char bit3: 1;
    unsigned char bit4: 1;
    unsigned char bit5: 1;
    unsigned char bit6: 1;
    unsigned char bit7: 1;
    
    }pole_bitowe
    
    #define daj_bit(adr) (*((volatile pole_bitowe*) (adr)))
    #define _PORTB 0x38;
    #define _PORTC 0x35;
    #define _PORTA 0x3B;
    #define prz_a daj_bit(_PORTB).bit0
    #define prz_b daj_bit(_PORTB).bit1
    
    void czekaj (unsigned long zt)
    {
    unsigned char zt1;
    
    for(;zt>0;zt--)
     {
    	for(zt1=255;zt1!=0;zt1--);
     }
    
    }
    
    void main()
    {
    unsigned char torA, torB; 
    
    while(1);
    {
    	czekaj (75); //czeka aż przetwornik A/C dokona kolejnego pomiaru
    	torA=_PORTC; //odczytanie przetwornika toru A
    	torB=_PORTA; //odczytanie przetwornika toru B
    	UDR=torA;
    	UDR=torB;
    }
    
    }
    
    SIGNAL (SIG_UART_RECV)
    {
    unsigned char tmp;
    
    tmp=UDR;
    
    if (tmp=='a') {prz_b=1; prz_a=0;} else
    if (tmp=='b') {prz_b=0; prz_a=1;}
     
    }
    

    Błędy jakie pokazuje przy kompilacji:
    avr-gcc.exe  -mmcu=atmega32 -Wall -gdwarf-2 -O0 -MD -MP -MT 3.o -MF dep/3.o.d  -c  ../3.c
    ../3.c:1:23: avr/stdio.h: No such file or directory
    ../3.c:26: error: syntax error before "void"
    ../3.c:38: warning: return type of 'main' is not `int'
    ../3.c: In function `__vector_13':
    ../3.c:58: error: syntax error before "pole_bitowe"
    ../3.c:58: error: syntax error before ';' token
    ../3.c:58: error: syntax error before "pole_bitowe"
    ../3.c:58: error: syntax error before ';' token
    ../3.c:59: error: syntax error before "pole_bitowe"
    ../3.c:59: error: syntax error before ';' token
    ../3.c:59: error: syntax error before "pole_bitowe"
    ../3.c:59: error: syntax error before ';' token
    make: *** [3.o] Error 1
    Build failed with 10 errors and 1 warnings...
    

    Co z tym zrobić?????
    Program ma działac tak:
    sczytywać cały port A i port C i wysyłac to na wyjście.
    Przy odebraniu znaku "a" ma wystawić 0 na bit 0 portu B, 1 na bit 1 portu B
    przy odebraniu znaku "b" ma wystawić 0 na bit 1 portu B, 1 na bit 0 portu B.
  • REKLAMA
  • #8 2554562
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Jest pare bledow w programie

    1)
    #include <avr/stdio.h> zmien na #include <stdio.h>
    2)
    na koncu struktury

    
    typedef struct _bit_struct
    {
    
    unsigned char bit0: 1;
    unsigned char bit1: 1;
    unsigned char bit2: 1;
    unsigned char bit3: 1;
    unsigned char bit4: 1;
    unsigned char bit5: 1;
    unsigned char bit6: 1;
    unsigned char bit7: 1;
    
    }pole_bitowe
    
    

    musi być ";" czyli:
    pole_bitowe;

    3)
    Cos nie tak jest z fragmentem


    
    if (tmp=='a') {prz_b=1; prz_a=0;} else
    if (tmp=='b') {prz_b=0; prz_a=1;}
    


    Nie chce mi sie dokladnie w to wnikac, prosciej bylo by jakbys zapisal to wyrazenie tak:

    
    if (tmp=='a')
     {
      PORTB&=~(1<<PB0);    // wystawić 0 na bit 0 portu B
      PORTB|=(1<<PB1);     // wystawić 1 na bit 1 portu B 
      }
      else
    if (tmp=='b') 
     {
      PORTB&=~(1<<PB1);    //  wystawić 0 na bit 1 portu B
      PORTB|=(1<<PB0);     // wystawić 1 na bit 0 portu B. 
      }
    



    [/quote]
  • #9 2554591
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    cieplaq81 napisał:

    ...
    Co z tym zrobić?????
    ...

    Uczyć się , uczyć ;)
    
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    
    typedef struct
    {
    unsigned char bit0: 1;
    unsigned char bit1: 1;
    unsigned char bit2: 1;
    unsigned char bit3: 1;
    unsigned char bit4: 1;
    unsigned char bit5: 1;
    unsigned char bit6: 1;
    unsigned char bit7: 1;
    }pole_bitowe;
    
    #define daj_bit(adr) (*((volatile pole_bitowe*) (adr)))
    #define prz_a daj_bit(_SFR_ADDR(PORTB)).bit0
    #define prz_b daj_bit(_SFR_ADDR(PORTB)).bit1
    
    void czekaj (unsigned long zt)
    {
    unsigned char zt1;
    
    for(;zt>0;zt--)
     {
       for(zt1=255;zt1!=0;zt1--);
     }
    
    }
    
    int main()
    {
       unsigned char torA, torB;
    
       while(1)
          {
          czekaj (75); //czeka aż przetwornik A/C dokona kolejnego pomiaru
          torA=PINC; //odczytanie przetwornika toru A ***** czytamy PIN-y
          torB=PINA; //odczytanie przetwornika toru B *****  j/w
          UDR=torA;
          UDR=torB;//*******nie za szybko ???? *****
         }
    return(0);
    }
    
    SIGNAL (SIG_UART_RECV)
    {
       unsigned char tmp;
       tmp=UDR;
    
       if (tmp=='a') {prz_b=1; prz_a=0;} else
       if (tmp=='b') {prz_b=0; prz_a=1;}
    } 
    

    Poza tym , ten kod jest mocno niekompletny :(
    Dla portu szeregowego brak baudrate , formatu danych itd. Poza tym trzeba skonfigurować system przerwań.

    Piotrek

Podsumowanie tematu

✨ Dyskusja dotyczy kompatybilności i konfiguracji środowiska AVRStudio 4 z kompilatorem AVRgcc na systemie Windows XP, w kontekście programowania mikrokontrolera Atmega32. AVRStudio 4 (w wersji 4.12) wspiera integrację z kompilatorem GCC, jednak sam kompilator należy doinstalować osobno, np. WinAVR. Problemy zgłaszane dotyczą błędów kompilacji wynikających z braku odpowiednich plików nagłówkowych, które należy poprawnie dołączyć, stosując przedrostek "avr/" (np. zamiast używać ). Wskazano również na konieczność poprawnej składni w kodzie C, np. dodanie średnika po definicji struktury oraz poprawne użycie rejestrów i bitów portów mikrokontrolera. Użytkownicy potwierdzają, że AVRStudio 4 z AVRgcc działa pod Windows XP bez potrzeby instalacji starszego systemu Windows 98. Podsumowując, integracja jest możliwa, ale wymaga poprawnej instalacji kompilatora i dostosowania kodu do standardów AVRgcc.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA