@Bogdane,
naisao sam na jedan problem....
Naime na forumu Mikroelektronike sam nasao neki primer u kome je pokazano kako se
OSA podize na EasyPIC 6 razvojnom okruzenju (ja imam taj hadver) sa PIC16F887 (ide u paketu sa razvojnim okruzenjem)...
Pokusao sam da na isti nacin primer koji sam pisao ranije (MikroC) prevedem u OSA-u, pa da na taj nacin dobijeni HEX fajl 'spustim'
na MCU.
Kod koji je pisan bez OSA-e radi kako treba (kod je jednostavan, paljenje i gasenje dioda preko porta C)
i on je prikazan u nastavku:
Code:
/*
* Project name:
LED_Diode (Paljenje i gasenje dioda naizmenicno)
*/
void main() {
ANSEL = 0;
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;
TRISC=0x00; ///// Port C je konfigurisan kao izlaz
PORTC=0x00; ////// Izlaz na portu C je iskljucen (diode su iskljucene)
do {
PORTC=0xFF; ////Ukljucenje diode i kasnjenje 1 sekundu
Delay_ms(1000);
PORTC=0x00; ///// Iskljucenje diode i kasnjenje 1 sekundu
Delay_ms(1000);
}
while (1) ;
}
Problem nastaje kada prethodni kod pokusavam da prevedem na OSA RTOS.
Definisem funkcije, podesim parametre i kreiram task koji izvrsava funkciju.
Sve lepo iskompajliram i dobijem HEX fajl.
Kod koji ukljucuje OSA-u je u nastavku:
Code:
/*
Ukljucivanje dioda na portu C
*/
#include <osa.h>
#include <OSAcfg.h>
void init (void)
{
ANSEL = 0;
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;
TRISC=0x00; ///// Port C je konfigurisan kao izlaz
PORTC=0x00; ////// Izlaz na portu C je iskljucen (diode su iskljucene)
}
void ukljuci(void)
{
PORTC=0xFF; ////Ukljucenje diode
OS_Delay(1000);
}
void iskljuci(void)
{
PORTC=0x00; ///// Iskljucenj diode
OS_Delay(1000);
}
void main()
{
init();
OS_Init();
OS_Task_Create(1,ukljuci);
OS_Run();
}
Bez problema 'spustim' HEX na MCU (koristim mikroProg Suite for PIC ), ali se nista ne desava.
Tj. diode se ne pale i ne gase.....
I tako vec xy puta, sa nekoliko primera.....
Negde gresim, to mi je jasno.
Ali ne mogu da provalim gde.....
Hvala unapred.....