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

Migracja z AS6.2 do AS7 - błędy przy stałych w nowym projekcie

daro2012 14 Mar 2019 17:56 618 8
REKLAMA
  • #1 17841779
    daro2012
    Poziom 11  
    Po migracji projektu AS6.2 do AS7 i wywołaniu Build Solution pojawiają się błędy przy predefiniowanych stałych:
    Migracja z AS6.2 do AS7 - błędy przy stałych w nowym projekcie


    Błąd jest nawet nowym projekcie i przypisaniu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    I tu nie wiem, co i gdzie zmienić, aby hulało.
  • REKLAMA
  • #2 17842055
    chudybyk
    Poziom 31  
    Podejrzewam, że brakuje jakiegoś #include lub problem z niewłaściwie wybranym procesorem.
  • #3 17842089
    daro2012
    Poziom 11  
    chudybyk napisał:
    Podejrzewam, że brakuje jakiegoś #include lub problem z niewłaściwie wybranym procesorem.

    Wg mnie powinien wystarczyć #include <avr/io.h>.
    Wybrany procek jest OK. Ten sam projekt kompiluje się w wersji AS6.2.
    Problem dotyczy stałych predefiniowanych dla Timerów. Dla portów I/O, ADC jest OK.
  • REKLAMA
  • #4 17842105
    chudybyk
    Poziom 31  
    No to pozostaje przeszukać plik "avr/io.h" oraz dołączone z niego i sprawdzić, czy żartownisie z Microchipa nie zmienili nazwy stałej "TC45_OVFINTLVL_LO_gc" w najnowszym wydaniu pakietu.
  • REKLAMA
  • #5 17842242
    daro2012
    Poziom 11  
    Znalazłem stałą TC45_OVFINTLVL_LO_gc w plikach:

    c:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\iox32e5.h
    c:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel\XMEGAE_DFP\1.2.51\avrasm\inc\ATxmega32e5def.inc

    ale nie wiem, z którego korzysta AS7.

    Dodatkowo w pliku iox32e5.h TC45_OVFINTLVL_LO_gc zaszyta jest w definicji typedef:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #6 17842885
    chudybyk
    Poziom 31  
    Spróbuj zamienić wywołania "TC45_OVFINTLVL_LO_gc" na "TC45_OVFINTLVL_t::TC45_OVFINTLVL_LO_gc".
  • #7 17843052
    tmf
    VIP Zasłużony dla elektroda
    daro2012 napisał:
    Po migracji projektu AS6.2 do AS7 i wywołaniu Build Solution pojawiają się błędy przy predefiniowanych stałych:

    Wraz z AS zmieniła się wersja AVR-libc i niektóre definicje. Po prostu w zainkludowanym pliku z definicjami IO dla twojego procka odszukaj nowych odpowiedników.
  • #8 17843208
    daro2012
    Poziom 11  
    tmf napisał:
    Wraz z AS zmieniła się wersja AVR-libc i niektóre definicje. Po prostu w zainkludowanym pliku z definicjami IO dla twojego procka odszukaj nowych odpowiedników.


    Tak robiłem. Definicje stałych kopiuje z pliku:
    c:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\iox32e5.h
    O tyle jest to dziwne, że mimo istnienia w tymże pliku, obok siebie, takich samych struktur, co do sposobu definicji:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    przypisanie:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    działa tylko w przypadku SUT_4MS_gc (przechodzi kompilacje), natomiast WD_8KCLK_gc nie.

    Dodano po 6 [godziny] 20 [minuty]:

    Problem rozwiązałem, ale zostawiam ślad dla potomnych.
    Dostępne definicje stałych (dla procka XMEGA32E5) znajdują się w 3 plikach :
    C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel\XMEGAE_DFP\1.2.51\include\avr\iox32e5.h
    C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\iox32e5.h
    C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel\XMEGAE_DFP\1.2.51\avrasm\inc\ATxmega32e5def.inc

    AS, u mnie, korzysta ze ścieżki nr1.
    Nowością dla mnie jest, że AS korzysta z jakichś paczek, w przypadku mojego uc (XMEGA32E5) z paczki XMEGAE_DFP.
    Info o tymże fakcie zawarte jest w ustawieniach:
    Migracja z AS6.2 do AS7 - błędy przy stałych w nowym projekcie


    gdzie nazwy stałych w deklaracjach rzeczywiście są inne niż w poprzednich wydaniach AS.
    Niby ktoś chciał coś uprościć, ale chyba nie pomyślał, że istnieje kilka ton kodu sprzed AS7.
  • #9 17844684
    tmf
    VIP Zasłużony dla elektroda
    Możesz zrobić downgrade paczki. Swoją drogą - jak pisałem - trzeba było poszukać definicji w zainkludowanym pliku. W drzewie projektu, po kompilacji masz w sekcji Dependencies wskazany plik iox32e5.h- wystarczy go otworzyć z AS, a nie kombinować ze ścieżkami.
REKLAMA