Пропорциональное управление на МК (Знание=Сила)

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

ВитГо писал(а):и вопрос: после какого действия инициализации счетчик Т1 начинает считать?
шепотом: SEI ?
команда компилятора .org помещает следующий за ней код по адресу
метки адресов (типа PCIDaddr, OC1Aaddr ну в общем всех) указаны в inс файле
по адресу если прерывание не используется сразу ставим RETI (возврат из прерывания)
если прерывание используется то ставим RJMP и нужную нам метку процедуры обработчика прерываний
что за метка адресов ( с PCIDaddr, OC1Aaddr ну в общем со всеми - не знаком я ) ?
не зная броду не лезь к вольтмоду
Реклама
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

про счетчик: нет, он начинает считать момента установки предделителя !
sei - это разрешение прерываний, но счетчик может считать и без прерываний...

про метки: глянь файл tn2313A.inc (самый его конец)
эти метки - адреса точек прерываний..
Реклама
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

ВитГо писал(а):про метки: глянь файл tn2313A.inc (самый его конец)
эти метки - адреса точек прерываний..
нет у меня этого файла - я в блокноте пишу :)
был у меня пятый авр студио на второй машине, но на ней сдох HDD - куплю новый, восстановлю все программы
и только потом настраиваем встроенные устройства контроллера: счетчики, компараторы, АЦП и так далее
так?
Спойлер

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

reset:			; включение микроконтроллера

Sli			; глобальный запрет на прерывания


ldi Temp,low(RamEnd)	;	
out SPL,Temp		;инициализации стека



ldi Temp,0b10000000
out DDRB,Temp           ;настроили порт "В" 
			;х0000000 - "вывод" на передатчик
			;0000хххх - "ввод" для чтения клавиатуры



ldi Temp,0b00001111
out DDRD,Temp 		;настраиваем порт "D" на вывод(запись)(0-ввод, 1-вывод)
			;0000хххх - на сканирование столбцов клавы



ldi Temp, (1<<OCIE1A)	;разрешить прерывание компаратора
out TIMSK,Temp



ldi Temp,0b00000001	; тактовый сигнал = CK (1:1)
out TCCR1B,Temp		; тут счетчик "Б" начинае считать


			; инициализация компаратора
ldi Temp,0xC		; 3кГц,  1/3000=0,00033сек=330мкс,   330/2=165мкс длительность импульса или паузы(время-Т)
out OCR1AH,Temp		; 0,05мкс*65535=3276,75    3276,75>165 --- по этому не будем делить тактовую частоту (СК)
ldi Temp,0xE4		; 165мкс/0,05мкс=3300 тиков таймера  3300=CE4(hex)   
out OCR1AL,Temp		;




ldi Temp,0		;обнуление таймера при включении
out TCNT1H,Temp
out TCNT1L,Temp

я вот только про TCCR1A ни как не пойму...
нам что, нужно установить два тактовых сигнала ?

вот так

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

ldi Temp,0b00000001	; тактовый сигнал = CK (1:1)
out TCCR1B,Temp		; тут счетчик начинает считать


			; инициализация компаратора
ldi Temp,0x19		; 3кГц,  1/3000=0,00033сек=330мкс,   330 длительность импульса или паузы(время-2Т)
out OCR1ВH,Temp		; 0,05мкс*65535=3276,75    3276,75>330 --- по этому не будем делить тактовую частоту (СК)
ldi Temp,0xC8		; 330мкс/0,05мкс=6600 тиков таймера  6600=19C8(hex)   
out OCR1ВL,Temp		; ?????????????????????????????????????????????????????????????????????????????



;************************************************************************************

ldi Temp,0b00000001	; тактовый сигнал = CK (1:1)
out TCCR1A,Temp		; тут счетчик начинает считать


			; инициализация компаратора
ldi Temp,0xC		; 3кГц,  1/3000=0,00033сек=330мкс,   330/2=165мкс длительность импульса или паузы(время-Т)
out OCR1AH,Temp		; 0,05мкс*65535=3276,75    3276,75>165 --- по этому не будем делить тактовую частоту (СК)
ldi Temp,0xE4		; 165мкс/0,05мкс=3300 тиков таймера  3300=CE4(hex)   
out OCR1AL,Temp		;

не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

я просил так

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

ldi Temp,0b00000001   ; тактовый сигнал = CK (1:1)
out TCCR1B,Temp      ; тут счетчик начинает считать
не писать !!

правильно вот так:

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

ldi Temp, (1<<CS10)   ; тактовый сигнал = clk/1  no prescaling
out TCCR1B,Temp      ; тут счетчик начинает считать
угу, считать то начали... но вот что ?

лишних битов конфигурации не бывает, ты установил далеко не все !

так что давай начнем с TCCR1A и TCCR1B
какие в нем видишь биты конфигурации (и в какое состояние их нужно установить)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

