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 

PIC multitasking
Pojdi na stran Prejšnja  1, 2
 
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
mkosmac
Član
Član



Pridružen-a: Čet 26 Mar 2009 22:18
Prispevkov: 301
Aktiv.: 1.52
Kraj: Limbarska Gora

PrispevekObjavljeno: Sob Mar 24, 2012 8:04 pm    Naslov sporočila:   Odgovori s citatom

To pa tukaj (pa še kje drugje)
PIC Microcontrollers (znanje angleščine obvezno)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.42

PrispevekObjavljeno: Sob Mar 24, 2012 10:33 pm    Naslov sporočila:   Odgovori s citatom

V datasheetu je razloženo vse, na dolgo in široko. Tudi timerji...
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
hahalolek
Član
Član



Pridružen-a: Sob 29 Maj 2010 11:49
Prispevkov: 199
Aktiv.: 1.09
Kraj: Domžale

PrispevekObjavljeno: Ned Mar 25, 2012 7:42 pm    Naslov sporočila:   Odgovori s citatom

Do sedaj sem to sestavil in ne dela:

Koda:
int counter=1;

void main() {

T08BIT=1;
T0CS=0;
PSA=1;

TMR0ON=1;

while (1) {
}
}

void interrupt() {
counter++;
}



Tole mi javi:

5 324 Undeclared identifier 'T08BIT' in expression test timerja in interuptov.c
6 318 Assigning to non-lvalue 'T0CS' test timerja in interuptov.c
7 318 Assigning to non-lvalue 'PSA' test timerja in interuptov.c
9 324 Undeclared identifier 'TMR0ON' in expression test timerja in interuptov.c
0 102 Finished (with errors): 25 mar 2012, 19:36:07 test timerja in interuptov.mcppi

_________________
Lp Blaž

Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Ned Mar 25, 2012 8:01 pm    Naslov sporočila:   Odgovori s citatom

Pa kaj MikroC ne ponuja kakšnih tutorialov ali primerov s katerih bi se lahko naučil? Po moje je spraševanje takšnih splošnih stvari precej zamudno. Poglej si kak primer in ti bo v 5 minutah precej več jasno. Raje, kot da čakaš tu na pomoč.
Na žalost nimaš ničesar specifičnega, da bi ti lahko odgovorili. Redko kdo pa želi voditi tečaj programiranja, sploh ker je tega toliko na spletu...

Absolutno, na podlagi tega, kar si napisal, raje preberi kakšen tutorial in preglej primere. Bo lažje.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
hahalolek
Član
Član



Pridružen-a: Sob 29 Maj 2010 11:49
Prispevkov: 199
Aktiv.: 1.09
Kraj: Domžale

PrispevekObjavljeno: Pon Mar 26, 2012 3:24 pm    Naslov sporočila:   Odgovori s citatom

Evo sem malo poiskal in mi sedaj program builda ampak sem sprobal v debugu in mi TMR0 sploh ne prišteva in ne skoči v interrupt.

Koda:
int count=0;

void main() {

INTCON=0b10100000;
OPTION_REG=0b10000000;
TMR0=10;

while (1) {
      }
}

void interrupt() {
if (INTCON.T0IF = 1) {
   count++;
   INTCON.T0IF=0;
   TMR0=10;
   }
}

_________________
Lp Blaž

Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali.


Nazadnje urejal/a hahalolek Pon Mar 26, 2012 5:35 pm; skupaj popravljeno 2 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
matjazkariz
Član
Član



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Pon Mar 26, 2012 5:32 pm    Naslov sporočila:   Odgovori s citatom

MikroC-ja ne poznam in ne vem, če je funkcija interrupt() že kje napisana v kakšni knjižnici, vendar v tem primeru ti prav gotovo manjka vsaj kakšen #include.
Kako naj program ve, da želiš ob interruptu klicati funkcijo interrupt()?
Če je interrupt pravilno definiran, bo program counter (PC) ob tem eventu skočil na interrupt lokacijo. Poglej za tvoj uC kje to je. Pri malih picih 16 serije je to na adresi 0x05 ali 0x20. Če se pa na tej lokaciji ne nahaja koda za hendlanje interupta, se pač ne bo izvedla.
Poglej med primeri, če je kakšen, ki vsebuje kakršnekoli interupte.

_________________
LP, Matjaž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
hahalolek
Član
Član



