воскресенье, 27 ноября 2011 г.

Микроконтроллеры psoc

Нашел недавно сайт http://psoc-master.com/ о микроконтроллерах ПСОК фирмы Сайпрес.
Похоже эти микроконтроллеры намного круче ПИКов и Атмелов. В них в середине есть все - от таймеров до АЦП. При этом начинка такая, что на этих контроллерах можно сделать практически все без внешней обвески.

четверг, 30 апреля 2009 г.

Коммуникации в PIC18F85J90

Семья микроконтроллеров PIC18F85J90 поддерживает множество устройств передачи-приема информации. Они включают
адресируемый USART;
улучшенный USART, который поддерживает протокол LIN 1.2;
модуль SSP, который поддерживает обыдва режимы SPI и I2C™ (Master and Slave).

четверг, 23 апреля 2009 г.

Регистры специального назначения

Регистры специального назначения (SFR) образуют интерфейс между центральным процессором и аппаратной частью микроконтроллеров PIC. Они используются в качестве рабочих регистров, регистров конфигурации или для опроса состояния аппаратного обеспечения.

В среднем подсемействе микроконтроллеров PIC классическим является следующее расположение первых восьми файловых регистров (табл. 1.4).

Таблица 1.4. Классическое расположение первых восьми файловых регистров в среднем подсемействе микроконтроллеров PIC


Номер регистра Банк0 Банк 1
0 INDF INDF
1 TMRO OPTION
2 PCL PCL
3 STATUS STATUS
4 FSR TSR
5 PORTA TRISA
6 PORTB TRISB
7 PORTC TRISC

Если порт ввода-вывода не работает?

Если вывод порта ведет себя странно, то это может объясняться следующими причинами;
  • проблематика, связанная с чтением/модификацией/записью
  • неправильно установлен соответствующий регистр TRIS;
  • аппаратный модуль включен, переняв на себя работу вывода;
  • вывод порта поврежден, например, по причине короткого замыкания (да, и такое случается!).

Порты ввода-вывода

Выводы портов связаны с регистрами портов и сгруппированы по восемь и меньше. Каждый вывод порта может включаться как выход или как вход (третье состояние).

Регистры портов обозначаются, как правило, PORTA. PORTB, PORTC и т. д. Количество портов разнообразно. У самых маленьких микроконтроллеров PIC, оснащенных всего лишь несколькими выводами портов, выходной регистр называется GPIO.

Каждому регистру PORT поставлен в соответствие регистр направления передачи данных, который поразрядно определяет, какие выводы (по номер) разряда)

Регистры направления передачи данных обозначаются как "TRIS". т.е. TRISA…
Регистр TRIS включает или выключает связанные с выводами выходные усилители-формирователи.

воскресенье, 1 февраля 2009 г.

Память программ

Следующее описание памяти программ касается исключительно базовой серии и среднего подсемейства микроконтроллеров PIC (см. также главу "РКЛ8").
Указатель на слово программы называют счетчиком команд. Центральный процессор всегда выполняет ту команду, на которую указывает этот счетчик, после чего увеличивает его содержимое, если речь не идет о команде перехода.

Младший байт счетчика команд — адресуемый регистр специального назначения (PCL). Регистр PCL изменяют в случае реализации косвенных программных переходов. Однако старший байт счетчика команд умышленно сделан недоступным напрямую. Если необходимо изменить старший байт программною указателя, то его нужно записывать в промежуточный буфер памяти - регистр PCLATH. Регистр PCLATH копируется в старший байт счетчика команд только при доступе к регистpy PCL — будь то по команде перехода или по арифметической команде с аргументом PCL.

Для программного перехода по адресу ADRH:ADRL используют, как правило, команды CALL и GOTO, которым в качестве аргумента передается адрес. При этом существуют трудности, аналогичные тем, которые возникают при адресации памяти данных.

Базовая серия и среднее подсемейство микроконтроллеров PIC предоставляют а распоряжение 11 разрядов для адреса назначения, чтобы охватить все 2К слов программы. Количество в 2К слов обозначается как "страница".

