Skocz do zawartości

Programowanie attiny12 w C


Pomocna odpowiedź

Napisano

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.

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 🙁

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?

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...