Таймеры в Tiny15

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Аватара пользователя
Сообщения: 75
Зарегистрирован: Чт дек 06, 2007 22:26:18

Сообщение @ndrey »

Доброго всем здоровья.
Валяются у меня несколько Tiny15. Хочу их приспособить под небольшие проекты, но вот беда - для этого МК нет возможности программировать в C. С асмом я знаком весьма поверхностно. Вот уже 5-й день читаю даташит и лажу по инету в надежде запустить хоть какой-нибудь из 2-х таймеров в Tiny15 для начала. Так-то мне нужны оба таймера, один из которых будет выводить ШИМ.
Написал такой вот незатейливый код:

Код: Выделить всё

.include "tn15def.inc"

.def temp =r16
.def pwm =r17
.cseg
.org $0000
;-------------------------
start:
ldi temp,0x07	;Настраиваем порты
out DDRB,Temp

ldi temp,0x65	;Настраиваем таймер
out TCCR1,temp
ldi temp,0x02
out TIMSK,temp
ldi temp,0x40
out OCR1B,temp

sei				;Разрешаем прерывания
;-------------------------
LOOP:			;Бесконечный цикл
rjmp loop
При симуляции в Proteus на ноге PB1 постоянный "0". Меняю значение OCR1B - толку никакого.
На сайте www.atmel.com нашел документ AVR131: Using the AVR's High-speed PWM, на 5-й странице которого нарисован алгоритм запуска таймера в режиме PWM. На втором же шаге споткнулся. Enable and lock PLL - откуда взять этот PLL? В даташите не нашел.
Поправьте мой код, чтобы я смог получить на PB1 нормальный ШИМ.

P.S. Убедительно вас прошу не отсылать меня на корневые сайты, не заставлять пользоваться поиском, я уже 5-й день поиск юзаю и все без результатно. Если есть ссылки на конкретные статьи в инете, то прошу выкладывать их, а не ссылки на корневой сайт, как это любит делать уважаемый Tych.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Сообщение asteroid7 »

Прерывание TIMSK зря включили.

p.s. прикольно, но на сайте атмела tiny15 отсутствует как класс...
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 75
Зарегистрирован: Чт дек 06, 2007 22:26:18

Сообщение @ndrey »

asteroid7 писал(а):Прерывание TIMSK зря включили.
Да знаю я, это уже от безысходности, плюс, я же буду использовать еще один таймер, в котором будут прерывания и тогда TIMSK будет нужен.
asteroid7 писал(а):прикольно, но на сайте атмела tiny15 отсутствует как класс...
Эта модель с прошлого года более не выпускается, но это не значит, что ее нужно сбрасывать со счетов, тем более, что она есть в наличии.

По теме есть что-нибудь?
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

1. Разрешаеш прерывания, а вектора не задаеш, хотябы заглушку поставили (reti), опять же используется Т1 а прерывания разрешены от Т0, рекомендую использовать для установки/снятия флагов команды ORI, ANDI и значения записывать в bin-коде очень наглядно видно какие разряды пишутся.
2. OCR1B - в режиме ШИМ это частота повторения, а OCR1A - скважность, а у вас он не определен
ldi temp,0x20 ; 50% pwm
out OCR1A,temp

Удачи!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

@ndrey писал(а):Tiny15. Хочу их приспособить под небольшие проекты, но вот беда - для этого МК нет возможности программировать в C.
Пожалуйста програмьте на Си ! в курсе Tych на стр 4 рекомендован компиолятор ICC - у него есть версия для Тинь - топик:

"Attiny без RAM на Си - компиллятор ICC tiny"
http://radiokot.ru/forum/viewtopic.php?t=14603

Настройка таймеров в микроконтроллерах AVR и PIC лекго выполняется с помощью специальных мастеров настройки микроконтроллера компиляторов CVAVR и ICC.
Контактная информация:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

@ndrey писал(а):Валяются у меня несколько Tiny15 ... вот беда - для этого МК нет возможности программировать в C.
У WinAVR, как я понимаю, есть такая возможность - хотя я сам под тиньку 15-ю не писал, но в списке CPU она есть. Попробуй.
Реклама
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

Yellow Tiger писал(а):У WinAVR, как я понимаю, есть такая возможность - хотя я сам под тиньку 15-ю не писал, но в списке CPU она есть. Попробуй.
Есть, но по-моему в ВинАВР ее можно программировать только на ВинАВРовском ассемблере, точнее на gas - GNU assembler.
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

ICC специальный для ATtiny используйте.
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

Ну да, а когда эти "несколько Tiny15" закончатся, можно найти другой специальный компилятор - и так каждый раз... До чего же удобно! Изображение
smac писал(а):Есть, но по-моему в ВинАВР ее можно программировать только на ВинАВРовском ассемблере, ...
Только-что попробовал - компилирует, hex - создает. Да и includ'ы для тиньки 15-ой заготовлены зачем-то... :roll:
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

Yellow Tiger писал(а):Только-что попробовал - компилирует, hex - создает. Да и includ'ы для тиньки 15-ой заготовлены зачем-то... :roll:
Ну видимо уже добавили поддержку, хотя здесь http://www.nongnu.org/avr-libc/user-manual/index.html напроитв тини15 стоит примечание, что возможно программирование только на асм. Оказалось что показалось :). Значится можно на ВинАВР на С под тини15 писать, ну и отлично.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

Так, а по сноске [1], там же данной, - ходить не пробовал? Там написано:
While some small AVRs are not directly supported by the C compiler since they do not have a RAM-based stack (and some do not even have RAM at all), it is possible anyway to use the general-purpose registers as a RAM replacement since they are mapped into the data memory region.
И еще дана ссылка на чьи-то подробные разъяснения. Потом почитаю, на досуге - вдруг и меня та же беда постигнет - найду в столе завалявшиеся тиньки-15, а писать на асме в то утро будет влом... :)))
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

В компиляторе ICC для ATtiny есть мастер ПРАВИЛЬНОГО кода.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль

Сообщение nictrace »

Чтой-то все ударились в обсуждение компиляторов... :)

Скажу пару слов про код.
Запустил в протеусе - таймер шевелится, правда, почему-то с частотой СК/8.. Хотя, судя по докам, должно быть =СК. Подозреваю глюк протеуса...
Серьезная ошибка: прерывания разрешены, а векторов нет, код начинается с адреса 0! Делайте rjmp до 4-го включительно, и обработчик прерывания. А умножитель (PLL) нигде включать не нужно, он включается при инициализации TCCR1.
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

nictrace писал(а):Запустил в протеусе - таймер шевелится, правда, почему-то с частотой СК/8..
Это в какой модели? Какая-нить мега?
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

Наверно тини15 - раз об ней топик.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль

Сообщение nictrace »

естественно, тини15
Растет значение внутреннего регистра таймера.
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

Мастер ICC для ATtiny пробовали для настройки таймера ? Попробуйте - сразу правильно молотить начнет.
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

nictrace писал(а):естественно, тини15
Я спросил, заподозрив CKDIV8, но поскольку ты брал именно тиньку, а у тиньки его нет, то и впрямь д.б. виноват протеус, если только... а установку клоков в модели не трогал?
Мучитель микросхем
Аватара пользователя
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль

Сообщение nictrace »

их там просто нет...
в отличие от tiny25, например...
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

Кого нет - клоков? Странно - даже в шестом протеусе есть, неужто потом убрали? :?
А, кстати, твой вывод о том, что клоки поделены на 8, из чего именно последовал?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»