[ milan kovacevic 85 @ 23.08.2013. 19:53 ] @
Dali neko moze da mi objasni kako se koristi interap pin za pic12f683,treba mi radi sledeceg non stop da nadgleda jedan pin i cim se desi promena na tom pinu da skoci na zadatu labelu,kucam u pbp-u
[ rsinisa @ 23.08.2013. 19:59 ] @
Pročitaj u tehničkim podacima za taj kontroler sve oko interapta, zatim u PBP uputstvu takodje sve o interaptima i reci šta ti tačno nije jasno pa ćemo da pomognemo gde zapne.

Pozdrav.
Sinisha
[ milan kovacevic 85 @ 23.08.2013. 20:52 ] @
Jasan mi je princip rada interapta dali mi samo neko moze dati primer za pic 12f683.nasao sam i primer i iscito sve sto si ti pisao za interapt al ne znam kako da definisem za ovaj pic sve komande razumem,dali mi neko ovaj primer moze prilagoditi picu 12f683
Code:
01    ' Name        : ONINT.pbp
02    ' Compiler    : PICBASIC PRO Compiler 2.6
03    ' Assembler   : PM or MPASM
04    ' Target PIC  : 12F, 16F, 18F
05    ' Hardware    : Non specific
06    ' Oscillator  : internal or external
07    ' Keywords    : ON INTERRUPT
08    ' Description : PICBASIC PRO program to demonstrate use of On Interrupt
09    ' Interrupts in BASIC. Turn LED on.  Interrupt on PORTB.0 (INTE) turns LED off.
10    ' Program waits .5 seconds and turns LED back on.
11    '
12     
13    led Var PORTB.7
14     
15       OPTION_REG = $7f        ' Enable PORTB pullups
16     
17       On Interrupt Goto myint ' Define interrupt handler
18       INTCON = $90            ' Enable INTE interrupt
19     
20    mainloop:
21       High led                ' Turn LED on
22       Goto mainloop           ' Do it forever
23     
24    ' Interrupt handler
25      Disable                  ' No interrupts past this point
26    myint:
27       Low led                 ' If we get here, turn LED off
28       Pause 500               ' Wait .5 seconds
29       INTCON.1 = 0            ' Clear interrupt flag
30       Resume                  ' Return to main program
31       Enable
32     
33       End
[ ZAS011 @ 23.08.2013. 21:08 ] @
Pročitaj još koji put Datasheet.
Džabe da ti neko "prilagođava" primer za pojedini PIC.
Prilagođavanje za određeni mikrokontroler je tesno vezano sa poznavanjem istog, a isti se upoznaje čitajući Datasheet.
[ milan kovacevic 85 @ 23.08.2013. 21:17 ] @
A mucim se vec par dana i nece me nikako sad mi je hica za sutra najdalje prekosutra moram napisati to sto sama zamislio zato sam zamolio dali mi neko moze dati primer
[ YU2AX @ 24.08.2013. 02:22 ] @
Ma sasvim je dobro to sto si napisao, uz malu doradu radice sasvim ok.
Ono na sta treba da obratis paznju jeste TRIS I/O registar gde ces definisati ulazni (na kome se desava intrerapt) odnosno izlazni pin (tvoj pic nema portove vec GP I/O), kao i INTCON, CMCON0 i ANSEL registre.

Uz to, kada se interapt dogodi osim ciscenja flega trebao bi i privremeno da onemogucis novi interapt dok ne izadjes iz interapt rutine inace mozes da se zaglavis.

Procitaj detaljno datasheet o stvarima koje sam ti nabrojao, preradi par redova tvog programa i radice.
[ milan kovacevic 85 @ 25.08.2013. 09:30 ] @
Nece me i nece zasto ovo neradi cak nece ni ledic da upali
Code:

     
 
 
 '---------------------------OSIGURACI--------------------------------
 #CONFIG 
     __CONFIG  _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF  & _BOD_OFF & _CP_OFF & _PWRTE_ON
    #ENDCONFIG
    DEFINE OSC 4


