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

Prosty program z elektora nie kompiluje się pod winavr

wirusa 17 Kwi 2013 16:09 2085 12
  • #1 12209803
    wirusa
    Poziom 13  
    Oto program, trochę rozbudowałem go ale oryginał też nie przechodzi.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    wywala takie błędy ,nie wiem dlaczego
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Dopiero zaczynam z językiem c i nie za bardzo wiem gdzie popełniam błędy, ktoś pomoże?
  • #2 12210349
    zumek
    Poziom 39  
    wirusa napisał:
    ...wywala takie błędy ,nie wiem dlaczego...

    Ponieważ ten kod, nie jest przeznaczony dla kompilatora, którego używasz.
  • #3 12211062
    Jeżyk-1
    Poziom 25  
    Spróbuj zadeklarować w taki sposób wszystkie funkcje:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


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

    i poniżej w samej funkcji tak samo.

    Potem zmień :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

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


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

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


    To co mi przyszło do głowy.

    Dodano po 2 [minuty]:

    Dodam że na początek wybrałeś sobie dość trudny przykład. Polecam zacząć od czegoś prostego
  • #4 12211767
    wirusa
    Poziom 13  
    No poszło do deklaracji asemblera
    #asm("sei") dając
    error: invalid preprocessing directive #asm
    dalej jest reszta źle,


    a nie ma gdzieś opisu tego języka, program prosty jak drut, działa na 90 % po moich przeróbkach, a problemy mam ze składnią, lecz nigdzie nie ma jej opisu. Chyba wrócę do asemblera, bo ten C to nie zrozumiały jest zupełnie. Ma ktoś jakiś opis do winavr i avr-gcc.


    Dzięki za pomoc
  • #5 12211802
    excray
    Poziom 41  
    A czemu masz "kratkę" przed asm? powinno być bez. Kolega już pisał że jest to zbyt trudny przykład i ja do tego się dopisuję. A do C nie ma się co zrażać. Sam pisałem w asm i też na początku psioczyłem na C.
  • #6 12211837
    wirusa
    Poziom 13  
    no i poszło dalej teraz stoi na
    Device_1=0;

    dtmf.c:198: error: expected ';' before '(' token

    Szukam, szukam i nic nie ma, z wyjątkiem kursu z 5 częsci
  • #8 12211885
    wirusa
    Poziom 13  
    O tym kursie pisałem, średnika nie było ;)
    teraz jest
    197 asm("sei") ;
    198 Device_1=0;

    z errorem

    dtmf.c:198: error: expected ';' before numeric constant
  • #9 12211909
    excray
    Poziom 41  
    To wszystko przez:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    W AVR Studio coś takiego nie przejdzie. Musisz przerobić kod i to dość znacznie. Może jednak wybierzesz sobie łatwiejszy kod?
  • #10 12211919
    wirusa
    Poziom 13  
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #11 12211932
    excray
    Poziom 41  
    JUż napisałem powyżej. To przez deklaracje na początku kodu. Po podstawieniu przez kompilator wychodzi z czegoś takiego: "Device_0=0;" cos takiego: "PORTC.0=0;" co dla AVRGCC jest zupełnie nie zrozumiałe. Możesz ręcznie zamienić wszystkie linie typu:
    Device_0=0; na PORTC &= ~(1<<0);
    Device_0=1; na PORTC |= (1<<0);
    Device_1=0; na PORTC &= ~(1<<1);
    Device_1=1; na PORTC |= (1<<1);
    i tak dalej przez analogię. Albo wybrać sobie prostszy kod do nauki i przede wszystkim kod pisany pod AVRGCC.
  • #12 12211949
    wirusa
    Poziom 13  
    Dzięki, zastanawia mnie tylko w czym gościu z elektor elektronic to skompilował?
    Ten kod przerobiłem tylko dodając włączenie i wyłączenie wszystkiego oraz skasowałem wpis paru rzeczy do eepromu, a reszta u faceta chodziła, została skompilowana, kod wynikowy, mam wgrany do procka i działa !!!, No cóż przerobię to wszystko, choć ten link z elektora jest bardziej przejrzysty.
    Dzięki wielkie za pomoc
  • #13 12237916
    wirusa
    Poziom 13  
    Doszedłem do kompilatora, to MikroC, wersja wyższa od 2,5 , bo ta jeszcze tego nie łyka, najnowsza jest bodaj 6,0 ale płatna :(
REKLAMA