|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
mvodicar Član
Pridružen-a: Pet 19 Jun 2015 15:32 Prispevkov: 27 Aktiv.: 0.25 Kraj: Grosuplje
|
Objavljeno: Pet Jun 19, 2015 3:53 pm Naslov sporočila: PIC24FJ prekinitev časovnika |
|
|
Lep pozdrav, začenjam s programiranjem 16 bitnega pica. Naletel sem na težavo pri uporabi prekinitve časovnika, namreč program se zažene in potem takoj izpiše Target Halted. S komentiranjem kode sem ugotovil da je napaka nekje pri prekinitvi vendar ne vem kaj bi bilo lahko narobe.
Sam program sem preizkusil z gledanjem zastavice v while(1) stavku in deluje pravilno, vendar bi rad uporabil prekinitev.
Uporabljam MPLAB v8.91 in PicKit3
Koda: |
*******************************************************************************/
#include "main.h"
/******************************************************************************/
//config
_CONFIG2(0xF9FC);
_CONFIG1(0x3F7F);
/******************************************************************************/
void TimerInit(void);
/*******************************************************************************
Glavna programska zanka
*******************************************************************************/
int main(void)
{
_PCFG0 = 1; //analogni pini na digitalne
_PCFG1 = 1;
_TRISA0 = 1; //A0 je dig. vhod
_TRISA1 = 0; // A1 je dig. izhod
RCONbits.SWDTEN = 0;
void TimerInit(void)
{
IEC0bits.T1IE = 0;
PR1 = 0xF424;
T1CONbits.TCKPS = 0b10; //Prescalar 1:64
IPC0bits.T1IP = 5; //set interrupt priority
IFS0bits.T1IF = 0; //reset interrupt flag
IEC0bits.T1IE = 1; //turn on the timer1 interrupt
T1CONbits.TON = 1; //turn on the timer
}
/***************************************************************************
Inicializacija
***************************************************************************/
TimerInit();
//_T1Interrupt() is the T1 interrupt service routine (ISR).
void __attribute__((__interrupt__)) _T1Interrupt(void)
{
_LATA1 =~ _LATA1;
IFS0bits.T1IF = 0;
}
/***************************************************************************
Glavna programska zanka
***************************************************************************/
while(1)
{
}
//konec while
}//konec main |
|
|
Nazaj na vrh |
|
|
infernal Član
Pridružen-a: Pet 29 Jun 2007 0:46 Prispevkov: 239 Aktiv.: 1.16 Kraj: Maribor
|
Objavljeno: Pet Jun 19, 2015 4:53 pm Naslov sporočila: |
|
|
Nevem zakaj imaš interrupt in TimerInit funkciji v glavni funkciji, moralo bi bit takole:
Koda: |
*******************************************************************************/
#include "main.h"
/******************************************************************************/
//config
_CONFIG2(0xF9FC);
_CONFIG1(0x3F7F);
/******************************************************************************/
void TimerInit(void);
/*******************************************************************************
Glavna programska zanka
*******************************************************************************/
int main(void)
{
_PCFG0 = 1; //analogni pini na digitalne
_PCFG1 = 1;
_TRISA0 = 1; //A0 je dig. vhod
_TRISA1 = 0; // A1 je dig. izhod
RCONbits.SWDTEN = 0;
/***************************************************************************
Inicializacija
***************************************************************************/
TimerInit();
/***************************************************************************
Glavna programska zanka
***************************************************************************/
while(1)
{
}
//konec while
}//konec main
void TimerInit(void)
{
IEC0bits.T1IE = 0;
PR1 = 0xF424;
T1CONbits.TCKPS = 0b10; //Prescalar 1:64
IPC0bits.T1IP = 5; //set interrupt priority
IFS0bits.T1IF = 0; //reset interrupt flag
IEC0bits.T1IE = 1; //turn on the timer1 interrupt
T1CONbits.TON = 1; //turn on the timer
}
//_T1Interrupt() is the T1 interrupt service routine (ISR).
void __attribute__((__interrupt__)) _T1Interrupt(void)
{
_LATA1 =~ _LATA1;
IFS0bits.T1IF = 0;
}
|
|
|
Nazaj na vrh |
|
|
mvodicar Član
Pridružen-a: Pet 19 Jun 2015 15:32 Prispevkov: 27 Aktiv.: 0.25 Kraj: Grosuplje
|
Objavljeno: Pet Jun 19, 2015 5:28 pm Naslov sporočila: |
|
|
Hvala, deluje Očitno si bom moral še malo teorije pogledati. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 102 dni
Powered by phpBB © 2001, 2005 phpBB Group
|