Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATtiny15 и WinAVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
MaxiMuz
Пытался откомпилировать в 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
Дело в том, что у тини 15 нет ОЗУ,
может поэтому.
MaxiMuz
Цитата(domowoj @ Jun 25 2011, 20:36) *
Дело в том, что у тини 15 нет ОЗУ,
может поэтому.

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

P.S. в документации avr-libc, идущей в комплекте WinAVR, имеется упоминание о процессе работы с attiny15 и есть ссылочка... но... см. выше.
MaxiMuz
Всем спасибо!
купил более просторный ATtiny45, буду на нем тренироваться sm.gif
Тему можно закрывать
alexeyv
В догонку к теме:
Можно также попытаться использовать регистровые переменные:
Код
volatile register unsigned char rx asm("r18");

smk
Хоть тему и можно закрывать, но встанет вопрос куда девать tiny15. Я вот именно из-за желания куда-либо пристроить МК извратился с CVAVR прикрутив к нему хидер с описанием регистров тиньки и их адресами. Если подключить этот хидер и компилировать как для tiny13 то все работает. Вот зарядное для LI-Ion и NiMh аккумуляторов будет.
defunct
Цитата(smk @ Jul 1 2011, 19:08) *
Хоть тему и можно закрывать, но встанет вопрос куда девать tiny15.

Выучить asm (вопрос одного-двух дней), или выкинуть.
На C писать под такие крохи как t13 и t15, - это даже не "изврат", - это __гониво__.
t13 может гораздо больше чем просто мигать светодиодом, там аж 512 слов ПП. На поддержку COM порта тратится меньше сотни.
domowoj
Мне лично тини15 больше нравится, чем 13_я,
а вы выкинуть!!!

(А ассемблер конечно нужно знать.)
MaxiMuz
Цитата(alexeyv @ Jun 30 2011, 09:15) *
В догонку к теме:
Можно также попытаться использовать регистровые переменные:
Код
volatile register unsigned char rx asm("r18");

Там уже просто глав.цикл int main(void) {} без команд , без заголовочных файлов - вызывает ошибку. Если только зам блок main определить как не содержащий обращение к ОЗУ ?
alexeyv
Цитата
Там уже просто глав.цикл int main(void) {} без команд , без заголовочных файлов - вызывает ошибку.


Попробуйте так:
Код
void main (void) __attribute__ ((naked));
void main (void)
{
  sei();  
  for(;;)
   {
   }
}
MaxiMuz
Цитата(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)) ?
smk
Функцию main объявите как int main(void)

Перед последней скбкой впишите return 0;
defunct
Цитата(domowoj @ Jul 2 2011, 05:48) *
а вы выкинуть!!!

Выкинуть - если не знать и не хотеть учить asm. )
А так вообще что 15-я, что 13-я для своих задач отличные чипы. 13-я мне предпочтительней тактовым генератором на 9.6Mhz (кратно 9600 UART'а).
AlexG_changed
Программирование Tiny15 с помощью GCC описано здесь: http://www.lightner.net/avr/ATtinyAvrGcc.html,
http://ned.bike-nomad.com:8080/Ned/54

Заголовочные файлы со второй ссылки:Нажмите для просмотра прикрепленного файла

PS: У Imagecraft был довольно приличный компилятор Си для ATtiny без ОЗУ
alexeyv
Цитата
а что значит определение ((naked)) ?


Насколько я помню, эта директива компилятора убирает эпилог/пролог функции, считая что из ф-ции нет возврата
dde29
Сталкивался с такой проблемой. Микроконтроллер ATtiny25 по пинам совместим с ATtiny15. При этом у 25-ки имеется ОЗУ...
ARV
Цитата(defunct @ Jul 2 2011, 06:23) *
На C писать под такие крохи как t13 и t15, - это даже не "изврат", - это __гониво__.
t13 может гораздо больше чем просто мигать светодиодом, там аж 512 слов ПП. На поддержку COM порта тратится меньше сотни.
согласен, что тини13 может гораздо больше, чем просто мигать светодиодом. но не согласен на счет писания на Си - имею очень положительный опыт написания нескольких проектов именно на Си - и очень доволен. если надо выжать максимум - само собой асм, но в среднем и Си отлично подходит.
zmey71
Доброго времени суток!Кто из форумчан может предложить в SMD корпусе Тини15?теперь её купить не реально,снята с производства,есть Тини25,но на неё нужно прогу переделывать,а мне это не по силе,приборчик стоит мёртвым грузом,ни как закончить не могу из за Тини15.Или кто сможет переделать прошивку,исходник для Тини15 есть.Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.