Помогите с алгоритмом!

Общие вопросы функционирования и программирования МК, обсуждение типовых алгоритмов...
Андрей
Читатель
Читатель
Сообщения: 8
Зарегистрирован: 20 фев 2011, 19:21

Помогите с алгоритмом!

Сообщение Андрей »

Может кто-нибудь подсказать, как программно на asm'e реализовать " НАХОЖДЕНИЕ СРЕДНЕГО ЗНАЧЕНИЯ ВЫПРЯМЛЕННОГО СИНУСОИДАЛЬНОГО СИГНАЛА". Знаю, что есть мат методы : трапеций, прямоугольников, но алгоритма в голове по созданию программы пока нет. Подскажите, если можете комады, которые
надо будет использовать, на форуме, наверное, присутствуют гуру, я же пока новичок (неделю назад начал разбираться с PIC16F877) и вот сижу с кипой распечаток
и мозг взрывается, но что-то в голове откладывается всё-таки.
P.S. ЗАРАНЕЕ СПАСИБО...
Надеюсь, в частности, на ответ уважаемого RHF...
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Помогите с алгоритмом!

Сообщение rhf-admin »

Если сигнал сначала растёт, потом убывает, потом снова начинает расти - значит прошли половину периода... ;)
Измерили значение, потом сигнал начал допустим расти, потом падать, потом снова расти, как стал больше или равным того нашего самого первого значения - значит целый период нашей синусоиды обсчитали и получили средневыпрямленное значение. Вот как-то так мне кажется.
P.S. Я так понимаю, речь ведь идёт о том, чтобы измерять синусоиду и вычислять средневыпрямленное значение, так ведь?
С уважением, администрация сайта.
Андрей
Читатель
Читатель
Сообщения: 8
Зарегистрирован: 20 фев 2011, 19:21

Re: Помогите с алгоритмом!

Сообщение Андрей »

Да, Вы поняли правильно...
Я не совсем понял логику нахождения среднего значения. RHF, из твоих слов, ясно, как отсчитать полпериода (логика), но не найти среднее значение самого сигнала ( в моём случае к каналу 2 (RA0/AN0) подходит аналоговый сигнал 3I0-ток нулевой последовательности при замыкании на землю) и мне как раз нужно найти среднее этого тока. Я правильно понимаю, что мне нужно настроить этот канал, как вход и сделать его с пощью ADCON1 аналоговым (AN0) для начала?
[quote="rhf-admin"]Измерили значение [quote]
Что значит измерили (можешь кодом хотя бы примерно написать), а то пока до сознания с трудом доходят эти нули да единицы?!?!?!?!?!?!?!?!?!
P.S. Сайт очень полезный и интересный.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Помогите с алгоритмом!

Сообщение rhf-admin »

Ну вот, задача ещё усложнилась. Прикол в том, что контроллер ток не меряет. Он меряет только напряжение, поэтому если хочешь измерить ток - нужен преобразователь ток-напряжение.
Что значит измерили
Измерили, это в данном случае значит - нашли сколько частей Vref/1024 содержится во входном сигнале. Т.е. если входной сигнал равен 125*Vref/1024 (+-0,5*Vref/1024), то результат преобразования, выданный АЦП будет 125. Скачай доку на это АЦП с микрочипа: http://www.microchip.ru/files/d-sheets-rus/pic16_23.pdf , там в пункте 23.13 есть передаточная функция АЦП.
С уважением, администрация сайта.
Андрей
Читатель
Читатель
Сообщения: 8
Зарегистрирован: 20 фев 2011, 19:21

Re: Помогите с алгоритмом!

Сообщение Андрей »

Спасибо за ссылку. Буду разбираться. Сложная эта штука Assembler, вроде 35 команд не так уж и много, а непонятно всё равно!!!
Андрей
Читатель
Читатель
Сообщения: 8
Зарегистрирован: 20 фев 2011, 19:21

Re: Помогите с алгоритмом!

Сообщение Андрей »

А чем отличается запись, когда мы присваиваем адрес переменной в регистре общего назначения(GRP):
1) A EQU 0x20
от
2)A EQU 0x020
Спасибо.
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Помогите с алгоритмом!

Сообщение rhf-admin »

В MPLAB 5.70.40 - ничем, а вообще полагаю зависит от среды разработки, может где-то и будет различаться.
С уважением, администрация сайта.
Андрей
Читатель
Читатель
Сообщения: 8
Зарегистрирован: 20 фев 2011, 19:21

Re: Помогите с алгоритмом!

Сообщение Андрей »

А в MPLAB v8.00 одно и тоже???
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Помогите с алгоритмом!

Сообщение rhf-admin »

Проверь. Напиши в шапке A equ 0x20 и AA equ 0x020, потом в программе movlw A и movlw AA и в отладчике посмотри результат выполнения этих команд. Если в обоих случаях после их выполнения в регистре W окажется 0x20 - значит обе записи равнозначны. :D
С уважением, администрация сайта.
Андрей
Читатель
Читатель
Сообщения: 8
Зарегистрирован: 20 фев 2011, 19:21

Re: Помогите с алгоритмом!

Сообщение Андрей »

Не стал создавать новую тему: Возник такой вопрос:
Как мне настроить восьмиразрядный таймер TMR2 микроконтроллера PIC16F877 на 200 мс???
Управляющий регистр T2CON, забиваем в него нашу конфигурацию битов:
MOVLW 'xxxxxxxx' ; Настроили предделитель, выходной делитель и включаем модуль TMR2.
MOVWF T2CON ;

Ну это мы TMR2 настроили, в даташите написано, что есть регистр периода таймера PR2, в частности цитирую: "Выходной делитель считает число раз достижения TMR2 значения, записанного в регистре PR2.Это может быть полезно, когда необходимо организовать переход на сервисную подпрограмму
через определённый промежуток времени."
Т.е. мне надо какое-то число записать в этот регистр?!Какое и как это математически вычислить???????????????????
Используется кварц на 20МГц, т.е. Tцикла= 4*(1/20)=0,2мкс (это если коэффициент предделения 1:1), а мне надо 200 мс , т.е. миллион циклов, короче я по ходу не в том направлении двигаюсь!!!......
И ещё, как проверить, если настроил на эти 200 мс, что таймер отсчитал их -по переполнению????????????????????????????
BTFSS PIR1, TMR2IF ; ПРОВЕРКА ПЕРЕПОЛНЕНИЯ...
Или я не прав, тогда какой факт говорит о том, что эти 200мс отщёлкали????????????????????????????????????????????????
Заранее Спасибо...
Ответить