Новичок
Регистрация: 03.10.2011
Сообщений: 5
Репутация: 10
![]() |
Всем доброе время суток!
Я пытаюсь на любом микроконтроллере PIC12 собрать обычный АЦП. Т.е. на вход AN0 подается синусоида, а на выходе хочу получить дискретное представление этой синусоиды. Т.е. так как показано на рисунке: ![]() Т.е. поступает аналоговый (жирная кривая), на выходе получаем дискретный (прямоугольники) В интернете находил много примеров, но все выполняют другие преобразовании: либо определяют уровень напряжения, либо используют компараторы. Для моей работы это совсем не то. В справочниках, что в даташите, говориться о модуле АЦП и о модуле компаратор, что вроде как это 2 отдельных модуля, но почему-то работает как компаратор. Можно хотя бы какой-нибудь элементарный пример или ссылку, на которые можно будет опереться |
||
Оценка
|
Эксперт
Регистрация: 08.11.2009
Сообщений: 2,310
Репутация: 643
![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
![]() ![]() ![]() попробую объяснить на пальцах: предположим есть четырех разрядный АЦП измеряющий напряжение от 0 до 15в тогда коду 0000 соответствует напряжение от 0в до 1в 0001 ...... от 1в до 2в 0010 ...... от 2в до 3в .... ... ... 1111 ...... от 15в и выше т.е шаг дискретизации 1в и для напряжений в диапазоне от 2 до 3в код будет один и тот же 0010 соответствующий 2-м вольтам - это и есть высота прямоугольников изображенная на рисунке ,ширина прямоугольника определяется временем в течении которого напряжение находится в данном диапазоне при помощи АЦП вы можете получить только цифровое представление синусоиды чтобы на выходе получить ступенчатое напряжение надо провести обратное преобразование при помощи ЦАП реализовать подобное на PIC не представляется возможным по причине отсутствия ЦАП.... |
||
Оценка
|
Новичок
Регистрация: 03.10.2011
Сообщений: 5
Репутация: 10
![]() |
Мне нужен был такой сигнал только гдя того, чтобы можно было проанализировать в микроконтроллере его характер. Может быть мне и не нужно тогда преобразовывать в ступенчатую форму. Может быть тогда на 4х регистрах по 8 бит хранить эти
Код:
рег1 01101010 рег2 00101100 рег3 00010000 рег4 00000000 А немного настроил свой МК, вот код: Код:
list p=pic12f675 #include <P12F675.INC> ; настройка слова конфигурации микроконтроллера ; _CP_OFF защита программного кода выключена ; _DEBUG_OFF режим отладки выключен ; _WRT_OFF защита записи FLASH выключена ; _CPD_OFF защита памяти EEPROM выключена ; _LVP_OFF режим низковольтового программирования выключен ; _BODEN_ON сброс по снижению питания включен ; _PWRTE_ON таймер задержки по квлючению питания включен ; _XT_OSC использование кварцевого резонатора на 4МГц __CONFIG _CPD_OFF&_CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT ERRORLEVEL 2 ;Вывод только ошибок CMCON equ 19h ANSEL equ 9Fh ADRESH equ 1Eh ADRESL equ 9Eh ADCL equ 21h ADCH equ 22h org 0x00 goto START ;начало выполнения программы после включения питания ; org 0x04 goto PREOBR START clrw bcf STATUS,RP0 ;Выбираем банк 0 movlw b'00000011' movwf ADCON0 bsf STATUS,RP0 ;Выбираем банк 1 movlw b'00000001' movwf TRISIO movlw b'00110001' movwf ANSEL bcf TRISIO,1 ;call ReadADC PREOBR ;ReadADC bsf ADCON0,1 btfsc ADCON0,1 goto $-1 nop nop nop nop movf ADRESH,W movwf ADCH bsf STATUS,RP0 movf ADRESL,W bcf STATUS,RP0 movf ADCL goto PREOBR END
Последний раз редактировалось bigory; 05.10.2011 в 14:38.
|
||
Оценка
|
Эксперт
Регистрация: 08.11.2009
Сообщений: 2,310
Репутация: 643
![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
1. симулировать программно интерфейс 1-Wire на GP1 2. задействовать дополнительный вывод GP2 симулировать программно интерфейс UART или I2C 3. разработать свой протокол передачи данных используя скажем ШИМ кодирование ЗЫ.для второго варианта при использовании UART в асинхронном режиме только на передачу можно обойтись только одним GP1
Последний раз редактировалось DmitriyVDN; 05.10.2011 в 20:41.
|
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |