Таймеры в Tiny15

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

Таймеры в Tiny15

Сообщение @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.
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: Таймеры в Tiny15

Сообщение asteroid7 »

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

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

Re: Таймеры в Tiny15

Сообщение @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

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

Re: Таймеры в Tiny15

Сообщение ikarab »

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


Пожалуйста програмьте на Си ! в курсе Tych на стр 4 рекомендован компиолятор ICC - у него есть версия для Тинь - топик:

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

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

Re: Таймеры в Tiny15

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

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

Re: Таймеры в Tiny15

Сообщение smac »

Yellow Tiger писал(а):У WinAVR, как я понимаю, есть такая возможность - хотя я сам под тиньку 15-ю не писал, но в списке CPU она есть. Попробуй.

Есть, но по-моему в ВинАВР ее можно программировать только на ВинАВРовском ассемблере, точнее на gas - GNU assembler.
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

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

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

Ну да, а когда эти "несколько Tiny15" закончатся, можно найти другой специальный компилятор - и так каждый раз... До чего же удобно! Изображение

smac писал(а):Есть, но по-моему в ВинАВР ее можно программировать только на ВинАВРовском ассемблере, ...
Только-что попробовал - компилирует, hex - создает. Да и includ'ы для тиньки 15-ой заготовлены зачем-то... :roll:
smac
Мучитель микросхем
Сообщения: 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 писать, ну и отлично.
Аватара пользователя
Yellow Tiger
Сверлит текстолит когтями
Сообщения: 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, а писать на асме в то утро будет влом... :)))
Аватара пользователя
ikarab
Опытный кот
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57
Контактная информация:

Сообщение ikarab »

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

Сообщение nictrace »

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

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

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

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

Сообщение ikarab »

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

Сообщение nictrace »

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

Сообщение ikarab »

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

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

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

Сообщение nictrace »

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

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

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

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