Микроконтроллеры PIC16 имеют на борту 10-ти разрядный модуль аналого-цифрового преобразователя (АЦП) последовательного приближения. Метод последовательного приближения предполагает получение результата за несколько измерений (сравнений), с постепенным увеличением точности в каждом последующем сравнении. Таким образом, преобразование выполняется за несколько машинных циклов. Естественно данный метод уступает параллельным АЦП по скорости преобразования, в которых результат получают за один такт (машинный цикл). Я не буду здесь углубляться в тонкости различных методов, необходимую информацию можно найти в сети.
На рисунке ниже представлена структурная схема аналогового входа АЦП:
Здесь Rs – это внутреннее сопротивление источника напряжения, ANx – линия порта микроконтроллера, обладающая емкостью Cpin и током утечки Iu. Внутренние соединения микроконтроллера имеют сопротивление Ric. Переключатель SS имеющий сопротивление Rss, подключает линию порта ANx к конденсатору Chold модуля АЦП. Коммутация переключателя SS производится при выборе аналогового канала, каждому каналу соответствует свой переключатель. Сопротивление переключателя защелки зависит от напряжения питания, график зависимости показан на рисунке справа.
Процесс измерения напряжения выглядит следующим образом: при выборе аналогового канала происходит коммутация переключателя SS, тем самым конденсатор Chold подключается к соответствующей линии порта микроконтроллера и начинает заряжаться. После получения команды начинается процесс преобразования, на время которого конденсатор отключается от линии порта.
После выбора аналогового канала битами CHS(2:0) регистра ADCON0, необходимо организовать определенную паузу (Tacq) перед началом преобразования, для того чтобы конденсатор Chold успел зарядиться. В технической документации приводится расчет этого времени, который представлен ниже:
В основном на время заряда влияет внутреннее сопротивление источника напряжения Rs, которое не должно превышать 10 кОм, для компенсации внутреннего тока утечки Iu, кроме этого влияние оказывает сопротивление переключателя защелки Rss и емкость самого конденсатора Chold, которая может различаться у различных моделей микроконтроллеров.
Время преобразования составляет 12Tad, где Tad это время получения одного бита, для корректного результата Tad не должно быть меньше 1,6 мкс. Время Tad в зависимости от частоты тактового генератора подбирается настройкой битов ADCS(2:0), в даташите на микроконтроллер для этого приводится таблица, где можно подобрать правильное значение. После окончания преобразования необходимо выдержать паузу не менее 2Tad перед началом нового преобразования, в течение этого времени конденсатор Chold не подключен к выбранной линии порта микроконтроллера. В принципе, если аналоговый канал не меняется и частота преобразований небольшая (время между преобразованиями больше чем Tacq+2Tad), можно и не рассчитывать временные задержки Tacq, 2Tad, и забыть о них.
Чтобы использовать линии порта микроконтроллера для АЦП, необходимо их настроить как аналоговые входы битами ANS(7:0) регистра ANSEL, при этом линия порта должна быть настроена на вход битами регистра TRIS. После этого выбирается требуемый аналоговый канал.
Результат преобразования (10 бит) сохраняется в регистрах ADRESH и ADRESL. Эти регистры представляют собой спаренный 16-ти разрядный регистр, запись результата может выполняться с правым или левым выравниваем, как показано на картинке ниже. Настройка выравнивания осуществляется с помощью бита ADFM регистра ADCON0.
В качестве опорного напряжения может использоваться внешнее напряжение с вывода Vref, или внутреннее Vdd от источника питания, настройка осуществляется битом VCFG. Для увеличения точности результата опорное напряжение должно быть стабилизированным с минимальным уровнем пульсаций. При опорном напряжении Vref =5 В, получим дискретность 5В/1024=0,0049 В=4,9 мВ для 10-ти битного результата. Для получения 8-ми битного результата необходимо применить левое выравнивание и считывать только регистр ADRESH, в этом случае для Vref =5 В дискретность составит 5В/256=0,0195 В=9,5 мВ.
Включение модуля АЦП производится битом ADON регистра ADCON0, запуск преобразования осуществляется установкой бита GO/-DONE регистра ADCON0, который аппаратно сбрасывается после окончания преобразования, то есть проверкой этого бита можно определить конец преобразования.
Перейдем к рассмотрению 10-ти разрядного ШИМ (широтно-импульсная модуляция) в микроконтроллерах PIC16. ШИМ осуществляется посредством модуля CCP, который настраивается в регистре CCP1CON, и содержит 16-ти разрядный регистр CCPR1, состоящий из двух регистров CCPR1H и CCPR1L. Сигнал от модуля в режиме ШИМ передается на вывод CCP1 микроконтроллера, который должен быть настроен на выход. Для реализации ШИМ используется таймер TMR2, период ШИМ задается в регистре PR2, старшие 8 бит длительности импульса задаются в регистре CCPR1L , младшие 2 бита в регистре CCP1CON(5:4). Ниже представлена структурная схема модуля ШИМ:
Буферизация необходима для возможности записи нового значения длительности импульса в регистры CCPR1L, CCP1CON, без искажения предыдущего значения. Биты в регистре CCPR1L и CCP1CON(5:4) могут быть изменены в любое время, но значение в регистре CCPR1H не изменяется, пока не произойдет совпадение значений TMR2 и PR2. В ШИМ режиме регистр CCPR1H доступен только для чтения.
Таймер TMR2 и внутренний двухразрядный счетчик образуют условный 10-ти разрядный счетчик, при этом если TMR2 инкрементируется в каждом машинном цикле с частотой Fosc/4 (при коэффициенте предделителя 1:1), то внутренний двухразрядный счетчик тактируется за каждый период тактового генератора с частотой Fosc, тем самым получается условный 10-ти разрядный счетчик. Когда значение CCPR1H и внутренней двухразрядной защелки сравнивается со значением TMR2 и внутреннего двухразрядного счетчика, на выводе CCP1 устанавливается низкий логический уровень. Ниже можно увидеть временную диаграмму одного периода ШИМ:
Период ШИМ можно рассчитать по следующей формуле из даташита:
Tшим=(PR2+1) ×4×Tosc×(коэффициент предделителя TMR2)
По мне лучше переписать данное уравнение в более удобную форму:
Fшим=Fosc/(4×(PR2+1)×(коэффициент предделителя TMR2))
Подставляя частоту тактового генератора, например, в килогерцах, получим результирующую частоту ШИМ в тех же единицах, так как остальные параметры безразмерные. В даташите также приведена таблица с рассчитанными значениями частоты и разрешения ШИМ для частоты тактового генератора в 20 МГц:
Удобнее всего начинать расчет параметров ШИМ, выбрав требуемое разрешение, исходя из которого, можно рассчитать три возможных комбинации значения частоты ШИМ и выбрать наиболее подходящее.
Выполним несколько расчетов для частоты тактового генератора в 4 МГц. Значение разрешения ШИМ примем равным 8 бит, для получения наибольших частот ШИМ для заданной частоты тактового генератора, значение длительности импульса необходимо загружать в регистры CCPR1L и CCP1CON с “правым выравниванием”. То есть старшие 6 бит длительности импульса загружаем в биты (5:0) регистра CCPR1L (в 6-й и 7-й бит CCPR1L записываем нули), а младшие 2 бита длительности импульса в регистр CCP1CON(5:4) как показано на рисунке ниже:
Fшим=4000 кГц/(4×(63+1)×1)=15,625 кГц
Для коэффициента предделителя TMR2 (1:4):
Fшим=4000 кГц/(4×(63+1)×4)=3,9 кГц
При коэффициенте (1:16) получим: Fшим=976 Гц.
Используя “левое выравнивание” можно получить наименьшие значения частот ШИМ для заданной частоты тактового генератора, при этом значение длительности импульса загружается только в регистр CCPR1L (в 5-й и 4-й бит CCP1CON записываем нули), как показано на рисунке ниже:
Числовое значение для регистра PR2 составит 0xFF=255, для коэффициентов предделителя TMR2 (1:1; 1:4; 1:16) получим частоты ШИМ 3,9 кГц; 976 Гц; 244 Гц. Подбор частоты путем различного “выравнивания” возможен, если только разрешение ШИМ меньше 10 бит. Таким образом, выбрав требуемое разрешение и варьируя частотой тактового генератора, коэффициентом предделителя TMR2, применяя различное “выравнивание”, можно подбирать различные частоты для ШИМ.
Теперь рассмотрим практическое применение модулей АЦП и ШИМ на основе 8-ми выводного микроконтроллера PIC12F683. Будем регулировать яркость светодиода мощностью в один ватт при помощи переменного резистора, схема представлена ниже:
Как видно из схемы, измерение напряжения производится на среднем выводе переменного резистора, линия микроконтроллера GP0/AN0 используется в качестве аналогового входа модуля АЦП. Напряжение на среднем выводе переменного резистора варьируется от 0 до 5В, для АЦП используется внутреннее опорное напряжение от источника питания Vdd, то есть 5В. Разрешение АЦП и ШИМ я настроил на 8 бит, это значение очень часто применяется в конструкциях. Полученный после преобразования байт передается в модуль ШИМ, сигнал от которого с вывода GP2/CCP1 передается на затвор полевого транзистора, который коммутирует светодиод.
Код программы представлен ниже, в принципе необходимо только настроить АЦП и ШИМ, а дальше все просто:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Основная программа Start bsf STATUS,RP0 movlw b’01100001′ ;установка тактовой частоты микроконтроллера movwf OSCCON ;в 4 МГц, внутренний тактовый генератор bcf STATUS,RP0 ; ; movlw b’00000000′ ;запись нулей в выходные защелки movwf GPIO ; ; movlw 0x07 ;выключение компараторов movwf CMCON0 ; ; bsf STATUS,RP0 ; movlw b’11111011′ ;настройка линии GP2 на выход для модуля ШИМ, movwf TRISIO ;остальные линии на вход bcf STATUS,RP0 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;настройка модуля АЦП bsf STATUS,RP0 ;установка времени преобразования для АЦП movlw b’01010001′ ;Tad = 4мкс (Fosc/16), настройка линии movwf ANSEL ;GP0(AN0) как аналоговый вход для АЦП, остальные bcf STATUS,RP0 ;линии цифровые входы ; movlw b’00000000′ ;Установка левого выравнивания результата АЦП, movwf ADCON0 ;внутренний источник опорного напряжения от Vdd, ;выбор аналогового канала AN0, преобразование ;не запущено, модуль АЦП выключен ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;настройка модуля ШИМ bsf STATUS,RP0 ; movlw .255 ;запись числа 255 в регистр периода ШИМ movwf PR2 ; bcf STATUS,RP0 ; ; movlw .0 ;запись нулей в регистры длительности импульса movwf CCPR1L ;ШИМ, CCPR1L и CCP1CON(5:4) bcf CCP1CON,4 ; bcf CCP1CON,5 ; ; movlw b’00000110′ ;установка предделителя TMR2 (1:16) movwf T2CON ;включение таймера TMR2 ; movlw b’00001100′ ;включение CCP1 модуля в режим ШИМ movwf CCP1CON ;при этом ранее сброшенные младшие биты (5:4) ;длительности импульса ШИМ не меняем ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Рабочая программа bsf ADCON0,ADON ;включение модуля АЦП begin bsf ADCON0,GO_DONE ;установка бита GO_DONE регистра ADCON0 для ;запуска преобразования АЦП ; prov btfsc ADCON0,GO_DONE ;опрос бита GO_DONE goto prov ;бит GO_DONE не равен 0, преобразование не ;закончено, переход на метку prov ; movf ADRESH,W ;бит GO_DONE равен 0, преобразование закончено, movwf CCPR1L ;копирование значения регистра ADRESH в регистр ;CCPR1L, то есть результат преобразования ;загружаем в регистр длительности импульса ШИМ ; call pause ;вызов подпрограммы паузы goto begin ;переход на метку begin, для повторного ;запуска преобразования ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;пауза 100 мс pause movlw .130 ;подпрограмма паузы 100 мс movwf Sec1 ; p2 movlw .255 ; movwf Sec ; p1 decfsz Sec,F ; goto p1 ; decfsz Sec1,F ; goto p2 ; return ;выход из подпрограммы ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Основная программа
Start bsf STATUS,RP0 movlw b’01100001′ ;установка тактовой частоты микроконтроллера movwf OSCCON ;в 4 МГц, внутренний тактовый генератор bcf STATUS,RP0 ; ; movlw b’00000000′ ;запись нулей в выходные защелки movwf GPIO ; ; movlw 0x07 ;выключение компараторов movwf CMCON0 ; ; bsf STATUS,RP0 ; movlw b’11111011′ ;настройка линии GP2 на выход для модуля ШИМ, movwf TRISIO ;остальные линии на вход bcf STATUS,RP0 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;настройка модуля АЦП
bsf STATUS,RP0 ;установка времени преобразования для АЦП movlw b’01010001′ ;Tad = 4мкс (Fosc/16), настройка линии movwf ANSEL ;GP0(AN0) как аналоговый вход для АЦП, остальные bcf STATUS,RP0 ;линии цифровые входы ; movlw b’00000000′ ;Установка левого выравнивания результата АЦП, movwf ADCON0 ;внутренний источник опорного напряжения от Vdd, ;выбор аналогового канала AN0, преобразование ;не запущено, модуль АЦП выключен
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;настройка модуля ШИМ
bsf STATUS,RP0 ; movlw .255 ;запись числа 255 в регистр периода ШИМ movwf PR2 ; bcf STATUS,RP0 ; ; movlw .0 ;запись нулей в регистры длительности импульса movwf CCPR1L ;ШИМ, CCPR1L и CCP1CON(5:4) bcf CCP1CON,4 ; bcf CCP1CON,5 ; ; movlw b’00000110′ ;установка предделителя TMR2 (1:16) movwf T2CON ;включение таймера TMR2 ; movlw b’00001100′ ;включение CCP1 модуля в режим ШИМ movwf CCP1CON ;при этом ранее сброшенные младшие биты (5:4) ;длительности импульса ШИМ не меняем
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Рабочая программа
bsf ADCON0,ADON ;включение модуля АЦП begin bsf ADCON0,GO_DONE ;установка бита GO_DONE регистра ADCON0 для ;запуска преобразования АЦП ; prov btfsc ADCON0,GO_DONE ;опрос бита GO_DONE goto prov ;бит GO_DONE не равен 0, преобразование не ;закончено, переход на метку prov ; movf ADRESH,W ;бит GO_DONE равен 0, преобразование закончено, movwf CCPR1L ;копирование значения регистра ADRESH в регистр ;CCPR1L, то есть результат преобразования ;загружаем в регистр длительности импульса ШИМ ; call pause ;вызов подпрограммы паузы goto begin ;переход на метку begin, для повторного ;запуска преобразования
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;пауза 100 мс
pause movlw .130 ;подпрограмма паузы 100 мс movwf Sec1 ; p2 movlw .255 ; movwf Sec ; p1 decfsz Sec,F ; goto p1 ; decfsz Sec1,F ; goto p2 ; return ;выход из подпрограммы ; |
Вначале идет настройка внутреннего тактового генератора микроконтроллера на 4 МГц, запись нулей в выходные защелки, отключение компараторов. Далее настраиваем линию GP2/CCP1 на выход, чтобы использовать ее для ШИМ, остальные линии на вход, в том числе и GP0/AN0 для АЦП, эти настройки производятся в регистре TRISIO, который расположен в 1-ом банке.
Следующим шагом будет настройка модуля АЦП. В регистре ANSEL (находится в 1-ом банке) устанавливаем время преобразования одного бита Tad равное 4 мкс (Fosc/16), для частоты тактового генератора в 4 МГц из таблицы в даташите микроконтроллера доступно два значения: 2 мкс (Fosc/8) и 4 мкс (Fosc/16). В этом же регистре настраиваем линию GP0/AN0 как аналоговый вход для правильного функционирования АЦП, остальные линии как цифровые входы. Затем следует настройка регистра ADCON0, где устанавливаем левое выравнивание результата преобразования для регистров ADRESH, ADRESL. Для 8-ми битного результата считывать будем только регистр ADRESH. Здесь же выбираем внутренний источник опорного напряжения Vdd, при этом модуль АЦП не включаем, и преобразование не запускаем. На этом настройку модуля можно считать завершенной.
Далее настраиваем ШИМ, первым делом устанавливаем период в регистре PR2 (находится в 1-ом банке). Будем использовать 8-ми битный ШИМ с загрузкой длительности импульса с “левым выравниванием”, то есть только в регистр CCPR1L, соответственно в PR2 записываем 0xFF=255. После этого устанавливаем длительность импульса равной нулю, чтобы после запуска ШИМ вывод GP2/CCP1 оставался в низком логическом уровне, в принципе этого можно и не делать. Неиспользуемые в данном случае младшие биты (5:4) длительности импульса в регистре CCP1CON должны быть сброшены, иначе получим некорректный результат. В регистре T2CON устанавливаем коэффициент предделителя TMR2 равным (1:16), и запускаем таймер. Частота ШИМ составит 244 Гц, чего вполне достаточно, для исключения мерцания светодиода. В регистре CCP1CON включаем режим ШИМ, при этом следим чтобы биты (5:4) были сброшены, как было сказано выше. Вот и все, ШИМ настроен и запущен.
Далее идет рабочая программа: включаем модуль АЦП, затем запускаем преобразование установкой бита GO/-DONE, кстати, включение модуля и запуск преобразования должны выполняться разными командами, о чем говориться в даташите. Путем цикличной проверки бита GO/-DONE, определяем конец преобразования. Копируем результат преобразования из регистра ADRESH в регистр длительности импульса CCPR1L. Уходим на паузу в 100 мс, после чего переходим на метку begin, для выполнения нового цикла, в принципе все просто.
Ниже представлен видеоролик демонстрирующий работу модулей АЦП и ШИМ. Здесь в вышеприведенную схему я дополнительно добавил цифровое табло на драйвере MC14489AP, для отображения результата измерения модуля АЦП.
Прошивка МК и исходник+модель Proteus 7.7
radiolaba.ru
Микроконтроллеры семейств PIC (Peripheral Interface Controller) компании Microchip объединяют все передовые технологии микроконтроллеров: электрически программируемые пользователем ППЗУ, минимальное энергопотребление, высокую производительность, хорошо развитую RISC-архитектуру, функциональную законченность и минимальные размеры. Широкая номенклатура изделий обеспечивает использование микроконтроллеров в устройствах, предназначенных для разнообразных сфер применения.
Первые микроконтроллеры компании Microchip PIC16C5x появились в конце 1980-х годов и благодаря своей высокой производительности и низкой стоимости составили серьезную конкуренцию производившимся в то время 8-разрядным МК с CISC-архитектурой.
Высокая скорость выполнения команд в PIC-контроллерах достигается за счет использования двухшинной гарвардской архитектуры вместо традиционной одношинной фон-неймановской. Гарвардская архитектура основывается на наборе регистров с разделенными шинами и адресными пространствами для команд и данных. Все ресурсы микроконтроллера, такие как порты ввода/вывода, ячейки памяти и таймер, представляют собой физически реализованные аппаратные регистры.
Микроконтроллеры PIC содержат RISC-процессор с симметричной системой команд, позволяющей выполнять операции с любым регистром, используя произвольный метод адресации. Пользователь может сохранять результат операции в самом регистре-аккумуляторе или во втором регистре, используемом для операции.
В настоящее время компания Microchip выпускает пять основных семейств 8-разрядных RISC-микроконтроллеров, совместимых снизу вверх по программному коду:
PIC12CXXX – семейство микроконтроллеров, выпускаемых в миниатюрном 8-выводном исполнении. Эти микроконтроллеры выпускаются как с 12-разрядной (33 команды), так и с 14-разрядной (35 команд) системой команд. Содержат встроенный тактовый генератор, таймер/счетчик, сторожевой таймер, схему управления прерываниями. В составе семейства есть микроконтроллеры со встроенным 8-разрядным четырехканальным АЦП. Способны работать при напряжении питания до 2,5 В;
PIC16C5Х – базовое семейство микроконтроллеров с 12-разрядными командами (33 команды), выпускаемое в 18-, 20- и 28-выводных корпусах. Представляют собой простые недорогие микроконтроллеры с минимальной периферией. Способность работать при малом напряжении питания (до 2 В) делает их удобными для применения в переносных конструкциях. В состав семейства входят микроконтроллеры подгруппы PIC16HV5XX, способные работать непосредственно от батареи в диапазоне питающих напряжений до 15 В;
PIC16CXXX – семейство микроконтроллеров среднего уровня с 14-разрядными командами (35 команд). Наиболее многочисленное семейство, объединяющее микроконтроллеры с разнообразными периферийными устройствами, в число которых входят аналоговые компараторы, аналогово-цифровые преобразователи, контроллеры последовательных интерфейсов SPI, USART и I2C, таймеры-счетчики, модули захвата/сравнения, широтно-импульсные модуляторы, сторожевые таймеры, супервизорные схемы и так далее;
PIC17CXXX – семейство высокопроизводительных микроконтроллеров с расширенной системой команд 16-разрядного формата (58 команд), работающие на частоте до 33 МГц, с объемом памяти программ до 16 Кслов. Кроме обширной периферии, 16-уровневого аппаратного стека и векторной системы прерываний, почти все микроконтроллеры этого семейства имеют встроенный аппаратный умножитель 8х8, выполняющий операцию умножения за один машинный цикл. Являются одними из самых быстродействующих в классе 8-разрядных микроконтроллеров;
PIC18CXXX – семейство высокопроизводительных микроконтроллеров с расширенной системой команд 16-разрядного формата (75 команд) и встроенным 10-разрядным АЦП, работающие на частоте до 40 МГц. Содержат 31-уровневый аппаратный стек, встроенную память команд до 32 Кслов и способны адресовать до 4 Кбайт памяти данных и до 2 Мбайт внешней памяти программ. Расширенное RISC-ядро микроконтроллеров данного семейства оптимизировано под использование нового Си-компилятора.
Большинство PIC-контроллеров выпускаются с однократно программируемой памятью программ (OTP), с возможностью внутрисхемного программирования или масочным ПЗУ. Для целей отладки предлагаются более дорогие версии с ультрафиолетовым стиранием и Flash-памятью. Полный список выпускаемых модификаций PIC-контроллеров включает порядка пятисот наименований. Поэтому продукция компании перекрывает почти весь диапазон применений 8-разрядных микроконтроллеров.
Из программных средств отладки наиболее известны и доступны различные версии ассемблеров, а также интегрированная программная среда MPLAB. Российские производители программаторов и аппаратных отладочных средств также уделяют внимание PIC-контроллерам. Выпускаются как специализированные программаторы, такие как PICPROG, программирующие почти весь спектр PIC-микроконтроллеров, так и универсальные: UNIPRO и СТЕРХ, поддерживающие наиболее известные версии PIC-контроллеров.
Наиболее распространенными семействами PIC-контроллеров являются PIC16CXXX и PIC17CXXX.
studfiles.net
Дата публикации: .
Сегодня микроконтроллеры используются повсеместно в автомобилях, бытовой технике, промышленном и медицинском оборудовании и т.п. Этот учебник дает всестороннее представление об архитектуре, программировании и построении интерфейсов этого современного чуда. На примере семейства микроконтроллеров PIC18 производства Microchip в книге объясняется архитектура, программирование и построение интерфейсов. Семейство PIC18 выбрано не случайно, поскольку оно относится к самым современным восьмиразрядным микроконтроллерам. Изложенный в книге материал также применим как к более ранним версиям микроконтроллеров Microchip, так и к аналогичным устройствам других производителей. Он рассчитан на опытных практиков и радиолюбителей, интересующихся микроконтроллерами.
Название: Применение микроконтроллеров PIC18
Архитектура, программирование и построение интерфейсов с применением С и ассемблера
Автор: Барри Брей
Издательство: КОРОНА-ВЕК, МК-Пресс
Год: 2008
Страниц: 576
ISBN: 978-5-7931-0516-3, 978-966-8806-55-1
Формат: DJVU
Размер: 10.2 Mб
Язык: русский
СОДЕРЖАНИЕ
ГЛАВА 1. Введение в архитектуру компьютеров 7
1.1. Основы компьютерной архитектуры 7
1.2. Системы счисления 17
1.3. Компьютерные форматы данных 25
1.4. Резюме 34
1.5. Вопросы и задания 35
ГЛАВА 2. Архитектура семейства PIC18 и разработка программ 40
2.1. Архитектура PIC18 40
2.2. Модель программирования 49
2.3. Интегрированная система разработки (IDE) 58
2.4. Язык Ассемблера, программа «ассемблер» и компоновщик 70
2.5. Резюме 76
2.6. Вопросы и задания 77
ГЛАВА 3. Набор команд семейства PIC18 79
3.1. Литеральные команды 79
3.2. Битовые команды 84
3.3. Байтовые команды 86
3.4. Команды управления выполнением программы и косвенная адресация 94
3.5. Табличные команды 104
3.6. Макропоследовательности 108
3.7. Резюме 109
3.8. Вопросы и задания 110
ГЛАВА 4. Программирование на языке Ассемблера 113
4.1. Структуры стека и очереди 113
4.2. Сложные арифметические операции 119
4.3. Преобразования между десятичным и двоичным форматами 128
4.4. Временные задержки 133
4.5. Примеры программ 136
4.6. Резюме 147
4.7. Вопросы и задания 147
ГЛАВА 5. Программирование PIC18 на языке С 150
5.1. Компилятор С18 с языка С 150
5.2. Использование включаемых файлов языка С 159
5.3. Примеры программ на языке С 170
5.4. Математическая библиотека 181
5.5. Резюме 183
5.6. Вопросы и задания 183
ГЛАВА 6. Спецификации аппаратных средств семейства PIC18 185
6.1. Цоколевка выводов и базовые операционные характеристики 185
6.2. Выводы Ввод-Вывод 201
6.3. Введение в прерывания 213
6.4. Другие внутренние периферийные устройства 229
6.5. Резюме 246
6.6. Вопросы и задания 247
ГЛАВА 7. Базовый ввод-вывод 249
7.1. Входы от ключевых схем 249
7.2. Устройства индикации 259
7.3. Управления электромоторами 289
7.4. Реле, соленоиды и датчики 306
7.5. Резюме 328
7.6. Вопросы и задания 329
ГЛАВА 8. Прерывания 332
8.1. Повторное знакомство с прерываниями 332
8.2. USART и прерывания 343
8.3. Прерывания по изменению состояния 357
8.4. Примеры систем, работающих с прерываниями 364
8.5. Резюме 399
8.6. Вопросы и задания 400
ГЛАВА 9. Системы управления 403
9.1. Формализация системы управления 403
9.2. Примеры системы 408
9.3. Резюме 440
9.4. Вопросы и задания 441
ГЛАВА 10. Вопросы повышенной сложности 443
10.1. Расширение памяти 443
10.2. Загрузочный блок 465
10. 3. Расширение ввода-вывода 473
10.4. Интерфейс CAN 482
10.5. Интерфейс USB 490
10.6. Расширенный набор команд PIC18 524
10.7 . Резюме 526
10.8. Вопросы и задания 527
Приложения 529
Содержание компакт-диска 575
Скачать: Применение микроконтроллеров PIC18 Архитектура, программирование и построение интерфейсов с применением Си и ассемблера. Барри Брей. 2008 г.
radioparty.ru
Дата публикации: .
В книге представлена информация о технических и программных средствах разработки приложений на базе РIС-микроконтроллеров. Приведена коллекция схемных и программных решений, касающихся взаимодействия PIC-микроконтроллеров с популярной периферией, реализации типовых интерфейсов, с которыми вы можете столкнуться в своих разработках.
Рассмотрены многочисленные примеры программной реализации самых различных функций: организация прерываний, подпрограммы расширенной арифметики, арифметики с плавающей запятой и т.д.
В качестве примеров предлагаются несколько конкретных устройств, в том числе часы-будильник и многоканальный цифровой вольтметр. Отдельная глава книги посвящена описанию и возможностям использования платы STAMP фирмы Parallax, которая построена на базе PIC-микроконтроллера, программируемого на Basic и ориентированного на устройства автоматизации.
Книга адресована студентам, специалистам и любителям электроники, занимающимся разработкой микроконтроллерных устройств.
Год выпуска: 2002
Автор: Тавернье К.
Жанр: справочное пособие
Издательство: М.: ДМК Пресс
Формат: DjVu
Размер: 5 МБ
Качество: Отсканированные страницы
Количество страниц: 272
СОДЕРЖАНИЕ
ГЛАВА 1 PIC-МИКРОКОНТРОЛЛЕРЫ 16СХХ 11
ОБЩИЕ ХАРАКТЕРИСТИКИ 13
Питание PIC-микроконтроллеров 13
Тактирование PIC-микроконтроллеров 13
Схемы сброса 17
Порты ввода/вывода 18
БАЗОВЫЕ СХЕМЫ 19
ГЛАВА 2 РАЗРАБОТКА ПРИЛОЖЕНИЙ 21
ВЫБОР МИКРОКОНТРОЛЛЕРА 22
АССЕМБЛЕР ИЛИ ЯЗЫКИ ВЫСОКОГО УРОВНЯ 23
СИСТЕМА РАЗРАБОТКИ 24
Ассемблер и компилятор языка высокого уровня 24
Эмулятор и симулятор 25
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ДЛЯ ПРОМЫШЛЕННОГО ПРИМЕНЕНИЯ 27
СРЕДСТВА РАЗРАБОТКИ ФИРМЫ MICROCHIP 28
Системы Plcs»art-16b и Plcstart-16c 29
Программное обеспечение разработки 30
СИНТАКСИС АССЕМБЛЕРА MPALC 35
АССЕМБЛЕР PASM 37
СРЕДСТВА РАЗРАБОТКИ ФИРМЫ PARALLAX 39
Псевдоэмулятор Reflection-5X 46
Эмуляторы ClearView 5Хи ClearView XX 48
ГЛАВА 3 СХЕМНЫЕ РЕШЕНИЯ ИНТЕРФЕЙСОВ МИКРОКОНТРОЛЛЕРОВ 49
ПАРАЛЛЕЛЬНЫЕ ВЫХОДЫ 50
Управление светодиодами и оптронами 50
Управление реле 54
Прямое управление нагрузкой,
питающейся от источника постоянного напряжения 55
Управление светодиодным цифровым индикатором .56
Управление индикаторами на жидких кристаллах 69
ПАРАЛЛЕЛЬНЫЕ ВХОДЫ 86
Кнопки и переключатели 86
Гальваническая развязка входов 88
Клавиатуры 89
Вывод из sleep-режима с помощью клавиатуры — 93
КОМБИНИРОВАННОЕ ИСПОЛЬЗОВАНИЕ ПОРТОВ 101
ВНЕШНЯЯ ПЕРИФЕРИЯ 110
Стандартная периферия 111
Взаимодействие с периферией по последовательному интерфейсу 113
ЭНЕРГОНЕЗАВИСИМАЯ ПАМЯТЬ С ПОСЛЕДОВАТЕЛЬНЫМ ИНТЕРФЕЙСОМ 114
УПРАВЛЕНИЕ АНАЛОГО-ЦИФРОВЫМ ПРЕОБРАЗОВАТЕЛЕМ 120
ЗАКЛЮЧЕНИЕ 122
ГЛАВА 4 БИБЛИОТЕКА ПРОГРАММ 123
АРИФМЕТИЧЕСКИЕ ПОДПРОГРАММЫ 124
Беззнаковое умножение 8-разрядных чисел 125
Знаковое и беззнаковое умножение 16-разрядных чисел 129
Деление 16-разрядных чисел 136
Сложение и вычитание 16-разрядных чисел 144
Операции с плавающей запятой 146
Преобразование двоично-десятичных кодов в двоичные… 156
Преобразование двоичных кодов в двоично-десятичные 159
Сложение и вычитание чисел в двоично-десятичных кодах ….163
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ПРЕРЫВАНИЙ МИКРОКОНТРОЛЛЕРОВ 16С5Х 168
ПРИНЦИП МНОГОЗАДАЧНОСТИ 172
РАСШИРЕНИЕ СТЕКОВОЙ ПАМЯТИ МИКРОКОНТРОЛЛЕРОВ 16С5Х 175
ПЕРЕДАЧА АСИНХРОННОЙ ПОСЛЕДОВАТЕЛЬНОСТИ ПРИ ОТСУТСТВИИ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА 178
ГЛАВА 5 ГОТОВЫЕ РЕШЕНИЯ 185
ЧАСЫ С БУДИЛЬНИКОМ 186
РЕАЛИЗАЦИЯ ШИНЫ PC 215
Общие положения 216
Принцип обмена данными 216
Форматы передачи 219
Схема реализации интерфейса 1гС 220
ЧЕТЫРЕХКАНАЛЬНЫЙ ВОЛЬТМЕТР СО СВЕТОДИОДНОЙ ИНДИКАЦИЕЙ …232
МИКРОКОМПЬЮТЕР, ПРОГРАММИРУЕМЫЙ НА BASIC 244
ГЛАВА 6 МИКРОКОНТРОЛЛЕР STAMP 245
ОБЩИЕ ПОЛОЖЕНИЯ 246
СИСТЕМА РАЗРАБОТКИ 247
Схема платы Stamp 247
Программная среда разработки 250
ЯЗЫК ПРОГРАММИРОВАНИЯ PBASIC 250
Операторы управления портами ввода/вывода 252
Операторы для управления последовательным вводом/выводом 253
Управление аналоговыми величинами 253
Прочие операторы 253
ПРИМЕРЫ ПРИМЕНЕНИЙ 255
Аналого-цифровое преобразование 255
Управление шаговыми двигателями 259
Интерфейс клавиатуры и индикатора на жидких кристаллах 264
Скачать: PIC — микроконтроллеры. Практика применения. Тавернье К. 2002 г.
radioparty.ru
Практически каждая фирма, выпускающая электронные микросхемы имеет в составе своей продукции и микроконтроллеры. Тем не менее, наибольшей популярностью пользуется лишь узкий круг изделий. К таким элементам можно отнести микросхемы фирмы Microchip Inc, под общим названием PIC и микроконтроллеры под торговой маркой AVR, выпускаемые фирмой Atmel. Ниже коротко приведен обзор видов микроконтроллеров от Microchip.
Американская фирма Microchip Inc. появилась на рынке микроконтроллеров в 1989 году. К началу 21 века, она была уже вторым по величине производителем 8-ми битных устройств, уступая лишь компании Motorola. Сегодня микроконтроллеры PIC являются одними из самых популярных в любительских и профессиональных разработках, благодаря своей простоте и высокой надежности.
В производстве компании Microchip, находится большое число самых разнообразных устройств, имеющих общую торговую марку Микроконтроллеры PIC (PIC microcontrollers). Все они разделены на несколько семейств, описанных ниже.
PIC10. Микроконтроллеры с смаыми маленькими возможностями. Предоставляют разработчику 4 линии ввода/вывода и корпус с 6 ножками.
PIC12. Простые микроконтроллеры, выпускающиеся в корпусе с 8-ю выводами. Разрядность их составляет 8 бит, объем памяти программ часто не превышает 1 кБ. Наиболее интересными изделиями этой группы являются микросхемы, со встроенными радиопередатчиками серии rfPIC. Такие элементы очень активно используются в автомобильных сигнализациях и системах дистанционного управления.
PIC16. Самые распространенные 8-ми битные микроконтроллеры. Выпускаются в корпусах с количеством выводов от 14 до 40. Основу всей серии составляет одно микропроцессорное ядро, дополняемой необходимыми периферийными устройствами. Именно микроконтроллеры серии PIC16 стали первым шагом для многих разработчиков электронной техники.
PIC18. Самые мощные 8-ми битные микроконтроллеры в линейке продукции Microchip. Изначально ориентированы на программирование с использованием языка высокого уровня C.
PIC24. Высокопроизводительные устройства, выполненные по 16-разрядной архитектуре. Предназначаются для применений, где 8-ми разрядные модели уже не справляются.
PIC32. Новое семейство, использующее 32-разрядную архитектуру MIPS. Являются самыми мощными устройствами, выпускаемыми фирмой Microchip. Хотя большого распространения пока не получили, эти микроконтроллеры являются одним из самых перспективных направлений развития продукции Microchip.
Микроконтроллеры от Microchip активно используются в промышленном оборудовании и бытовых устройствах. Их можно встретить в популярных программно-аппаратных платформах и отладочных платах, таких как EasyPIC или Amicus18. В чистом виде они работают в огромном числе самых разнообразных любительских микроконтроллерных проектов. Благодаря множеству достоинств и грамотной маретинговой политике производителя эти микросхемы PIC занимают вершину популярности, успешно конкурируя с продукцией Atmel.
You have no rights to post comments
mcucpu.ru