Приветствую!
Опыта работы с PIC cовсем мало. Делал пару устройств, которые измеряли напряжениеи как-то реагировали. Со встроенной перефирией не работал. Сейчас делаю устройство, в котором будет модуль SIM900. PIC работает с ним по UART. В начале делаю инициализацию всех регистров в зависимости от необходимой конфигурации. Она выглядит так:
Код:
|
PORTA = 0x00;
PORTC = 0x00;
OPTION_reg = 0b10000000;
INTCON = 0b11000000;
PIE1 = 0b00100010;
PIR1 = 0b00000010;
PCON = 0b00000011;
OSCCON = 0b01100111;
OSCTUNE = 0b00000000;
TRISA = 0b00000111;
ANSEL = 0b00000000;
WPUA = 0b00000010;
IOCA = 0b00000000;
TRISC = 0b00101100;
T1CON = 0b10000000;
CMCON0 = 0b00000111;
CMCON1 = 0b00000011;
VRCON = 0b00000000;
ADCON0 = 0b00000000;
ADCON1 = 0b00000000;
TXSTA = 0b00000110;
RCSTA = 0b10010000;
BAUDCTL = 0b01001000;
SPBRG = 25; |
А дальше небольшая программка, просто для проверки работы.
Код:
|
Delay_ms(1000);
UART1_Init(9600);
Delay_ms(100);
led2 = 1;
on_mod();
Delay_ms(100);
while(sh2 == 1)
{
flash();
}
off_mod();
led2 = 0; |
Она зажигает светодиод, инициализирует UART, включает модем, и мигает светодиодом, пока я не замкну один вывод, тогда выключает модем и гасит светодиод.
Мне нужно будет по прерыванию реагировать и парсить ответы модема. Проблема заключается в том, что если я устанавливаю "Enables all unmasked peripheral interrupts", а их всего два, от приёмника и передатчика UART, программа в самом начале вваливается в прерывание и даже не зажигает светодиод. Это же вызывает отдельная установка RCIE и TXIE в единицу. Даже если я не делаю UART1_Init(9600); Все равно программа зависает. Компилятор microC.
Что я делаю не так?