Страница 1 из 2
Таймеры в Tiny15
Добавлено: Пт мар 20, 2009 07:26:55
@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.
Re: Таймеры в Tiny15
Добавлено: Пт мар 20, 2009 08:10:23
asteroid7
Прерывание TIMSK зря включили.
p.s. прикольно, но на сайте атмела tiny15 отсутствует как класс...
Re: Таймеры в Tiny15
Добавлено: Пт мар 20, 2009 08:33:37
@ndrey
asteroid7 писал(а):Прерывание TIMSK зря включили.
Да знаю я, это уже от безысходности, плюс, я же буду использовать еще один таймер, в котором будут прерывания и тогда TIMSK будет нужен.
asteroid7 писал(а):прикольно, но на сайте атмела tiny15 отсутствует как класс...
Эта модель с прошлого года более не выпускается, но это не значит, что ее нужно сбрасывать со счетов, тем более, что она есть в наличии.
По теме есть что-нибудь?
Добавлено: Вс мар 22, 2009 09:39:31
GP1
1. Разрешаеш прерывания, а вектора не задаеш, хотябы заглушку поставили (reti), опять же используется Т1 а прерывания разрешены от Т0, рекомендую использовать для установки/снятия флагов команды ORI, ANDI и значения записывать в bin-коде очень наглядно видно какие разряды пишутся.
2. OCR1B - в режиме ШИМ это частота повторения, а OCR1A - скважность, а у вас он не определен
ldi temp,0x20 ; 50% pwm
out OCR1A,temp
Удачи!
Re: Таймеры в Tiny15
Добавлено: Вс мар 22, 2009 10:12:02
ikarab
@ndrey писал(а):Tiny15. Хочу их приспособить под небольшие проекты, но вот беда - для этого МК нет возможности программировать в C.
Пожалуйста програмьте на Си ! в курсе Tych на стр 4 рекомендован компиолятор ICC - у него есть версия для Тинь - топик:
"Attiny без RAM на Си - компиллятор ICC tiny"
http://radiokot.ru/forum/viewtopic.php?t=14603
Настройка таймеров в микроконтроллерах AVR и PIC лекго выполняется с помощью
специальных мастеров настройки микроконтроллера компиляторов CVAVR и ICC.
Re: Таймеры в Tiny15
Добавлено: Вс мар 22, 2009 16:53:54
Yellow Tiger
@ndrey писал(а):Валяются у меня несколько Tiny15 ... вот беда - для этого МК нет возможности программировать в C.
У WinAVR, как я понимаю, есть такая возможность - хотя я сам под тиньку 15-ю не писал, но в списке CPU она есть. Попробуй.
Re: Таймеры в Tiny15
Добавлено: Вс мар 22, 2009 20:18:25
smac
Yellow Tiger писал(а):У WinAVR, как я понимаю, есть такая возможность - хотя я сам под тиньку 15-ю не писал, но в списке CPU она есть. Попробуй.
Есть, но по-моему в ВинАВР ее можно программировать только на ВинАВРовском ассемблере, точнее на gas - GNU assembler.
Добавлено: Вс мар 22, 2009 20:19:37
ikarab
ICC специальный для ATtiny используйте.
Добавлено: Вс мар 22, 2009 21:01:36
Yellow Tiger
Ну да, а когда эти "несколько Tiny15" закончатся, можно найти другой
специальный компилятор - и так каждый раз... До чего же удобно!
smac писал(а):Есть, но по-моему в ВинАВР ее можно программировать только на ВинАВРовском ассемблере, ...
Только-что попробовал - компилирует, hex - создает. Да и includ'ы для тиньки 15-ой заготовлены зачем-то...

Добавлено: Вс мар 22, 2009 23:58:08
smac
Yellow Tiger писал(а):Только-что попробовал - компилирует, hex - создает. Да и includ'ы для тиньки 15-ой заготовлены зачем-то...

Ну видимо уже добавили поддержку, хотя здесь
http://www.nongnu.org/avr-libc/user-manual/index.html напроитв тини15 стоит примечание, что возможно программирование только на асм. Оказалось что показалось

. Значится можно на ВинАВР на С под тини15 писать, ну и отлично.
Добавлено: Пн мар 23, 2009 08:40:20
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, а писать на асме в то утро будет влом...

Добавлено: Пн мар 23, 2009 11:07:53
ikarab
В компиляторе ICC для ATtiny есть мастер ПРАВИЛЬНОГО кода.
Добавлено: Пн мар 23, 2009 12:34:12
nictrace
Чтой-то все ударились в обсуждение компиляторов...
Скажу пару слов про код.
Запустил в протеусе - таймер шевелится, правда, почему-то с частотой СК/8.. Хотя, судя по докам, должно быть =СК. Подозреваю глюк протеуса...
Серьезная ошибка: прерывания разрешены, а векторов нет, код начинается с адреса 0! Делайте rjmp до 4-го включительно, и обработчик прерывания. А умножитель (PLL) нигде включать не нужно, он включается при инициализации TCCR1.
Добавлено: Пн мар 23, 2009 14:08:50
Yellow Tiger
nictrace писал(а):Запустил в протеусе - таймер шевелится, правда, почему-то с частотой СК/8..
Это в какой модели? Какая-нить мега?
Добавлено: Пн мар 23, 2009 14:40:56
ikarab
Наверно тини15 - раз об ней топик.
Добавлено: Пн мар 23, 2009 15:44:48
nictrace
естественно, тини15
Растет значение внутреннего регистра таймера.
Добавлено: Пн мар 23, 2009 16:13:57
ikarab
Мастер ICC для ATtiny пробовали для настройки таймера ? Попробуйте - сразу правильно молотить начнет.
Добавлено: Пн мар 23, 2009 16:31:09
Yellow Tiger
nictrace писал(а):естественно, тини15
Я спросил, заподозрив CKDIV8, но поскольку ты брал именно тиньку, а у тиньки его нет, то и впрямь д.б. виноват протеус, если только... а установку клоков в модели не трогал?
Добавлено: Пн мар 23, 2009 17:09:47
nictrace
их там просто нет...
в отличие от tiny25, например...
Добавлено: Пн мар 23, 2009 17:20:34
Yellow Tiger
Кого нет - клоков? Странно - даже в шестом протеусе есть, неужто потом убрали?
А, кстати, твой вывод о том, что клоки поделены на 8, из чего именно последовал?