|
Новичок
Регистрация: 03.10.2011
Сообщений: 5
Репутация: 10
![]() |
Всем доброе время суток!
Я пытаюсь на любом микроконтроллере PIC12 собрать обычный АЦП. Т.е. на вход AN0 подается синусоида, а на выходе хочу получить дискретное представление этой синусоиды. Т.е. так как показано на рисунке: Т.е. поступает аналоговый (жирная кривая), на выходе получаем дискретный (прямоугольники) В интернете находил много примеров, но все выполняют другие преобразовании: либо определяют уровень напряжения, либо используют компараторы. Для моей работы это совсем не то. В справочниках, что в даташите, говориться о модуле АЦП и о модуле компаратор, что вроде как это 2 отдельных модуля, но почему-то работает как компаратор. Можно хотя бы какой-нибудь элементарный пример или ссылку, на которые можно будет опереться |
||
|
Оценка
|
|
Эксперт
Регистрация: 08.11.2009
Сообщений: 2,309
Репутация: 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,309
Репутация: 643
![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
1. симулировать программно интерфейс 1-Wire на GP1 2. задействовать дополнительный вывод GP2 симулировать программно интерфейс UART или I2C 3. разработать свой протокол передачи данных используя скажем ШИМ кодирование ЗЫ.для второго варианта при использовании UART в асинхронном режиме только на передачу можно обойтись только одним GP1
Последний раз редактировалось DmitriyVDN; 05.10.2011 в 20:41.
|
||
|
Оценка
|
| Обратная связь РадиоЛоцман Вверх |