В большинстве мест которые я нашел MSP430 начинают рассказывать архитектуру, адресацию, шину и другие технические идеи. К сожелению все они требуют хорошего электрического и инженерного опыта. Сегодня мы попробуем понять как можно использовать MSP430 не понимай свойст биполярного перехода и т.д. Технические знания полезные для написания программ на ассемблере, но элементарных знаний достаточно для начала программирования на С.
Одним из отличий MSP430 от других МК является фон Неймовская архитектура; вся память и информация доступна для процессора в одном месте. Другие МК разделяют различные виде памяти это дает некоторую эффективность, но усложняет конструкцию. Просто представить МК в виде города (или нескольких городов в случае Гарвардской архитектуры). В фон Неймовской архитектуре как в MSP430 все живут в одном городе с уникальным адресом. В случае с Гарвардскими системами, адреса могут повторятся, поэтому необходимо указывать конкретный город.
Память
Память MSP430 разделена на части для программы, для данных, ОЗУ и другой важной информации о ней позже. Сегодн нас интересует коллекция адресов - Регистры. Эти адреса являются коммуникационным центром в городе MSP430; они как почта, как power company и т.д. Для MSP430, регистры контролируют функции процессора и его периферии. Вы можете думать что это дома с выключателями и переключателями. Переключатели определяют какое событие произойдет, что будет делать пин, как будет вести себя перефирия, и т.д. Регистры сгруппированы в секции: Регистр специальных функций (SFR), 8-битная перефирия (parts that need only 8-bits to read instructions) и 16-битная переферия (obviously those needing a full 16-bits to read instructions). Для примера посомтрим на самую маленькую MSP430: MSP430G2001. Откройте руководство по серии x2xx и G2x01 datasheet(на сайте ti.com).
Страницы 1-4 руководства серии
x2xx
показывают карту городов. Вы можете видеть адреса SFRs начинаются от 0h и до Fh (h демонстрирует число в шеснацетиричном формате; в десятичном вы видите адреса от 0 до 15). Далее идут 8-битная перефирия с 10h по FFh (16 до 255). Обратите внимание на большой пробел между адресами RAM и флеш памяти. Руководство показывает карту всей x2xx семьи -- для того чтобы увидеть данные на наш чип, мы должны посмотреть его datasheet.
Страница 13 datasheet показывает все таблицы памяти G2x01 и G2x11. Для G2001, мы имеем перефирийные регистры и 128 байт ОЗУ. Адреса от 0201h до 10FEh пустые, и мы видим 256 байт portion called "информационной памяти". (Эта часть памяти содержит данные калибровки и другие важные числа которые должны быть сохранены когда отключается питание. Обычно эти байты не доступны для записи, но могут быть перезаписаны при необходимости, об этом в следующей части. И так мы имеем 512 бай для кода, включая все векторы прерываний на самом верху. (об этом в следующей части).
Регистры
Теперь когда мы знаем как выглядит город MSP430 пора посмотреть как переключать дома. Регистры MSP430 спечальная область памяит которая настраивает устройство и говорит ему если что-то произошло. На странице 12 даташита G2001 Регистры специального назначения (SFRs). В этом устройстве их только 4, по адресу с 0h до 3h: Разрешение прерываний 1 (IE1) и 2 (IE2), и Прерывания Флага регистра 1 (IFG1) и 2 (IFG2). Каждый адрес указывает на 1 байт памяти, это 8 бит (переключателей/breakers/ и т.д.) в каждом регистре. На странице 12 показаны используемые в G2001.
В этом случае, в IE1 доступны только биты 0, 1, 4, и 5. В IFG1 доступны биты 0-4. В даташите написано как называется каждый бит и что он делает. Например бит 0 в IE1 называется WDTIE, или Watchdog Timer Interrupt Enable. По умолчанию этот бит установлен в 0, но если мы будем использовать таймер watchdog как таймер интервала, то необходимо установить этот бит в 1, тогда watchdog таймер сможет установит флаг прерывания (IFG1 бит 0) (вернемся к этому позже) при определенных обстоятельствах. Это говорит MSP430 что делать или не делать когда таймер watchdog используется в данном режиме.
Перейдем на 17 страницу даташита. This table gives the peripheral file map, or the addresses and names of the registers that affect the various peripherals in the device. Note at the bottom it lists the SFRs we just discussed. Any time you need to use a peripheral, this page will give you a starting point for knowing which switch houses you need to visit to be certain everything is configured properly. We'll look at the registers for each peripheral specifically in their own posts. Today, let's look at the registers for Port P1 and Port P2, as these are the most straight-forward.
The ports are the general input/output pins available on the device. The pinout diagram on page 3 shows that the G2001 has all 8 pins for P1 (P1.0 through P1.7), and 2 pins for P2 (P2.6 and P2.7). Each register for a port has bits that correspond to each of the pins; for example, P1.4 is controlled by bit 4 in each of the registers. Let's go through each of the registers available for a port now.
PxIN
Входной регистр порта доступен только для чтения. Когда ножка выбрана как вход, чтение значения бита говорит какое сейчас напряжение на ножке. PxIN считывает значение со всех портов одновременно в байт. Имейте ввиду это цифровая система, поэтому только два значения могут быть прочитаны 0 или 1. Эти значения соответствую напряжению Vss (0) и Vcc (1), это от 0 вольт до 1.8 вольт и от 1.8 до 3.6 вольт соответственно. Это встроено в устройство любое напряжение выше считается 1, любое напряжение ниже считается 0. Чтобы не угробить чип не читайте напряжение вне диапазона Vss и Vcc напрямую.
PxOUT
Выходной регистр порта можно изменять. Если ножка выбрана для выхода, мы можем менять напряжение на ножке записывая 0 или 1 в соответствующий бит PxOUT. Как и вход, 0 это напряжение Vss, и 1 это напряжение Vcc.
PxDIR
Направляющий регистра определяет будет ли ножка входом (бит низкий или 0) или выходом (бит высокий или 1). В начале программы вы должны настроить ножки на вход и на выход. Конечно это не говорит о том что вы не сможете изменить в середине программы..
PxIE, PxIES, and PxIFG
Это регистрв включения прерываний, выбор interrupt edge , и регистр флага прерывания порта. Мы будем смотреть на эти регистры вместе и как они вместе работают. Можно использовать ножки МК для получения сигнала для вызова прерывания. Прерывание это когда процессору необходимо остановить то что он сейчас делает и отвлечься на специальную инструкцию описывающее данное прерывание. После выполнение инструкции прерывания, процессор продолжает выполнение того что он делал до прерывания. Вы включите прерывание когда установите бит 1 PxIE для ножки МК. PxIES бит определяет когда флаг ножки переходит от 0 к 1 (IES бит установлен в 0) или от 1 к 0 (IES бит установлен в 1). Тоесть флаг срабатывает при обнаружении изменения фронта с положительного на отрицательный или наоборот. При срабатывании прерывания устанавливается соответствующий бит в PxIFG.
PxSEL
Рассматривая схему на 3 странице можно увидеть что ножки имеют несколько функций. Выбровой(бред да?) регистр выбирает функцию на ножке. Первыми показаны функции по умолчанию, P1 это обычная ножка ввода/вывода, ножка P2 по умолчанию подключена к кварцевому генератору. Изменение бита PxSEL меняет поведение ножки. Позже мы посмотрим разные настройки; сейчас план освоения функций
PxSEL
по умолчанию .
PxREN
Регистр подтяжки на землю является очень полезным для порта. Иногда он помогает поднять напряжение до Vcc или опустить до Vss, например при подключении кнопки к пину. Данный регистр включает эту функцию. When a PxREN bit is enabled, you can select it as a pull-up or pull-down resistor by setting the corresponding bit in PxOUT, 1 for up, 0 for down.
Теперь когда мы познакомились с некоторыми регистрами, в следующей статье мы попробую менять их при написании программы.
---
Автор: Давид Олсон
Оригинал: http://mspsci.blogspot.com.ar/2010/07/tutorial-02-msp430-township-and.html
Переводил сам, ошибки пишите в почту
Комментариев нет:
Отправить комментарий