Предыдущая Следующая

static void I2CInterrupt (); //объявление функции обработчика прерываний от I2C Файл hardware.c программы обслуживания 12С

„4

//Специальные функции (с учетом обслуживания I2C)

//------------------------------------------------------------------------

#include "hardware.h" //подключение специальных заголовков и определений tinclude "i2c.h" //подключение специальных заголовков и определений

//Константы инициализации системы

tdefine FOSC 14745600 //частота кварцевого резонатора в Гц

tdefine VALUEOFM 4 //соответствует PLLCFG_bit.MSEL=3

tdefine CCLK (FOSC*VALUEOFM) //CCLK = 58.9824 МГц

tdefine PCLK (CCLK/4) //соответствует VPBDIV_bit.VPBDIV=0;

tdefine PLOCK 0x0400

//FCCO = CCLK*2*P = 156...320 МГц, значит, P=2, что соответствует PLLCFG_bit.PSEL=l; tdefine VIC_TIMER0_bit (1 « VIC_TIMER0) tdefine VIC_l2C_bit (1 « VIC_I2C) volatile U16 I2C_addres; //адрес ячейки 24LC64 volatile U8 l2Cwr_byte; //байт данных для записи в 24LC64 volatile U8 wr_rd; //признак записи-чтения '24LC64

volatile U8 end_rd; //признак окончания чтения 24LC64

static U8 NUM_byte = 0; //порядковый номер переданного байта данных в

// 24LC64

//Инициализация системы -------------------------------------------------

void CPUinit(void) {

//Настройка PLL (ФАПЧ)

PLLCFG_bit.MSEL=3; //См. расчет PLL в секции tdefine этого файла PLLCFG_bit.PSEL=1; //См. расчет PLL в секции tdefine этого файла PLLFEED=0xAA; PLLFEED=0x55;

PLLCON_bit.PLLE=1; //Включение PLL (ФАПЧ) без подключения к ядру

PLLFEED=0xAA;

PLLFEED=0x55;

while(!(PLLSTAT & PLOCK)); //Ожидание замыкания петли PLL (ФАПЧ)

PLLCON_bit.PLLC=l; //Подключение PLL (ФАПЧ) к ядру

PLLFEED=0xAA; PLLFEED=0x55;

//Инициализация МАМ и тактовой частоты периферии MAMCR_bit.MODECTRL=0; //Первоначальное отключение МАМ MAMTIM_bit.CYCLES=3; //Рекомендуется для CCLK>40 МГц

MAMCR_bit.M0DECTRL=2; //Включение МАМ (функции МАМ полностью реализуются) VPBDIV_bit.VPBDIV=0; //См. расчет PLL в секции tdefine этого файла //Инициализация GPIO

PINSEL0=0; //Младшие линии Р0 являются GPIO PINSEL1=0; //Старшие линии Р0 являются GPIO //задание направлений линий GPIO IO0DIR=0x3000000;

//ОЬОООО ООН 0000 0000 0000 0000 0000 0000 Р0.10...Р0.16 - входы // Р0.24, Р0.25 - выходы

IOlDIR=0xFF0000;

//ОЬОООО 0000 1111 1111 0000 0000 0000 0000 Р1.16...Р1.23 - выходы //задание начальных уровней на выходах IO0CLR=0x3000000; //сброс .выходов Р0.24, Р0.25 IOlCLR=0xFF0000;

//ОЬОООО 0000 1111 1111 0000 0000 0000 0000 сброс выходов PI. 16...Р1.23

}

//------------------------------------------------------------------------

//Инициализация прерываний

//-------------------------------------------------------------------

void INTERRUPTSinit(void) {

// МЕММАР = 2; //переотобразит векторы прерываний в SRAM,


Предыдущая Следующая



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz