Полная версия этой страницы:
ATtiny15 и WinAVR
MaxiMuz
Jun 25 2011, 17:32
Пытался откомпилировать в WinAVR-20080610 простейшую программку под tiny15 вот что мне пишет компилятор:
Цитата
Compiling: LED_light1.c
avr-gcc -c -mmcu=attiny15 -I. -g -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=LED_light1.lst -std=c99 -Wp,-M,-MP,-MT,LED_light1.o,-MF,.dep/LED_light1.o.d LED_light1.c -o LED_light1.o
LED_light1.c:1: error: MCU 'attiny15' supported for assembler only
make.exe: *** [LED_light1.o] Error 1
> Process Exit Code: 2
> Time Taken: 00:00
Хотя в списке контроллеров в MFile он есть!
Действительно компилятор не поддерживает эту мелочь или есть способы это обойти ?
domowoj
Jun 25 2011, 17:36
Дело в том, что у тини 15 нет ОЗУ,
может поэтому.
MaxiMuz
Jun 25 2011, 18:08
Цитата(domowoj @ Jun 25 2011, 20:36)

Дело в том, что у тини 15 нет ОЗУ,
может поэтому.
Скорее всего из-за этого. А что делать ?
пс Кстати , когда написал первую простенькую прогу для тини15 и сборочном файле забыл поменять ATtiny2313 on ATtiny15 , прога заработала в несвоем железе
domowoj
Jun 25 2011, 18:10
Ассемблер еще никто не отменял.
-SANYCH-
Jun 26 2011, 13:01
У ATtiny15 нет ОЗУ поэтому выход один, писать программу на ассемблере. Кстати это контроллер уже устаревший и сам производитель не рекомендует его вообще использовать для новых разработок.
Если хочется писать на С то можно взять ATtiny13 у него уже есть ОЗУ, да и по цене походу он дешевле.
arttab
Jun 27 2011, 01:10
и стек у него аппаратный и маленький. что нибудь по современный выберите
MaxiMuz
Jun 27 2011, 15:57
Цитата(arttab @ Jun 27 2011, 04:10)

и стек у него аппаратный и маленький. что нибудь по современный выберите
Другого МК нету поэтому пытаюсь Си освоить на этом
для attiny15 можно писать на Си (avr-gcc) программы, однако, это практически неотличимо от извращения. назвать это освоением Си - солгать. учиться самому программированию на Си лучше на чем-то "просторном", и только по мере приближения к просветленному состоянию браться за безозушные и безстековые МК...
P.S. в документации avr-libc, идущей в комплекте WinAVR, имеется упоминание о процессе работы с attiny15 и есть ссылочка... но... см. выше.
MaxiMuz
Jun 29 2011, 06:59
Всем спасибо!
купил более просторный ATtiny45, буду на нем тренироваться

Тему можно закрывать
alexeyv
Jun 30 2011, 06:15
В догонку к теме:
Можно также попытаться использовать регистровые переменные:
Код
volatile register unsigned char rx asm("r18");
Хоть тему и можно закрывать, но встанет вопрос куда девать tiny15. Я вот именно из-за желания куда-либо пристроить МК извратился с CVAVR прикрутив к нему хидер с описанием регистров тиньки и их адресами. Если подключить этот хидер и компилировать как для tiny13 то все работает. Вот зарядное для LI-Ion и NiMh аккумуляторов будет.
defunct
Jul 2 2011, 02:23
Цитата(smk @ Jul 1 2011, 19:08)

Хоть тему и можно закрывать, но встанет вопрос куда девать tiny15.
Выучить asm (вопрос одного-двух дней), или выкинуть.
На C писать под такие крохи как t13 и t15, - это даже не "изврат", - это __гониво__.
t13 может гораздо больше чем просто мигать светодиодом, там аж 512 слов ПП. На поддержку COM порта тратится меньше сотни.
domowoj
Jul 2 2011, 02:48
Мне лично тини15 больше нравится, чем 13_я,
а вы выкинуть!!!
(А ассемблер конечно нужно знать.)
MaxiMuz
Jul 2 2011, 05:42
Цитата(alexeyv @ Jun 30 2011, 09:15)

В догонку к теме:
Можно также попытаться использовать регистровые переменные:
Код
volatile register unsigned char rx asm("r18");
Там уже просто глав.цикл int main(void) {} без команд , без заголовочных файлов - вызывает ошибку. Если только зам блок
main определить как не содержащий обращение к ОЗУ ?
alexeyv
Jul 4 2011, 03:50
Цитата
Там уже просто глав.цикл int main(void) {} без команд , без заголовочных файлов - вызывает ошибку.
Попробуйте так:
Код
void main (void) __attribute__ ((naked));
void main (void)
{
sei();
for(;;)
{
}
}
MaxiMuz
Jul 4 2011, 07:01
Цитата(alexeyv @ Jul 4 2011, 06:50)

Попробуйте так:
Код
void main (void) __attribute__ ((naked));
void main (void)
{
sei();
for(;;)
{
}
}
Попробывал , выдает ошибку : test.c:16: warning: return type of 'main' is not 'int'
похоже гл.функция может иметь только int атрибут
а что значит определение ((naked)) ?
Функцию main объявите как int main(void)
Перед последней скбкой впишите return 0;
defunct
Jul 4 2011, 12:35
Цитата(domowoj @ Jul 2 2011, 05:48)

а вы выкинуть!!!
Выкинуть - если не знать и не хотеть учить asm. )
А так вообще что 15-я, что 13-я для своих задач отличные чипы. 13-я мне предпочтительней тактовым генератором на 9.6Mhz (кратно 9600 UART'а).
AlexG_changed
Jul 14 2011, 08:09
Программирование Tiny15 с помощью GCC описано здесь:
http://www.lightner.net/avr/ATtinyAvrGcc.html,
http://ned.bike-nomad.com:8080/Ned/54Заголовочные файлы со второй ссылки:
Нажмите для просмотра прикрепленного файлаPS: У Imagecraft был довольно приличный компилятор Си для ATtiny без ОЗУ
alexeyv
Jul 14 2011, 11:19
Цитата
а что значит определение ((naked)) ?
Насколько я помню, эта директива компилятора убирает эпилог/пролог функции, считая что из ф-ции нет возврата
Сталкивался с такой проблемой. Микроконтроллер ATtiny25 по пинам совместим с ATtiny15. При этом у 25-ки имеется ОЗУ...
Цитата(defunct @ Jul 2 2011, 06:23)

На C писать под такие крохи как t13 и t15, - это даже не "изврат", - это __гониво__.
t13 может гораздо больше чем просто мигать светодиодом, там аж 512 слов ПП. На поддержку COM порта тратится меньше сотни.
согласен, что тини13 может гораздо больше, чем просто мигать светодиодом. но не согласен на счет писания на Си - имею очень положительный опыт написания нескольких проектов именно на Си - и очень доволен. если надо выжать максимум - само собой асм, но в среднем и Си отлично подходит.
zmey71
Mar 18 2012, 08:56
Доброго времени суток!Кто из форумчан может предложить в SMD корпусе Тини15?теперь её купить не реально,снята с производства,есть Тини25,но на неё нужно прогу переделывать,а мне это не по силе,приборчик стоит мёртвым грузом,ни как закончить не могу из за Тини15.Или кто сможет переделать прошивку,исходник для Тини15 есть.Спасибо.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.