roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 05:51

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: PWM на tiny2313
СообщениеДобавлено: 03 дек 2013, 11:30 
Не в сети

Зарегистрирован: 03 дек 2013, 11:25
Сообщения: 5
Откуда: Пермь
прог. языки: AVR_ASM, Pascal
ФИО: Андрей
Здравствуйте.
Начал осваивать режим PWM В AVR микроконтроллер tiny2313. Запустить сам режим получилось - микронтроллер-полевик-лампочка, горит как надо. Решил добавить плавное изменение яркости на таймере_1 (PWM на таймере_0) и даже вроде бы работает в симуляторе(AVR Studio), но на устройстве просто горит с начальной предустановкой яркости. Взгляните незамыленным глазом где что упустил или не понял... Код прилагаю (делаю на AVR assembler).
F=8МГц, предделитель на 8.


Код:
.include "tn2313Adef.inc" ; C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler\Appnotes\tn2313Adef.inc

.def temp=r16
.def temp2=r17



.cseg
.org 0

rjmp RESET ; Reset Handler
nop; rjmp INT0 ; External Interrupt0 Handler
nop; rjmp INT1 ; External Interrupt1 Handler
nop; rjmp TIM1_CAPT ; Timer1 Capture Handler
rjmp TIMER1_COMPA ; Timer1 CompareA Handler
nop; rjmp TIM1_OVF ; Timer1 Overflow Handler
reti ;TIM0_OVF ; Timer0 Overflow Handler
nop; rjmp USART0_RXC ; USART0 RX Complete Handler
nop; rjmp USART0_DRE ; USART0,UDR Empty Handler
nop; rjmp USART0_TXC ; USART0 TX Complete Handler
nop; ANA_COMP ; Analog Comparator Handler
nop; rjmp PCINT0 ; PCINT0 Handler
nop; TIMER1_COMPB ; Timer1 Compare B Handler
reti; TIMER0_COMPA ; Timer0 Compare A Handler
nop; rjmp TIMER0_COMPB ; Timer0 Compare B Handler
nop; rjmp USI_START ; USI Start Handler
nop; rjmp USI_OVERFLOW ; USI Overflow Handler
nop; rjmp EE_READY ; EEPROM Ready Handler
nop; rjmp WDT_OVERFLOW ; Watchdog Overflow Handler
nop; rjmp PCINT1 ; PCINT1 Handler
nop; rjmp PCINT2 ; PCINT2 Handler

;-----------инициализация стека-----------
reset:
ldi temp,ramend
out SPL,temp

;------------инициализация портов----------
ser temp
out ddrd,temp ; порт d на вывод

out ddrb,temp ; порт b на вывод   
ser temp
out portd, temp
out portb, temp
;-------------инициализация таймера---------

ldi temp, 0
out OCR1AH, temp
ldi temp, 50
out OCR1AL, temp ;установка времени инкремента кажд 1 сек (4 и 26=)

ldi temp, 240
out OCR0A, temp ;установка начальной точки

ldi temp, 0b11000011
out TCCR0A, temp ;режим fast pwm WGM

clr temp
out tifr, temp ; сбросить флаги прерываний таймеров

ldi temp, 0b01000001 ; разрешаем прерывания канал А и переполнения T0 и A T1
out TIMSK, temp

ldi temp, 0b00000101 ; пуск таймера1 с делением на 1024,
out TCCR1b, temp
ldi temp, 0b00000011 ; пуск таймера0 с делением на 64
out TCCR0b, temp
sei ;Общее разрешение прерываний

;-------------ПРОГРАММА---------------------

main:

rjmp main

TIMER1_COMPA:

in temp, OCR0A
inc temp
out OCR0A, temp
clr temp
out TCNT1H, temp
out TCNT1L, temp
reti


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PWM на tiny2313
СообщениеДобавлено: 08 дек 2013, 17:47 
Пару дней назад столкнулся с похожей ситуацией на АТмега8. На Таймере1 собран генератор ШИМ. Таймер0 переполняется для других целей. Так вот, если оба прерывания разрешены, то переполнение Таймера0 наступает лишь единожды. Выход нашёл переложив нужды с Тамера0 на Таймер2, благо он там есть.
В вашем случае Таймера2 нет, зато есть второе событие Таймера1 - OCIE1B.


Вернуться к началу
  
 
 Заголовок сообщения: Re: PWM на tiny2313
СообщениеДобавлено: 09 дек 2013, 21:07 
Не в сети

Зарегистрирован: 03 дек 2013, 11:25
Сообщения: 5
Откуда: Пермь
прог. языки: AVR_ASM, Pascal
ФИО: Андрей
Выяснил, что Таймер1 не запускается, почему понять не могу...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PWM на tiny2313
СообщениеДобавлено: 10 дек 2013, 00:03 
Поиграйтесь со значениями счётных регистров. Мне удалось завести Таймер0. У Таймера0 число тиков до прерывания должно быть больше числа тиков до прерывания Таймера1.


Вернуться к началу
  
 
 Заголовок сообщения: Re: PWM на tiny2313
СообщениеДобавлено: 10 дек 2013, 21:26 
Не в сети

Зарегистрирован: 03 дек 2013, 11:25
Сообщения: 5
Откуда: Пермь
прог. языки: AVR_ASM, Pascal
ФИО: Андрей
Попробовал, не помогло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PWM на tiny2313
СообщениеДобавлено: 11 дек 2013, 01:30 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
проверьте выполняется ли код

ldi temp, 0b00000101 ; пуск таймера1 с делением на 1024,
out TCCR1b, temp

А луче используйте мастер кода CVAVR и посмотрите листинг на ASM

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PWM на tiny2313
СообщениеДобавлено: 11 дек 2013, 07:49 
Не в сети

Зарегистрирован: 03 дек 2013, 11:25
Сообщения: 5
Откуда: Пермь
прог. языки: AVR_ASM, Pascal
ФИО: Андрей
Вчера откорректировал программу, чтоб проследить из-за чего не работает T1, Как только выставляю биты wgm от T0 , T1 умирает. Причём не важно что я делаю сначала, пускаю T1 или выставляю режим работы T0/

Добавлено спустя 3 минуты 11 секунд:
avr123.nm.ru писал(а):
А луче используйте мастер кода CVAVR и посмотрите листинг на ASM

Буду пробовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PWM на tiny2313
СообщениеДобавлено: 13 фев 2014, 08:10 
Не в сети

Зарегистрирован: 03 дек 2013, 11:25
Сообщения: 5
Откуда: Пермь
прог. языки: AVR_ASM, Pascal
ФИО: Андрей
Если кому интересно будет. Решил я всё-таки свою проблему. А решилось всё установкой емкости на вывод ШИМ, без неё МК зависал, и выглядело как-будто не работает кусок программы (аппаратный ШИМ есть но не регулируется - программа не отвечает). Не думал я что простая лампочка от гирлянды включенная через полевик может повесить МК.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO