ШИМ на ATtiny2313

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
novichokmk
Родился
Сообщения: 5
Зарегистрирован: Вт окт 04, 2011 13:34:38

ШИМ на ATtiny2313

Сообщение novichokmk »

Доброго времени суток уважаемые коты. Пишу программу для медленного мигания светодиода. Использую 16 битный счётчик в режиме ШИМ, Phase correct, 8бит. Проблема заключается в том, что обновление регистра OCR1AL происходит не по достижениии TOP а сразу же. Насколько мне известно регистр OCR1A имеет двойную буферизацию и при записи в него значения оно появится в регистре при достижении TOP. Видимо что-то с настройками счётчика не так. К тому же занесение единицы в WGM12 не переводит счётчик в режим Fast PWM счётчик при достижении 255 начинает считать обратно. Ниже привожу текст программы. Заранее всем спасибо.

.include "tn2313def.inc"
.device ATtiny2313

.cseg
.org 0

rjmp Reset ;вектора прерываний
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop

.def Temp=R16; обозначения регистров
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def odin=R20

;****************************************************
; ИНИЦИАЛИЗАЦИЯ
;****************************************************
RESET:

ldi odin, 1

ldi temp, 0b11111111 ; Настройка порта на вывод
out DDRB, temp;

ldi Temp,ramend
out SPL,Temp

ldi temp, 0b10100001 ; Режим ШИМ с фазовой коррекцией счётчик 1
out TCCR1A, temp

ldi temp, 0b00000010 ; Тактовый сигнал счётчика 1 =СК/8
out TCCR1B, temp

ldi temp, 0; Обнуляем счётчик
out TCNT1L, temp

;----------------------------------------------------
;********************************************************
; программа медленного изменения яркости светодиодов
;********************************************************
unit1: ldi temp, 0; Глубина яркости
rjmp unit2
unit2: ldi temp3, 1;количество периодов с одно скважностью
rjmp Chance
Chance:
out OCR1AL, temp
out OCR1BL, temp
Zikl:
in temp1,TCNT1L
cpi temp1,20
brne Zikl
Zikl2:
in temp1,TCNT1L
cpi temp1,21
brne Zikl2
dec temp3; Счётчик периодов с одной скважностью
cpi temp3,0
brne Chance
cpi temp,255; Яркость
breq Unit1
add temp,odin
rjmp Unit2
;-------------------------------------------------------
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: ШИМ на ATtiny2313

Сообщение ploop »

Для того, чтобы не ошибиться при инициализации счетчиков и прочего оборудования, лучше биты конфигурации устанавливать по их именам (а они все именованы).
Например так:

Код: Выделить всё

ldi r16,(1<<COM0A0)|(1<<COM0A1)|(1<<WGM00) ; Phase correct PWM
out TCCR0A,r16
COM0A0, COM0A1 и WGM00 - это просто константы, равные порядковому номеру бита. В этих местах будет единица. В итоге формируется битовая маска, наподобие вашей 0b10100001, только её можно читать и всё понятно. А сейчас мне трудно сообразить, что не так с настройками счетчика :)
Реклама
novichokmk
Родился
Сообщения: 5
Зарегистрирован: Вт окт 04, 2011 13:34:38

Re: ШИМ на ATtiny2313

Сообщение novichokmk »

Спасибо за ответ. Знаю про такую запись. Просто мне удобнее так. К тому же в AVR Studio видно в окне view все установленные биты с названиями. Не писал бы если бы всё как следует не проверил. Запись
ldi temp, (1<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(0<<WGM11)|(1<<WGM10) ;
out TCCR1A, temp

ldi temp, (0<<WGM13)|(1<<WGM12)|(0<<CS12)|(1<<CS11)|(0<<CS10)
out TCCR1B, temp
ничего не изменила.
Скрин из даташита прилагается.
Не знаю уже куда копать.
Вложения
скрин 2313.rar
(90.05 КБ) 175 скачиваний
novichokmk
Родился
Сообщения: 5
Зарегистрирован: Вт окт 04, 2011 13:34:38

Re: ШИМ на ATtiny2313

Сообщение novichokmk »

Сократил текст программы. Оставил только настройки.
RESET:
ldi temp, 0b11111111
out DDRB, temp;

ldi Temp,ramend
out SPL,Temp

ldi temp, (1<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(0<<WGM11)|(1<<WGM10)
out TCCR1A, temp

ldi temp, (0<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10)
out TCCR1B, temp

ldi temp, 0;
out TCNT1L, temp

ldi temp, 40;
out OCR1AL, temp

CHANGE:
RJMP CHANGE

В режим Fast PWM не переходит. Изменение WGM12 и WGM13 вообще ничего не меняет. Как такое может быть? Всё по даташиту. Откликнитесь пожалуйста кто знает. Заранее спасибо.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: ШИМ на ATtiny2313

Сообщение GP1 »

Код: Выделить всё

   ldi  temp, 0;          
   out TCNT1L, temp
 		
   ldi  temp, 40; 
   out OCR1AL, temp

честно говоря меня как-то напрягают эти строки, если мне не изменяет память, 16 битные регистры в Т1 надо обязательно читать/писать ОБА, иначе бяка получается.
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
novichokmk
Родился
Сообщения: 5
Зарегистрирован: Вт окт 04, 2011 13:34:38

Re: ШИМ на ATtiny2313

Сообщение novichokmk »

GP1 писал(а):

Код: Выделить всё

   ldi  temp, 0;          
   out TCNT1L, temp
 		
   ldi  temp, 40; 
   out OCR1AL, temp

честно говоря меня как-то напрягают эти строки, если мне не изменяет память, 16 битные регистры в Т1 надо обязательно читать/писать ОБА, иначе бяка получается.
Согласен. Только эти строки не влияют на режим работы счётчика. Он в Fast PWM не хочет переходить. Хотя по даташиту следует внести в WGM13:0 0b0101 и будет выбран быстрый 8-битный ШИМ. Всё равно спасибо за ответ.
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: ШИМ на ATtiny2313

Сообщение GP1 »

таки да...
есть вариант - что это глюк студии, истина в железе.
Чем дальше, тем больше становлюсь занудой...
Изображение
novichokmk
Родился
Сообщения: 5
Зарегистрирован: Вт окт 04, 2011 13:34:38

Re: ШИМ на ATtiny2313

Сообщение novichokmk »

Проблема решилась выбором Debug platform AVR Simulator 2 ( раньше было AVR Simulator) в создании проекта. Тема закрыта. Всем спасибо.
Аватара пользователя
van_de_luxe
Встал на лапы
Сообщения: 103
Зарегистрирован: Вс окт 31, 2010 16:46:10
Откуда: Оттуда

Re: ШИМ на ATtiny2313

Сообщение van_de_luxe »

у меня для 8 меги тоже самое... она только в одном симуляторе есть. Кто использовал fast pwm 8-bit, скажите в железе этот режим согласно даташиту включается?
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: ШИМ на ATtiny2313

Сообщение ploop »

На мегах 48/88 у меня работают одновременно три режима (на разных счетчиках разумеется) - Fast PWM, FCPWM, CTC. Уверен, что и на 8й будет работать.
Закрыто

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