www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

PIC24FJ prekinitev časovnika

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
mvodicar
Član
Član



Pridružen-a: Pet 19 Jun 2015 15:32
Prispevkov: 27
Aktiv.: 0.25
Kraj: Grosuplje

PrispevekObjavljeno: Pet Jun 19, 2015 3:53 pm    Naslov sporočila:  PIC24FJ prekinitev časovnika Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
infernal
Član
Član



Pridružen-a: Pet 29 Jun 2007 0:46
Prispevkov: 239
Aktiv.: 1.17
Kraj: Maribor

PrispevekObjavljeno: Pet Jun 19, 2015 4:53 pm    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mvodicar
Član
Član



Pridružen-a: Pet 19 Jun 2015 15:32
Prispevkov: 27
Aktiv.: 0.25
Kraj: Grosuplje

PrispevekObjavljeno: Pet Jun 19, 2015 5:28 pm    Naslov sporočila:   Odgovori s citatom

Hvala, deluje Smile Očitno si bom moral še malo teorije pogledati.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 47 dni


Powered by phpBB © 2001, 2005 phpBB Group