Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> АЦП на PIC12 
V
    Опции темы
BIV
Дата 3.10.2011, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Всем доброе время суток!
Я пытаюсь на любом микроконтроллере PIC12 собрать обычный АЦП. Т.е. на вход AN0 подается синусоида,  а на выходе хочу получить дискретное представление этой синусоиды.
В интернете находил много примеров, но все выполняют другие преобразовании.
Находил справочники в даташите, но пока в голове не укладывается как написать такой преобразователь
Можно хотя бы какой-нибудь элементарный пример или ссылку, с помощью которой можно будет собрать.
PM MAIL   Вверх
Mazzi
Дата 3.10.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Вот тебе страница с примерами программ от производителя. Поищи, наверняка найдёшь, то , что тебе нужно.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
BIV
Дата 3.10.2011, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Я поискал там ADC, но проблема в том, что там в основном MPC, а если PIC, то чаще всего 30, 24. Находил PIC12, но там работает компаратор, а мне он не нужен.

Я хочу получить вот такой сигнал
user posted image
Т.е. поступает аналоговый (жирная кривая), на выходе получаем дискретный (прямоугольники)
PM MAIL   Вверх
xvr
Дата 3.10.2011, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Ищите PIC с встроенным АЦП. АЦП из компаратора и ref'а вам вряд ли подойдет  smile 
PM MAIL   Вверх
BIV
Дата 3.10.2011, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Вот уже как месяц ищу, а результата нет
PM MAIL   Вверх
BIV
Дата 3.10.2011, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Уже и реально не знаю что делать.
В документации сказано что есть модуль АЦП и есть модуль компаратора. Я понимаю что эти отдельные модули. На примерах все время либо попадается постоянный ток, либо аналоговый, но с опорным напряжением. А вот так как у меня на картинке даже и  не встречал в примерах. Пытался разобрать пример, который подставляется с эмулятором протеус, там тоже работает компаратор

Это сообщение отредактировал(а) BIV - 3.10.2011, 21:10
PM MAIL   Вверх
xvr
Дата 4.10.2011, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(BIV @  3.10.2011,  21:07 Найти цитируемый пост)
На примерах все время либо попадается постоянный ток, либо аналоговый, но с опорным напряжением. 

А вы Data Sheet на свой МК не пробовали смотреть? А не какие то абстрактные примеры  smile Какой у вас МК? В PIC12 серии далеко не все МК имеют АЦП
Вот эти имеют - PIC12F1840 PIC12F617 PIC12F1822 PIC12F615 PIC12F675 PIC12F683 PIC12F510, остальные - нет

Добавлено через 58 секунд
Даже в PIC10 серии есть парочка с АЦП (PIC10F220 PIC10F222)

PM MAIL   Вверх
BIV
Дата 4.10.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Не, ну естественно смотрю PIC12F675, потом в примерах протеуса пробовал разобрать PIC12C671. Я смотрю именно те, где в описании присутствует АЦП. Я поставил вопрос именно PIC12, потому что надеюсь что кроме этих есть еще и другие с АЦП, и именно с такими АЦП, которые позволяют мне сделать именно то, что на рисунке выше
PM MAIL   Вверх
xvr
Дата 4.10.2011, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(BIV @  4.10.2011,  10:55 Найти цитируемый пост)
Не, ну естественно смотрю PIC12F675,

Ок, открываем DS на него, смотрим раздел 7.0 - ANALOG-TO-DIGITAL CONVERTER (A/D) MODULE (это и есть ваш АЦП)
страницы 43-48.
Там расписано все, вплоть до того, в какие регистры что писать.


Это сообщение отредактировал(а) xvr - 4.10.2011, 12:01
PM MAIL   Вверх
BIV
Дата 4.10.2011, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



То что я делаю что-то не так, это вполне возможно. Никогда с такой сложной задачей для меня не сталкивался. Попробую еще раз

Посмотрите, правильно ли я составил код?
Код

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

RETURN
END


Вроде бы как настроил АЦП, входы и выходы.
У меня на первый вход (AN0) поступает аналоговый сигнал (синусоида), а со второй ножки (GP1) хочу получить дискретное представление той синусоиды.

Как мне вывести сигнал на GP1?

Это сообщение отредактировал(а) BIV - 5.10.2011, 13:27
PM MAIL   Вверх
BIV
Дата 5.10.2011, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Обновил выше код. Теперь как мне вывести на GP1?
PM MAIL   Вверх
xvr
Дата 5.10.2011, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(BIV @  4.10.2011,  21:20 Найти цитируемый пост)
Посмотрите, правильно ли я составил код?

Не совсем - бит GO/DONE в ADCON0 надо выставлять после програмирования всего остального

Цитата(BIV @  4.10.2011,  21:20 Найти цитируемый пост)
а со второй ножки (GP1) хочу получить дискретное представление той синусоиды.

Это как? GP1 - это 1 бит, 10 бит с АЦП туда в параллель не влезут

Ну и собственно цикл запуска/обработки АЦП отсутствует

PM MAIL   Вверх
BIV
Дата 5.10.2011, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Цитата(xvr @  5.10.2011,  11:31 Найти цитируемый пост)
Цитата(BIV @  4.10.2011,  21:20 )а со второй ножки (GP1) хочу получить дискретное представление той синусоиды.Это как? GP1 - это 1 бит, 10 бит с АЦП туда в параллель не влезут


Хотя да... Я просто хотел как-то убедиться, что программа в микроконтроллере рабочая, что хоть что-то выполняется, а не простаивает. Пусть хотя бы 1й бит выводится с каждым тактом.
PM MAIL   Вверх
xvr
Дата 5.10.2011, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(BIV @  5.10.2011,  14:34 Найти цитируемый пост)
Пусть хотя бы 1й бит выводится с каждым тактом. 

Ну тогда как то так (пишу на С, уж на ассемблер сами переводите)
Код

main()
{
 ADCON0 = 0b10000001;
 TRISIO = 0b00000001;
 ANSEL = 0b00110001;
 for(;;)
   {
     ADCON0 |= 0b00000010;
     while(ADCON0 & 0b00000010) {;}
     GP1 = ADRESL & 1;
   }
}

PM MAIL   Вверх
BIV
Дата 7.10.2011, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Спасибо! Разобрался
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1153 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.