Skocz do zawartości

Programowanie attiny12 w C


alex6

Pomocna odpowiedź

Witam,

posiadam WinAVR oraz mikrokontroler Attiny12.

I mam mały problem z kompilacją nawet najprostszego programu. Podczas kompilacji wyskakuje mi błędy:

> "make.exe" all

-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: main.c
avr-gcc -c -mmcu=attiny12 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst  -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o 
main.c:1: error: MCU 'attiny12' supported for assembler only
In file included from c:/winavr-20100110/lib/gcc/../../avr/include/avr/io.h:399,
                from main.c:3:
c:/winavr-20100110/lib/gcc/../../avr/include/avr/iotn12.h:51:4: warning: #warning "MCU not supported by the C compiler"
make.exe: *** [main.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:02

Może źle coś ustawiłem w Makefile chociaż chyba raczej nie. Wybrałem tylko nazwę main i kontroler Attiny12.

Link do komentarza
Share on other sites

Rozumiem i w połączeniu z "MCU 'attiny12' supported for assembler only" oznacza chyba, że Attiny12 można tylko w asm programować. Czy może jednak można pisać pod ten kontroler w C? Posiadam chyba najnowszą wersję WinAVR więc chyba jednak nie 🙁

Link do komentarza
Share on other sites

Nie, bo temu procesoru 🙂 brakuje jednej rzeczy bez której kompilator C sobie nie poradzi: stosu. Ma co prawda jakiś ochłapek w postaci 3-poziomowego, sprzętowego zestawu rejestrów zapamiętujących PC podczas CALL lub przerwania ale to wszystko. To oznacza, że nawet pisząc w asemblerze nie możesz zagnieżdżać funkcji głębiej jak dwa poziomy bo trzeci musi zostać na ew. przerwania. Przez stos kompilator przekazuje czasem argumenty do funkcji a prologi i epilogi funkcji muszą mieć możliwość zachowywania i odtwarzania stanu rejestrów. Tego też tu brakuje. Z drugiej strony patrząc, to w C z 1K pamięci to wiele być nie popisał..

Nie potrzebujesz najnowszej wersji kompilatora tylko innego procesora.

EDIT: To jest kostka przeznaczona do stosowania w najbardziej wymagających kosztowo projektach. Tam, gdzie każdy cent się liczy. Moim zdaniem nie ma sensu używanie takich układów w projektach amatorskich. Dlaczego zdecydowałeś się na to tiny12?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.