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 

PIC16F876A - Comparator

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
GregorN
Član
Član



Pridružen-a: Tor 20 Nov 2007 7:48
Prispevkov: 1162
Aktiv.: 5.84
Kraj: Maribor

PrispevekObjavljeno: Sre Jul 14, 2010 1:25 am    Naslov sporočila:  PIC16F876A - Comparator Odgovori s citatom

No kot naslov že pove, da se trudim naučiti uporabljanja komparatorjev v omenjenem PICu. Začel sem z datasheetom ter internetom in poizkušam narediti najbolj osnovno kodo, da bo komparator glede na njegov -INP in +INP prižigal ter ugašal LED diodo.

Do sedaj mi je uspelo skupaj spraviti naslednjo kodo toda mi ne uspe najbolje simulirati. V simulatorju si v logičnem analizatorju odprem C1INP (Uporabil bom prvi komparator), C1OUT in RB5. V Stimulus pa si nastavim C1INP katerega bi prožil in glede na to stanje bi komparator preklopil RB5. Ko simuliram ter prožim C1INP se na logičnem analizatorju ne zgodi nič, ne prikaže niti da sem prožil C1INP. Malce me že ura daje Smile

Koda:

;Datum: Junij 2010
;Avtor: Gregor Nikolic
   
   list p=16f876a
   #include   "P16f876a.INC"

   __config _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC &_CPD_OFF &_BODEN_OFF
      
   org      0x000
   goto   Glavni
   org      0x004

;*********************************** GLAVNI PROGRAM ********************************
Glavni

   banksel   TRISB                  ;Preidemo v primerno banko registra TRISB
   clrf   TRISB                  ;Počistimo register TRISB tako so vsi definirani kot izhod
   movlw   b'01000010'               ;Vrednost za nastavitev komparatorja
         ;  1                  1 = C1 VIN+ < C1 VIN-
         ;    0                  neinvertiran izhod prvega komparatorja
         ;      010               nastavitev dveh neodvisnih komparatorjev
   movwf   CMCON                  ;Prenesemo nastavitev v register CMCON
   banksel   PORTB
   clrf   PORTB
   btfsc   CMCON,C1OUT
   bsf      PORTB,5
   btfss   CMCON,C1OUT
   bcf      PORTB,5

   goto   Glavni


end

_________________
LP! Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 13.29
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Sre Jul 14, 2010 7:29 am    Naslov sporočila:   Odgovori s citatom

Vsakič nastavljaš CMCON in TRISB. Ne vem, vendar lahko se zgodi, da komparatorji po nastavitvah nekaj časa ne delajo. Nastavitve naredi na začetku in zanko naredi samo za nastavljanje pinov.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
GregorN
Član
Član



Pridružen-a: Tor 20 Nov 2007 7:48
Prispevkov: 1162
Aktiv.: 5.84
Kraj: Maribor

PrispevekObjavljeno: Sre Jul 14, 2010 8:48 am    Naslov sporočila:   Odgovori s citatom

Sem tako naredil in ni razlike v simulaciji :S
Koda:

;Datum: Junij 2010
;Avtor: Gregor Nikolic
   
   list p=16f876a
   #include   "P16f876a.INC"

   __config _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC &_CPD_OFF &_BODEN_OFF
      
   org      0x000
   goto   Glavni
   org      0x004

;*********************************** GLAVNI PROGRAM ********************************
Glavni

   banksel   TRISB                  ;Preidemo v primerno banko registra TRISB
   clrf   TRISB                  ;Počistimo register TRISB tako so vsi definirani kot izhod
   movlw   b'01000010'               ;Vrednost za nastavitev komparatorja
         ;  1                  1 = C1 VIN+ < C1 VIN-
         ;    0                  neinvertiran izhod prvega komparatorja
         ;      010               nastavitev dveh neodvisnih komparatorjev
   movwf   CMCON                  ;Prenesemo nastavitev v register CMCON
   
Main

   banksel   PORTB
   clrf   PORTB
   btfsc   CMCON,C1OUT
   bsf      PORTB,5
   btfss   CMCON,C1OUT
   bcf      PORTB,5

   goto   Main

end

_________________
LP! Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
GregorN
Član
Član



Pridružen-a: Tor 20 Nov 2007 7:48
Prispevkov: 1162
Aktiv.: 5.84
Kraj: Maribor

PrispevekObjavljeno: Sre Jul 14, 2010 11:58 am    Naslov sporočila:   Odgovori s citatom

Sedaj sem razmišljal da pravzaprav morem prožiti pina RA0 in RA3 kjer sta vhoda komparatorja, v simulaciji sta tipki mrtvi. Čudno mi je tudi da mi ne vstavi v register CMCON pravilne vrednosti kar je razvidno iz watch okna.