В базовой серии PIC команда GOTO имеет лишь 9 разрядов для адреса назначения, а команда CALL -- даже 8. Иногда для адресации требуется немного ловкости. поскольку необходимо экономно обращаться с имеющейся памятью.
Подобно тому, как это происходит при выборе банка, при адресации памяти программ перед каждой командой перехода должна предварительно выбираться корректная страница (если этого еще не сделано). В среднем подсемействе PIC это реализовано путем правильной установки регистра PCLATH.

При этом перед командами CALL и GOTO необходимо позаботиться только о разрядах 3 и 4 регистра PCLATH. Младшие три разряда затираются адресом перехода. а старшие три не используются, поскольку на данный момент не существует микроконтроллеров PIC среднего подсемейства с более, чем четырьмя страницами.

Наиболее практичный способ выбора страницы перед выполнением команд
CALL LABEL И GOTO LABEL:
MOVLW HIGH__LABEL
MOVWF PCLATH
Измененное значение PCLATH копируется в счетчик команд только по следующим командам CALL и GOTO.
При программировании на ассемблере мы обходимся с управлением страницами подобно тому, как это происходит для памяти данных. Отдельные страницы содержат, по возможности, законченные программные модули. При таком подходе переходы с одной страницы на другую должны использоваться как можно реже. Таблицы и списки размещаются, сети необходимо, на собственной странице.

Такие часто используемые служебные программы как, например, умножение и деление, можно скопировать в каждую страницу, в которой они используются. Для того требуется меньше места, чем в том случае, когда перед каждым вызовом выполняются команды выбора страницы.
Для программного перехода по адресу ADRH:ADRI. используют следующие команды:
MOVF ADRH,W
MOVWF PCLATH
MOVF ADRL,W
MOVWP PCL

Содержимое регистра PCI.ATH загружается в старший байт счетчика команд только последней командой, по которой происходит переход по новому адресу.

Подобный прямой доступ к счетчику команд называется "вычисленным GOTO" и применяется для переменных ветвлений.

Предположим, байтовая переменная FALL может принимать значения от 0 до 5. Каждому значению FALL поставлена в соответствие некоторая служебная подпрограмма (PROGO, PROG1, ...). Возможны различные способы ветвления, и один из них выглядит следующим образом:
MOVF FALL,W
ADDWF PCL
GOTO PROGO
GOTO PROG1
GOTO PR0G2
GOTO PR0G3
GOTO PROG4
GOTO PROG5
Перед вызовом этих строк программы следует проверить, действительно ли переменная FALL меньше или равна 5. иначе выполнение команды ADDWF PCL может привести к переходу в непредвиденную область памяти.

Важным примером представленного выше варианта ветвления является следующая подпрограмма;
GETWERT MOVF TABPTR,W
ADDWF PCL
RETLW WERT0
RETLW WERT1
RETLW WERT2
RETLW WERT3
RETLW WERT4
RETLW WERT5 ИТ.Д.

С помощью команды CALL GETWERT в регистр W можно загрузить табличное значение, соответствующее указателю TABPTR.

Косвенная адресация данных

Косвенная адресация подразумевает, что указатель на аргумент размещен не явно в аргументе, а в регистре-указателе. В базовой серии, а также в среднем подсемействе микроконтроллеров Р1С этот регистр называется FSR (File Select Register — регистр выбора файла). Команды с косвенной адресацией не требуют аргумента, поскольку он загружается заранее в FSR.

Без косвенной адресации микроконтроллер немыслим. Поскольку код операции имеет ограниченный размер, в PIC применили следующий трюк: команды для косвенной адресации имеют такой же код операции, что и команды для прямой адресации. Указание на то, что речь идет о косвенной адресации, содержится в аргументе.

Это означает, что должен задаваться какой-то особенный аргумент, который не является "правильным" аргументом данных. В базовой серии и среднем подсемействе микроконтроллеров Р1С это — адрес 0, следовательно, с таким адресом не может быть задан физический файловый регистр. Таким образом, файловый регистр с адресом 0, — это символический регистр, который в ассемблере обозначается именем INDF (косвенный файловый регистр).

Кроме того, в языке ассемблера нет никакого дополнительного кода операции для косвенной адресации, например:
ADDWF INDF.W
В старшем подсемействе микроконтроллеров PIC присутствует три регистра FSR, что повышает удобство программирования. Более подробно об этом сказано в главе "PIC18".