Napisalem prosty kod by pokazac, ze mimo iz przerwania sa wylaczone rzeczywisty uklad nie dziala (symulacja natomiast tak).
Program powinien naprzemienne wlaczac i wylaczac trzy porty - niestety tak sie nie dzieje. Natomiast gdy wyrzuce z powyzszego listingu to:
to wszystko dziala poprawnie. Dlaczego? Przeciez przerwania sa wylaczone?! Dlaczego obecnosc tego kawalka wszystko burzy? Uzywam kompilatora HiTech PICC z interfejsem MPLab (przesiadlem sie na niego niedawno - moze on wymaga jakichs ustawien?).
BF
#include <pic.h>
#include "init.h"
#include "delay.h"
__CONFIG(HS & WDTDIS & PWRTEN & BOREN & LVPDIS & WRTEN & DEBUGDIS & DUNPROT & UNPROTECT);
void interrupt uuu(void)
{
asm("NOP");
}
void init(void)
{
STATUS = 0;
PCLATH = 0;
INTCON = 0b00000000;
//I/O configuration
TRISA = 0b11111111;
TRISB = 0b00000000;
TRISC = 0b00000001;
TRISD = 0b00000000;
TRISE = 0b00000000;
//ADC configuration
ADCON0 = 0b11000001; // power on AD
ADCON1 = 0b11000100; // right justified, AN0 AN1 AN3 - analog inputs, Vref = Vcc
//RS configuration
SYNC = 0;
SPEN = 1;
SPBRG = 23; // 9600bps: 23->3.686400MHz 129->20MHz
BRGH = 1;
TXEN = 1;
CREN = 1;
// interrupt configuration
RBIE = 0;
TXIE = 0;
RCIE = 0;
// ei(); // Global interrupts DISABLED
PEIE = 0;
GIE = 0;
OPTION = 0b00000111; // set prescaler and timer source
TMR0IE = 1; // en/dis-able Timer0 interrput
}
void main(void)
{
init();
while(1)
{
PORTD = 255;
PORTC = 255;
PORTE = 255;
delay_ms(100);
PORTD = 0;
PORTC = 0;
PORTE = 0;
delay_ms(100);
}
}
Program powinien naprzemienne wlaczac i wylaczac trzy porty - niestety tak sie nie dzieje. Natomiast gdy wyrzuce z powyzszego listingu to:
void interrupt uuu(void)
{
asm("NOP");
}
to wszystko dziala poprawnie. Dlaczego? Przeciez przerwania sa wylaczone?! Dlaczego obecnosc tego kawalka wszystko burzy? Uzywam kompilatora HiTech PICC z interfejsem MPLab (przesiadlem sie na niego niedawno - moze on wymaga jakichs ustawien?).
BF