Trenutna koda;
Koda:
;Datum: Junij 2010
;Avtor: Gregor Nikolic
   
   list p=16f876a
   #include   "P16f876a.INC"

   __config _WDT_OFF &_PWRTE_ON &_XT_OSC &_LVP_OFF &_BODEN_OFF
      
   org      0x000
   goto   Glavni
   org      0x004

;*********************************** GLAVNI PROGRAM ********************************
Glavni

   banksel   TRISB                  ;Preidemo v primerno banko registra TRISB
   clrf   TRISB                  ;Počistimo register TRISB tako so vsi definirani kot izhod
   movlw   b'00001001'
   movwf   TRISA
   banksel   PORTB
   clrf   PORTB
   movlw   b'01000010'               ;Vrednost za nastavitev komparatorja
         ;  1                  1 = C1 VIN+ < C1 VIN-
         ;    0                  neinvertiran izhod prvega komparatorja
         ;      010               nastavitev dveh neodvisnih komparatorjev
   banksel   CMCON
   movwf   CMCON                  ;Prenesemo nastavitev v register CMCON
   
Main

   btfsc   CMCON,C1OUT
   bsf      PORTB,5
   btfss   CMCON,C1OUT
   bcf      PORTB,5

   goto   Main

end



ScreenShot003.jpg
 Opis:
 Velikost datoteke:  517.63 KB
 Pogledana:  19 krat

ScreenShot003.jpg



_________________
LP! Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
GregorN
Član
Član



Pridružen-a: Tor 20 Nov 2007 7:48
Prispevkov: 1162
Aktiv.: 5.84
Kraj: Maribor

PrispevekObjavljeno: Čet Jul 15, 2010 9:25 am    Naslov sporočila:   Odgovori s citatom

Še mi ni uspelo Confused ni nihče delal s komparatorji v picu? Poizkušam že vse mogoče. Upam da se najde nekdo ki ima znanja o tem. Neutral
_________________
LP! Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 13.29
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Čet Jul 15, 2010 9:53 am    Naslov sporočila:   Odgovori s citatom

Lahko da ni problem v komparatorjih, ampak v simulaciji komparatorjev.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
GregorN
Član
Član



Pridružen-a: Tor 20 Nov 2007 7:48
Prispevkov: 1162
Aktiv.: 5.84
Kraj: Maribor

PrispevekObjavljeno: Čet Jul 15, 2010 1:38 pm    Naslov sporočila:   Odgovori s citatom

Sem sestavil na testni in ne deluje. Sad
_________________
LP! Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
gumby
Član
Član



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

PrispevekObjavljeno: Čet Jul 15, 2010 8:38 pm    Naslov sporočila:   Odgovori s citatom

Nastavi banke v Main zanki, pa bo delalo... CMCON in PORTB nista v isti Wink
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
GregorN
Član
Član



Pridružen-a: Tor 20 Nov 2007 7:48
Prispevkov: 1162
Aktiv.: 5.84
Kraj: Maribor

PrispevekObjavljeno: Čet Jul 15, 2010 10:04 pm    Naslov sporočila:   Odgovori s citatom

Hvala Tibor za vso pomoč, sva usposobla komparator Smile Prilagam osnovno kodo za vse ostale. Koda je čisto toliko da dela, nisem je še minimaliziral.

Koda:

;Datum: Junij 2010
;Avtor: Gregor Nikolic
   
   list p=16f876a
   #include   "P16f876a.INC"

   __config _WDT_OFF &_PWRTE_ON &_XT_OSC &_LVP_OFF &_BODEN_OFF
      
   org      0x000
   goto   Glavni
   org      0x004

;*********************************** GLAVNI PROGRAM ********************************
Glavni

   banksel   TRISB                  ;Preidemo v primerno banko registra TRISB
   clrf   TRISB                  ;Počistimo register TRISB tako so vsi definirani kot izhod
   movlw   b'00001001'
   movwf   TRISA
   banksel   PORTB
   clrf   PORTB
   movlw   b'00000010'               ;Vrednost za nastavitev komparatorja
         ;  1                  1 = C1 VIN+ < C1 VIN-
         ;    0                  neinvertiran izhod prvega komparatorja
         ;      010               nastavitev dveh neodvisnih komparatorjev
   banksel   CMCON
   movwf   CMCON                  ;Prenesemo nastavitev v register CMCON
   
Main
   banksel   CMCON
   btfss   CMCON,C1OUT
   call   Vk
   banksel   CMCON
   btfsc   CMCON,C1OUT
   call   Izk

   goto   Main
Vk
   banksel   PORTB
   bsf      PORTB,5
   return
Izk
   banksel   PORTB
   bcf      PORTB,5
   return


end

_________________
LP! Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Č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