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 

"Utripanje" dveh izhodov in hkratno izvajanje drug

 
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
msmiha
Član
Član



Pridružen-a: Sob 26 Feb 2005 16:48
Prispevkov: 115
Aktiv.: 0.49
Kraj: Slovenske Konjice

PrispevekObjavljeno: Pet Jul 29, 2005 11:45 am    Naslov sporočila: icon_question "Utripanje" dveh izhodov in hkratno izvajanje drug Odgovori s citatom

Mi zna kdo povedat kak bi z 16F84 naredil, da bi recimo dva izhoda izmenično "utipala" (delovala kot multivibrator), če bi na njiu priključil led diodi, med tem pa bi se moral izvajati drugi program (setiran bi moral biti en trerji izhod, tako dolgo dokler ga nebi z nekim vhodom resetiral recim RA0).
_________________
Edini način da odkrijemo meje mogočega je da, jih prestopimo in se znajdemo v nemogočem!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Jul 29, 2005 12:18 pm    Naslov sporočila:   Odgovori s citatom

Tole ne predstavlja nobenega problema. Uporabi TMR0 prekinitev iz nje vključuj tisti dve diodi. Tisti vhod, ki ti bo setiral tretji izhod pa lahko prav tako čitaš v prekinitveni rutini. Lahko pa kot vhod koristiš RB0/INT, ki ti lahko proži zunanjo prekinitev. Zavisi seveda kaka hitrost je potrebna.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
msmiha
Član
Član



Pridružen-a: Sob 26 Feb 2005 16:48
Prispevkov: 115
Aktiv.: 0.49
Kraj: Slovenske Konjice

PrispevekObjavljeno: Pet Jul 29, 2005 2:05 pm    Naslov sporočila:   Odgovori s citatom

Teh prekinitvenih rutin ne razumem najboljše, bi lahko prilepu kakšni primer ? Poglej stvar je taka da bi rad krmilil drsne vrate, zdaj pa program mam napisan da deluje tako da ko pritisnem tipko se vrata odprejo do končnega stikala, ki prekine potek odpiranja vrat (zdaj med tem časom bi pa mogle utripati izmenično dve luči). Bi šlo tako, da bi končna stikala vezal na pine RB4 in RB5 recimo, ki imajo tudi funkcijo interrupt on change. se pravi da ko bi senzor zaznal, da so vsrata prišla do konca bi se spremenilo stanje na vhodih RB4 ali RB5 in bi mi skočilo v prekinitveno rutino, v kateri bi resetiral izhoda za pogon vrat. Sedaj pa kak bi naredu, da bi med vsem tem dogajanjom utripali dve lučki oziroma LED diodi izmenično. Zelo bi bil vesel, če bi se ti ljublo prilepit kaki primer z timerjem.
_________________
Edini način da odkrijemo meje mogočega je da, jih prestopimo in se znajdemo v nemogočem!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Jul 29, 2005 8:09 pm    Naslov sporočila:   Odgovori s citatom

Evo na hitro napisano.
Dopisal sem komentarje ter stvar preizkusil na testni plošči. Uporabljen je XT oscilator. Izhoda sta RB1 ter RB2 Vhoda sta RB4 ter RB5. Z njima vključiš ali izključiš utripanje. (tipka proti masi) Program lahko dopisuješ v prekinitveni rutini ali izven nje. Ko boš postavil bit "UTRIPAJ" bo utripalo, ko ga boš brisal bo nehalo.


Koda:
;---------------------------
;testni program "msmiha"
;raba TMR0 prekinitve
;www.elektronik.si
;
;---------------------------

   errorlevel -302
   list P=16F84A
   
#include "d:\asm\p16f84a.inc"

#define LED1 PORTB,1
#define LED2 PORTB,2
#define VKLOP PORTB,4
#define IZKLOP PORTB,5

#define UTRIPAJ KONTROLNI,0
#define KOR1 .250
#define KOR2 .1

   __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
   
   
   cblock 0XC
   WTMP,STMP,TMP,KONTROLNI,T1,T2
   endc
   
   
   
   org 0X0
   goto GLAVNI
   org 0x04
   goto PREKINITEV
   
   
   org 0X05
;-----------------------------------
;prekinitvena rutina
;-----------------------------------
PREKINITEV
   movwf WTMP      ;pred vstopom v prekinitveno rutno shranem W
   swapf STATUS,W
   movwf STATUS      ;ter status register
   btfsc INTCON,T0IF   ;ugotavljam ce je slo za TMR0 prekinitev
   goto TMR0_P      ;da