ВитГо писал(а):я просил так........не писать !!
я думал это касается только регистра Timsk
...видимо это касается всех регистров? - теперь ясно :oops:
ВитГо писал(а): какие в нем видишь биты конфигурации (и в какое состояние их нужно установить)
TCCR1A - Timer/Counter1 Control Register A - контрольный регистр 1-го таймера А
TCCR1B - Timer/Counter1 Control Register B - контрольный регистр 1-го таймера B
http://www.promelec.ru/pdf/ATTINY2313.pdf страница 107
три младших бита TCCR1B устанавливают источник тактового сигнла
остальные - ну в общем вот
TCCR1B.png
(11.3 КБ) 613 скачиваний
Изображение
Bit 7 – ICNC1: Input Capture Noise Canceler
Bit 6 – ICES1: Input Capture Edge Select
Bit 5 – Reserved Bit
Bit 4:3 – WGM13:2: Waveform Generation Mode/ режим генерации сигнала
Bit 2:0 – CS12:0: Clock Select

и TCCR1A
TCCR1A.png
(12.02 КБ) 688 скачиваний
Изображение
Bit 7:6 – COM1A1:0: Compare Output Mode for Channel A
Bit 5:4 – COM1B1:0: Compare Output Mode for Channel B
Bit 1:0 – WGM11:0: Waveform Generation Mode
не зная броду не лезь к вольтмоду
Реклама
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

:-)

давай с TCCR1A

какие биты и за что отвечают ?
Реклама
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

DI HALT об этом писал тут http://easyelectronics.ru/avr-uchebnyj- ... -shim.html ровно 4 года назад :))
Изображение
Другие комбинации битов WGM задают режимы Phase Correct PWM и CTC (сброс OCxx при совпадении).
TCCR1A.1.png
(41.4 КБ) 661 скачивание
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

а в даташите что написано ?

стр. 104
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

там по английски :oops:
гугл переводчик
COM1A1: 0 и COM1B1: 0 контроль выходного Сравнить штифты (OC1A и OC1B
соответственно) поведение. Если один или оба из COM1A1: 0 биты записываются в один, OC1A
Выход отменяет нормальную функциональность порта ввода / вывода он подключен. Если один или
оба COM1B1: 0 бит записываются в один, выход OC1B отменяет нормальную порт
Функциональные возможности ввода / вывода он подключен. Тем не менее, отметим, что данные направления Регистрация
(DDR) бит, соответствующий OC1A или OC1B вывод должен быть установлен для того, чтобы
Драйвер вывода.
Когда OC1A или OC1B подключен к выводу, функция COM1x1: 0 бит
зависит от WGM13: 0 биты настройки. Таблица 43 показывает COM1x1: 0 немного функциональности
когда WGM13: 0 биты устанавливаются в нормальном режиме или CTC (не PWM).
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

ну и что ?

смотрим табличку:
1. normal operation, oc1a\oc1b - disconnected
2. toggle oc1a\oc1b on Compare match
3. clear oc1a\oc1b on compare match
4. set ----\----\-----\----\----

что из этого нам подходит?

напомню, мы хотели чтобы таймер при совпадении сам менял состояние вывода oc1a......
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

теперь нужно подумать в какой режим нужно получить от таймера T1.
......
......
теперь открывай datasheet на свой контроллер и смотри как настроить T1 чтобы он работал так как я описал (подсказка: это раздел 16 bit Timer/Counter, далее подраздел 16 bit Timer/Counter Register Description (он последний в списке подразделов таймера)
я видимо где то тут тупанул и не могу понять что нужно от таймера..
я понимаю что нужно настроить tccr1a но не понимаю для чего... :oops: :dont_know:

напомню, мы хотели чтобы таймер при совпадении сам менял состояние вывода oc1a......
01 ? Переключить OC1A/OC1B по совпадению.
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

гм..
нужно настроить таймер,

нам нужен счет таймера Т1 с изменением значения внешнего выхода OC1A при совпадении значения таймера с регистром OCR1A

это по даташиту вторая строка, COM1A1=0 COM1A0=1 - Toggle OC1A on Compare match - если перевести: переключение OC1A при совпадении..

запоминаем
LDI temp, (1<<COM1A0) ; COM1A1 у нас равен нулю, поэтому его устанавливать не нужно

читаем далее выводы: COM1B1 \ COM1B0 - используется для OCR1B и OC1B - нам не нужно, значит будут равны нулю !

идем дальше: WGM11 и WGM10 - смотрим большую таблицу на странице 106
смотрим MODE 4: WGM12=1, WGM13=WGM11=WGM10=0 CTC top=OCR1A - наш случай !!

в TCCR1A только регистры WGM11 и WGM10 которые в нашем MODE 4 должны быть равны нулю
ну коль это так - значит с регистром TCCR1A мы закончили !
получился код

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

        LDI temp, (1<<COM1A0) ; COM1A1 у нас равен нулю, поэтому его устанавливать не нужно
        OUT TCCR1A, temp
дальше идет TCCR1B

попробуешь ?
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

конечно :)

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

LDI temp, (1<<COM1A0) ;
OUT TCCR1A, temp

ldi Temp,(1<<wgm12)|(1<<cs10)
out OCCR1B,Temp
Последний раз редактировалось uwrtey Сб авг 25, 2012 20:57:31, всего редактировалось 3 раза.
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

