Валяются у меня несколько 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.