'-------------------------- PDESAVANJA -------------------------------
    
    ANSEL = 30
    WPU = $37
    
    CMCON0 = 7                ' Analog comparators off

    TRISIO = %000100          'GPIO.2 ULAZ
 '----------------------------------------------------------        
 
   'DEFINMISANJE PORTOVA
    symbol led = GPIO.1      
    LOW led                  
      
 
 
 
''interapt
'************************************************************** 
  
     
     '  OPTION_REG = $7f       ' Enable PORTB pullups
       OPTION_REG = $d5 ' Set TMR0 configuration
       INTCON = $a0    
       On Interrupt Goto myint ' Define interrupt handler
       'INTCON = $90            ' Enable INTE interrupt
     
    mainloop:
       High led                ' Turn LED on
       Goto mainloop           ' Do it forever
     
    ' Interrupt handler
         Disable                  ' No interrupts past this point
    myint:
       Low led                 ' If we get here, turn LED off
       Pause 500               ' Wait .5 seconds
       INTCON.1 = 0            ' Clear interrupt flag
       Resume                  ' Return to main program
       Enable
     
       End
     
    
    
[ YU2AX @ 25.08.2013. 11:29 ] @
Ne vredi ako nasumice deklarises registre bez da promislis kako to afektira celi program.



Komanda DISABLE na tom mestu nikada ne biva izvrsena. Umesto DISABLE/ENABLE koristi INTCON.GIE = 0 na pocetku interapt rutine, a INTCON.GIE = 1 u glavnoj petlji.

[ rsinisa @ 27.08.2013. 12:18 ] @
Da li ES ima neku vrstu leksičke kontrole napisanog? Ova poruka prolazi, a ono što sam napisao vezano za temu neće. Ne znam o čemu se radi, nisam koristio nikakve ružne reči, časna pionirska. Ima li neko ideju u čemu je problem?

Sada ću da probam da ubacujem jednu po jednu rečenicu da vidim gde zapinje tačno.

Pozdrav.
Sinisha

Problem je u prvoj rečenici koju ne mogu da citiram jer je ES jednostavno ne prihvata. Sad ću da testiram malo ...

Zanimljivo, zapelo je na reči "U P O R N O", nju neće da prihvati ...

Dakle, prva rečenica sledeće poruke treba da glasi:

Ne znam zašto u p o r n o izbegavaš čitanje original uputstava i tehničkih podataka kada ti je to najbolji i najbrži način da rešiš bilo koji problem.


Hm, možda je stvar u osnovi te reči, "P O R N O", možda ES ipak ima neki filter za reči koji, izgleda, nije dobro podešen.
Da, kad napišem P O R N O, takodje ne prihvata.

[Ovu poruku je menjao rsinisa dana 27.08.2013. u 13:34 GMT+1]
[ rsinisa @ 27.08.2013. 12:20 ] @
Ne znam zašto u p o r n o izbegavaš čitanje original uputstava i tehničkih podataka kada ti je to najbolji i najbrži način da rešiš bilo koji problem.

Pogledaj poglavlje 6.1 u PBP uputstvu i već će ti mnogo toga biti jasnije. Zatim pogledaj tehničke podatke za taj PIC i to poglavlje o interaptima, a zatim pogledaj i opise i funkcije svih registara koji učestvuju u tom procesu. I to ćeš sve da odradiš za 1 dan, a čekanje da ti neko reši problem trajaće mnogo više jer ti prvo ni ne znaš tačno šta da pitaš pa dok se sve razjasni, ode 3 dana, a ti i dalje nisi svestan zašto je to tako napisano.

Ovo shvati krajnje dobronamerno jer ćeš tako najmanje vremena da izgubiš, a usput ćeš da naučiš mnogo toga.

I da, ne preporučujem upotrebu ON INTERRUPT načina za obradu interapta, nauči kako da u asembleru odradiš interapte (PBP i asembler se odlično slažu) i imaćeš mnogo kvalitetniji program. Naravno, možeš prvo da se edukuješ koristeći ON INTERRUPT, ali gledaj da što pre zaboraviš tu naredbu.


Pozdrav.
Sinisha

P.S. Čitati, čitati i samo čitati.

[Ovu poruku je menjao rsinisa dana 27.08.2013. u 13:40 GMT+1]