главное не спеши, и смотри как работает КАЖДЫЙ БИТ !
в конфигурации мелочей не бывает :-)

TCCRA1 и TCCR1B у нас готовы...

теперь TIMSK !
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

код постом выше получился...
ВитГо писал(а):нам нужен счет таймера Т1 с изменением значения внешнего выхода OC1A при совпадении значения таймера с регистром OCR1A
А для чего нам изменение значения внешнего выхода OC1A ???
к передатчику ведь подключена 12 ножка микросхемы

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

ldi Temp,0b10000000
out DDRB,Temp           ; настроили порт "В" 
			          ; х0000000 - "вывод" на передатчик
			          ; 0000хххх - "ввод" для чтения клавиатуры
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

насколько я помню решали подключать 15ую ножку - OC1A !!

видно я просмотрел при инициализации (не сверился с даташитом)

p.s. я просто тут "с головой" в своем проекте на меге32.. :kill: у меня тут артефакты при выводе видео - уже весь моСК себе вынес.. кому расскажи - не поверят что так бывает :-)
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

ВитГо писал(а):p.s. я просто тут "с головой" в своем проекте на меге32.. :kill: у меня тут артефакты при выводе видео - уже весь моСК себе вынес.. кому расскажи - не поверят что так бывает :-)
я в Тебя верю! :))
а у тебя модель с камерой? круууто :beer:
ВитГо писал(а):видно я просмотрел при инициализации (не сверился с даташитом)
я тут писал

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

ldi Temp,0b11110000
out DDRB,Temp           ;настроили порт "В"
         ;х0000000 - вывод на передатчик
         ;00Х00000 - ДЛЯ ГЕНЕРАЦИИ (НЕ ЗНАЮ ЧТО ДЕЛАТЬ - ВЫХОД ИЛИ ВХОД)
         ;0000хххх - для чтения клавиатуры
а Ты ответил

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

ldi Temp,0b10000000
out DDRB,Temp           ;настроили порт "В"
         ;х0000000 - выход  на передатчик
         ;0000хххх - вход    чтения клавиатуры
вот оно чё......... :)))

вот и датащит на тини 2313 http://www.promelec.ru/pdf/ATTINY2313_kr.pdf и вот http://www.promelec.ru/pdf/ATTINY2313.pdf
Последний раз редактировалось uwrtey Вс авг 26, 2012 08:59:41, всего редактировалось 1 раз.
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

чисто поржать

есть такой код обработчика прерывания:

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

OCR1B_COMP:		; ----------------------------------------------------------------------------


                 ; вывод строки
					ldi		R16		, (1<<SPE)|(1<<MSTR)|(1<<CPHA) ; включили SPI, режим ведущий
					out		SPCR	, R16
                    
					ldi     r17, 10

					ldi 	r18 , 0b11101111

lloop1:				out     SPDR    , R18 ;                   
 					nop
					nop
					nop
					nop
					nop
					nop
					nop
					nop
 					nop
					nop
					nop
					nop
					nop
					nop
					nop
					; 4 такта	
					dec     r17
					brne    lloop1
                    
					out     SPDR    , R17
					out		SPCR	, R17
					cbi		portb	, 5			

					cpi     r17 , 1   ; ЧУДО КОМАНДА !!
					
					reti
вторая строка снизу ЧУДО КОМАНДА ! на вывод изображения как видно она повлиять не может (находиться вне цикла!) но стоит ее убрать - и изображение плывет из строчки в строчку по горизонтали на 1 пиксел !! причем в прерывание я захожу после sleep - так что вход точный !

сейчас вот сверху появилась какая то пиксельная линия на половину кадра - тоже не понимаю что за хрень, вроде ничего так не вывожу :dont_know:

в общем отлаживаю глюки...
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение uwrtey »

TIMSK стр 78 и 109 http://www.promelec.ru/pdf/ATTINY2313.pdf
Изображение
timsk.png
(12.53 КБ) 781 скачивание
Bit 7 - // Timer/Counter1 Overflow Interrupt Enable - разрешение прерывания по переполнению 1-го таймера
Bit 6 - // Timer/Counter1 Output Compare Match Interrupt Enable - разрешение прерывания компаратора 1-го таймера
Bit 5 - // видимо то же, что Bit 6
Bit 4 – Res: Reserved Bit
Bit 3 – ICIE1: Timer/Counter1, Input Capture Interrupt Enable * Включить вход прерывания захвата
Bit 2 – OCIE0B: Timer/Counter0 Output Compare Match B Interrupt Enable
Bit 1 – TOIE0: Timer/Counter0 Overflow Interrupt Enable * разрешение прерываний от переполнения
Bit 0 – OCIE0A: Timer/Counter0 Output Compare Match A Interrupt Enable
Последний раз редактировалось uwrtey Сб авг 25, 2012 23:03:16, всего редактировалось 3 раза.
не зная броду не лезь к вольтмоду
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: Пропорциональное управление на МК (Знание=Сила)

Сообщение ВитГо »

ураа!

текущих своих тараканов я победил!

завтра буду делать новых....
Ответить

Вернуться в «Периферия»