Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
2. Исходный код для MSP430
Этот пример программы показывает использование аппаратного модуля 12С микроконтроллера MSP430F169 для работы с EEPROM памятью по шине I2C. В зависимости от объёма микросхемы памяти EEPROM адресация может видоизменяться. Существуют разновидности микросхем памяти EEPROM, которые используют только один байт для адресации (объём памяти 256 Байт или менее). В приведенном ниже примере для адресации используется два байта. Показаны примеры на языке С и на ассемблере, функции их идентичны. Подробное описание модуля I2C микроконтроллеров MSP430 приведено в [2].
Файлы "l2Croutines.c" и "l2Croutines.s43" могут быть использованы в качестве библиотек. Они содержат следующие функции:
• lnitl2C()
Инициализация аппаратного модуля I2C микроконтроллера MSP430.
• EEPROM_ByteWrite(<address>, <data>)
Выполнение команды Запись Байта (Byte Write). Перед запуском указывается адрес и данные, которые следует записать.
• EEPROM_AckPolling();
Опрос Подтверждения (Acknowledge Polling) используется для определения окончания процесса записи в EEPROM. Функцию следует вызывать после записи данных в EEPROM.
• Result = EEPROM_RandomRead(<address>)
Команда Чтение по Произвольному Адресу (Random Read) позволяет читать содержимое ячейки памяти EEPROM с указанным адресом.
• Result = EEPROM_CurrentAddressRead()
Чтение по Текущему Адресу (Current Address Read), используется внутренний указатель адреса EEPROM. После выполнения операций чтения и записи внутренний указатель автоматически инкрементируется.
В данном примере показано использование функций из файлов "l2Croutines.c" и "l2Croutines.s43":
#include <msp430xl6x.h>
/*--- внешние функции файла «I2Croutines.c» ---- */
extern void InitI2C(void);
extern void EEPROM_ByteWrite(unsigned int Address,
unsigned char Data);
extern unsigned char EEPROM_RandomRead(unsigned int
Address);
extern unsigned char EEPROM CurrentAddressRead(void);
Библиотека Компэла 43
InsitojmInts /. Общие вопросы
extern void EEPROM_AckPolling(void);
/*------ тело программы-------------------------- */
void main(void)
{... // Инициализация
InitI2C(); // Инициализация модуля 12С
EINT(); // Разрешение прерываний
EEPROM_ByteWrite(0x0000, 0x12);
EEPROM AckPolling(); // Ожидание завершения
// цикла записи EEPROM EEPROM_ByteWrite(0x0001, 0x34); EEPROM_AckPolling(); // Ожидание завершения
// цикла записи EEPROM EEPROM_ByteWrite(0x0002, 0x56); EEPROM_AckPolling(); // Ожидание завершения
// цикла записи EEPROM
Data[0] = EEPROM_RandomRead(0x0000); // Чтение
// по адресу 0x0000
Data[l] = EEPROM_CurrentAddressRead(); // Чтение
// по адресу 0x0001
Data[2] = EEPROM_CurrentAddressRead(); // Чтение
// по адресу 0x0002
Дата публикования: 2014-11-18; Прочитано: 804 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!