Pridružen-a: Sob 29 Maj 2010 11:49
Prispevkov: 199
Aktiv.: 1.09
Kraj: Domžale

PrispevekObjavljeno: Pon Mar 26, 2012 5:53 pm    Naslov sporočila:   Odgovori s citatom

Očitno da ne dela interrupt v debugerju ker mi tudi primer ki je bil zraven ni delal.
Bom moral to testirati na plati.

_________________
Lp Blaž

Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MvE
Član
Član



Pridružen-a: Ned 04 Jan 2009 12:24
Prispevkov: 146
Aktiv.: 0.73
Kraj: MB

PrispevekObjavljeno: Sre Mar 28, 2012 11:15 pm    Naslov sporočila:   Odgovori s citatom

Vidim, da si že ugotovil. Ne vem pa zakaj imaš v funkciji count, ki se ti povečuje?
Drugače pa imam en kratki program, ki sem ga hotel že prej prilepiti. Če na RA0 priklopiš LED z uporom, bi morala utripati na približno 1 s. Če ni kakšne napake Very Happy upam, da je razumljivo napisano:

Koda:
int stevec = 0;


//Tukaj se zacne prekinitvena funkcija, v MikroC se napise tako, v MPLAB-u je nekoliko drugace
void interrupt() {

     stevec++;

     //Ce je vzrok prekinitve T0IF in ce je stevec vecji ali enak 15 se stanje na izhodu RA0 spremeni
     if (INTCON.T0IF == 1 && stevec >= 15) {
        PORTA.F0 = ~PORTA.F0;
        stevec = 0;
     }
     
     INTCON.T0IF = 0;           //Izbrisemo T0IF, v nasprotnem primeru bi ponovno vstopili v prekinitveno funkcijo

}


void main() {

  TRISA      = 0x00000000;      //Vsi pini A so izhodi
  PORTA      = 0x00000001;      //Vklopimo samo pin RA0

  //Nastavimo prekinitve
  INTCON     = 0x10100000;
             //0x1.......       omogoci prekinitve
             //0x..1.....       T0IE postavimo na 1 da omogocimo vklop prekinitve povzrocenega zaradi timerja 0
             //0x.....0..       T0IF postavimo na 0 saj bi nam v nasprotnem primeru takoj sprožil prekinitev, je pokazatelj da se je sprožila prekinitev zaradi timerja 0
 
  //Nastavimo timer 0
  OPTION_REG = 0x00001111;
             //0x..0.....       izberemo notranjo uro
             //0x...0....       povečanje pri prehodu iz nizkega stanja na visokega
             //0x....1...       preddelilnik je namenjen timerju 0
             //0x.....111       preddelilnik je nastavljen na 256
             
  while(1) {

  }


}


Nazadnje urejal/a MvE Pet Mar 30, 2012 8:56 am; skupaj popravljeno 1 krat
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
hahalolek
Član
Član



Pridružen-a: Sob 29 Maj 2010 11:49
Prispevkov: 199
Aktiv.: 1.09
Kraj: Domžale

PrispevekObjavljeno: Čet Mar 29, 2012 4:27 pm    Naslov sporočila:   Odgovori s citatom

Hvala za ta primer Very Happy
Count sem imel zaradi istega razloga kot ti samo da še nisem dal v program za prižiganje ledice.

_________________
Lp Blaž

Prvi poklic na svetu je bil električar. Še preden je bog rekel naj bo luč, so oni že kable napeljevali.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
surla
Član
Član



Pridružen-a: Ned 14 Dec 2003 15:22
Prispevkov: 722
Aktiv.: 3.05
Kraj: Ljubljana

PrispevekObjavljeno: Čet Mar 29, 2012 9:47 pm    Naslov sporočila:   Odgovori s citatom

A ni treba v zadnjem primeru ob izhodu iz interupta tudi int števec dati na nič?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MvE
Član
Član



Pridružen-a: Ned 04 Jan 2009 12:24
Prispevkov: 146
Aktiv.: 0.73
Kraj: MB

PrispevekObjavljeno: Pet Mar 30, 2012 8:58 am    Naslov sporočila:   Odgovori s citatom

Pa res, hvala za opozorilo. Sem že popravil.

LP
Nazaj na vrh
Skrit 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
Pojdi na stran Prejšnja  1, 2
Stran 2 od 2

 
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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group