KONEC_P
   swapf STMP,W
   movwf STATUS      ;vrnem status
   swapf WTMP,F
   swapf WTMP,w      ;ter W
   retfie         ;konec prekinitve
   
TMR0_P
   btfss UTRIPAJ      ;je utripanje vkluceno?
   goto IZKLOP_U      ;ne
   call UTRIPANJE
   bcf INTCON,T0IF
   goto KONEC_P
   
IZKLOP_U
   bcf LED1
   bcf LED2
   bcf INTCON,T0IF
   goto KONEC_P
   
;--------------------------------------------------------------------
;procedura po poteku dolocenega
;casa izmenicno vklopi pina
;procedura se klice ca vsake 4ms koliko traja cas prekinitve
;(kristal 4Mhz =1uS ukazni ciklus)
;preddelilnik 1/16 == 256*16 ==4096 us
;--------------------------------------------------------------------
UTRIPANJE
   decfsz T1,f      
   return
   movlw KOR1   ;KOR1=250x prekinitev = ca 1sec
   movwf T1   ;sem pride ca vsako sekundo
   decfsz T2,f   ;
   return      ;
   movlw KOR2   ;
   movwf T2   ;sem pride prekinitev*KOR1*KOR2   
   btfss LED1   ;gori led 1
   goto LED_ON   ;ne
   bcf LED1   ;da izklop
   bsf LED2   ;ter vklop LED2
   return
LED_ON
   bcf LED2   ;vklop LED1
   bsf LED1   ;izklop LED2
   return

   

;-----------------------------------   
;glavna procedura
;priprava portov inicializacija ...
;-----------------------------------
GLAVNI
   clrf KONTROLNI      ;brisanje registra, ki ga uprabljam za kontrole
   bsf STATUS,RP0      ;bank1
   bcf LED1      ;\
   bcf LED2      ;/ pina sta izhoda
   movlw b'11'      ;pullup portb on, preddelilnik 1/16 za TMR0 z notranjim
   movwf OPTION_REG   ;virom ure
   bcf STATUS,RP0      ;bank0
   movlw KOR1
   movwf T1
   movlw KOR2
   movwf T2
   movlw b'10100000'
   movwf INTCON      ;vklop TMR0 prekinitve
ZANKA            ;na portub so vkljuceni pullupi
   btfsc VKLOP      ;je vhod nizek ?
   goto VHOD2
   bsf UTRIPAJ      ;vkljucim utripanje
   btfss VKLOP      ;je vhod sproscen?
   goto $-1      ;ne
VHOD2
   btfsc IZKLOP      ;je drugi vhod aktiven?
   goto ZANKA      ;ne
   bcf UTRIPAJ      ;da izklop utripanja
   btfss IZKLOP      ;je drugi vhod sprosen?
   goto $-1      ;ne
   goto ZANKA      ;da
   end      ;eof
   



msmiha.zip
 Opis:

Download
 Ime datoteke:  msmiha.zip
 Velikost datoteke:  6.2 KB
 Downloadano:  11 krat


_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
msmiha
Član
Član



Pridružen-a: Sob 26 Feb 2005 16:48
Prispevkov: 115
Aktiv.: 0.49
Kraj: Slovenske Konjice

PrispevekObjavljeno: Ned Jul 31, 2005 5:45 pm    Naslov sporočila:   Odgovori s citatom

Hvala za odgovor.
Mislim pa da obstaja tudi lažja rešitev. Kaj če bi enostavno naredil dve zanke in skaka iz ene v drugo? V eni bi se odvijal proces utripanja v drugi pa bi testiral druge porte in izvajal druge operacije?

_________________
Edini način da odkrijemo meje mogočega je da, jih prestopimo in se znajdemo v nemogočem!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
msmiha
Član
Član



Pridružen-a: Sob 26 Feb 2005 16:48
Prispevkov: 115
Aktiv.: 0.49
Kraj: Slovenske Konjice

PrispevekObjavljeno: Pon Avg 01, 2005 3:12 pm    Naslov sporočila:   Odgovori s citatom

Silvo bi mi še lahko razložil kakšno funkcijo imajo pull-upi na portu b?
_________________
Edini način da odkrijemo meje mogočega je da, jih prestopimo in se znajdemo v nemogočem!
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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group