Страница 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-ой заготовлены зачем-то... :roll:

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

Ну видимо уже добавили поддержку, хотя здесь 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, из чего именно последовал?