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 in kontrola 16-ih led diod
Pojdi na stran 1, 2  Naslednja
 
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
glavič
Član
Član



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pon Dec 27, 2004 10:57 pm    Naslov sporočila: icon_idea PIC in kontrola 16-ih led diod Odgovori s citatom

Rad bi kontroliral 16ledic, tako da bi porabil maksimalno 3pine.
Ena izmed rešitev je SAA1064 (static mode), vendar je predrag za to aplikacijo.
Doma sem nato našel 2 kosa 74HC595, ki je serialIN in paralelOUT.

Spisal sem proceduro, ki pošlje na HC en byte >
Koda:
HC595_SEND
   MOVWF   HC595_DATA
   MOVLW   H'08'
   MOVWF   HC595_BITCOUNT
HC595_SEND_LOOP
   RLF   HC595_DATA,F

   BTFSS   STATUS,C
   BCF   PORTA,HC595_DATA_PIN
   BTFSC   STATUS,C
   BSF   PORTA,HC595_DATA_PIN

   BSF   PORTA,HC595_CLOCK_PIN
   BCF   PORTA,HC595_CLOCK_PIN

   DECFSZ   HC595_BITCOUNT,F
   GOTO   HC595_SEND_LOOP

   BSF   PORTA,HC595_LATCH_PIN
   BCF   PORTA,HC595_LATCH_PIN

   RETURN


... in nato v glavnem programu naredil sledeče >
Koda:
   CLRF   TEMP

START
   MOVF   TEMP,W
   CALL   HC595_SEND
   INCF   TEMP,1
   CALL   DELAY_1S
   GOTO   START


problem je da stvar ne deluje kot bi morala ;(
kaj dobim na izhodu (levi del je LSB [0123 4567]) >
Koda:
0000 0000
1000 0000
0100 0000
1010 0000
0101 0000
1010 1000
0101 0100
1010 1010
0101 0101
.
.
.

in nato se zadnja dva ponavljata.
izgleda kot da je izhod samo shiftan za en premik, le da enkrat doda 0 drugič 1.

v čem je problem?
mogoče dela čip pravilno le da jaz tega nevem?

lp
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: Pon Dec 27, 2004 11:27 pm    Naslov sporočila:   Odgovori s citatom

Tole se v zanki vrti v nedogled ? ... sicer sama procedura izgleda logično. Nisem sicer pogledal datashet za 74HC595



Koda:
START
   MOVF   TEMP,W
   CALL   HC595_SEND
   INCF   TEMP,1
   CALL   DELAY_1S
   GOTO   START

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



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Pon Dec 27, 2004 11:30 pm    Naslov sporočila:   Odgovori s citatom

Da, to se vrti v nedogled zgolj za testiranje..

Citiram:
Output shift register
Output shift registers transform serial data into parallel data. On every rising edge of the clock, the shift value from data line, stores it in temporary register, and then repeats this cycle 8 times. On a signal from copied from the shift register to input register, thus data is transformed from serial into parallel data.


Datasheet > http://www.datasheetcatalog.com/datasheets_pdf/7/4/H/C/74HC595.shtml
Res nevem kaj bi lahko bilo narobe?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Oliver
Član
Član



Pridružen-a: Sre 27 Okt 2004 13:36
Prispevkov: 39
Aktiv.: 0.16
Kraj: Ljubljana

PrispevekObjavljeno: Tor Dec 28, 2004 3:40 pm    Naslov sporočila:   Odgovori s citatom

Kar se programa tiče, bi rekel, da je v redu. Pri tem predpostavljam, da so registri, ki jih uporabljaš na isti strani in je ta stran tudi izbrana. Jaz bi na tvojem mestu preveril, če ni morda kaj narobe s povezavami na vezju. Najlažje boš vezje preveril takole: na data in clock pa morda tudi strobe linijo vzporedno poveži ledice (z ustreznimi predupori) in potem v rutini po vsaki spremembi katere od teh linij pokliči tisti delay za kakšno sekundo. Morda za debug izvajaj strobe kar po vsakem clocku, tako da lahko sproti preverjaš še izhode iz 595-ke.

LP, Oliver
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
glavič
Član
Član



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Tor Dec 28, 2004 4:28 pm    Naslov sporočila:   Odgovori s citatom

Oliver je napisal/a:
Kar se programa tiče, bi rekel, da je v redu. Pri tem predpostavljam, da so registri, ki jih uporabljaš na isti strani in je ta stran tudi izbrana. Jaz bi na tvojem mestu preveril, če ni morda kaj narobe s povezavami na vezju. Najlažje boš vezje preveril takole: na data in clock pa morda tudi strobe linijo vzporedno poveži ledice (z ustreznimi predupori) in potem v rutini po vsaki spremembi katere od teh linij pokliči tisti delay za kakšno sekundo. Morda za debug izvajaj strobe kar po vsakem clocku, tako da lahko sproti preverjaš še izhode iz 595-ke.

Uporabljam PIC16F628, ki ima samo eno stran.

Registri so na naslovu $0020 dalje.
Koda:
   CBLOCK H'0020'
      TMP_W, TMP_STATUS
      HC595_DATA, HC595_CLOCK, HC595_LATCH, HC595_BITCOUNT
      COUNT1, COUNT2, COUNT3
      TEMP
   ENDC


Mislim, da ima vse pravilno povezano.
Shema in 2 slikci protoboarda so pripete >>>



shema.jpg
 Opis:
Shema
 Velikost datoteke:  62.38 KB
 Pogledana:  98 krat

shema.jpg



proto1.jpg
 Opis:
Protoboard 1
 Velikost datoteke:  123.4 KB
 Pogledana:  61 krat

proto1.jpg



proto2.jpg
 Opis:
Protoboard 2
 Velikost datoteke:  114.03 KB
 Pogledana:  59 krat

proto2.jpg


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Oliver
Član
Član



Pridružen-a: Sre 27 Okt 2004 13:36
Prispevkov: 39
Aktiv.: 0.16
Kraj: Ljubljana

PrispevekObjavljeno: Tor Dec 28, 2004 11:28 pm    Naslov sporočila:   Odgovori s citatom

glavič je napisal/a:

Uporabljam PIC16F628, ki ima samo eno stran.


Registri so razporejeni v 4 "banks", jaz sem to morda malo netočno prevedel v stran. Ne vem kaj bi bil slovenski izraz, banka se mi namreč malo čudno sliši. Kakorkoli že, pri doseganju registrov je treba biti na pravi banki (strani Wink ). Za to je zelo primeren makro ukaz BANKSEL imeregistra, ki sam pravilno postavi RP bite, ki določajo banko (stran). V tvojem primeru si vse registre definiral v banki 0 in domnevam, da to ni problem.

Citiram:

Mislim, da ima vse pravilno povezano.


Jaz pa mislim, da imaš žici za clock in strobe zamenjani Wink . To bi tudi razložilo 1010.... V zanki se osemkrat izvede strobe in na koncu še en clock namesto obratno, tako kot je mišljeno in tudi napisano. Zato se pri vsakem številu v shift register prenese samo prvi bit , ki je pri sodiih številih pač 0, pri lihih pa 1.

LP, Oliver
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
glavič
Član
Član



Pridružen-a: Pon 17 Maj 2004 23:12
Prispevkov: 321
Aktiv.: 1.36
Kraj: Grosuplje

PrispevekObjavljeno: Sre Dec 29, 2004 12:04 am    Naslov sporočila:   Odgovori s citatom

Citiram:
Jaz pa mislim, da imaš žici za clock in strobe zamenjani Wink . To bi tudi razložilo 1010.... V zanki se osemkrat izvede strobe in na koncu še en clock namesto obratno, tako kot je mišljeno in tudi napisano. Zato se pri vsakem številu v shift register prenese samo prvi bit , ki je pri sodiih številih pač 0, pri lihih pa 1.
Sedaj se pa počutim bedasto Embarassed
Stvar sedaj deluje.
Hmm, malo me je zavedla dokumentacija tega čipa >
- za pin 11 piše da je SHIFT REGISTER CLOCK INPUT
- za pin 12 piše da je STORAGE REGISTER CLOCK INPUT
Hvala Oliver in Silvo.

Sedaj sem dodal še en HC595 (16 bitni izhod) in stvar deluje kot mora.
P.S. HC595_SEND rutino sem malo spremenil, tako da pošilja 16bitno število na HC595 čipa.

Ta način je precej cenejši od SAA1064, saj je 74HC595 le 100SIT, krmili se pa le na treh pinih (n-čipov).

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
KRAPman
Član
Član



Pridružen-a: Sre 23 Nov 2005 14:35
Prispevkov: 115
Aktiv.: 0.49
Kraj: Maribor

PrispevekObjavljeno: Sre Dec 21, 2005 8:55 pm    Naslov sporočila:   Odgovori s citatom

Pozdravljeni!
Glavič poskušal sem narediti podoben projekt (v bistvu za začetek čisto enak Laughing ) kot je tale tvoj z 8LEDicami. Realizacija pravtako z 74HC595. tu pa mi nastopi problem. Povezal sem vse pravilno (sem 99%) ampak na OUT pinih 595-ke se dogajajo čuda : vsi pini so high (oziroma zgleda kot da preskakujejo 0-->5v-->0 ...itd) čeprav dam na vhod shifterja serijo B'00000001' (mogla bi goreti le ena LEDica ne? na katerem pinu pa ? Q0 al Q7? ). Nato sem poskušal še narediti TOČNO tako kot je tvoja shema in tvoja koda, situacija pa je še vedno ista. Kaj bi lahko bilo narobe?

Hvala za odgovor
Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Sre Dec 21, 2005 9:15 pm    Naslov sporočila:   Odgovori s citatom

Ce se vrednosti premikajo gor in dol (napetostni nivoji) po vseh izhodnih pinih, potem jih ocitno sofira en taktni signal.

Kaj sploh zelis narediti ? Ce bi rad uporabil doticni shifter kot 1:8 demultiplekser, potem moras najprej vpisati v shift register vseh 8 bitov (to sofira SHcp), potem pa to vrednost prenesti v storage register (to naredi STcp). STcp "latcha" (slovensko ?) vrednost iz shift registra na izhode (ce je OE v ustreznem stanju).

Po tvojem neverjetno neuporabnem opisu tezav brez kakrsnekoli sheme sklepam, da ti poganjas STcp skupaj (oz. vsaj sinhrono) s SHcp, ceprav tega v bistvu noces poceti; sele ko je vrednost (vseh osem bitov, ce jih toliko uporabljas) v celoti vpisana v shift register das en pulz na STcp, da se premakne na izhode. Ce je ob tem OE ves cas aktiven (dol), ne bo nic utripalo, ampak bo samo nova 8-bitna vrednost zamenjala staro.

V datasheetu za doticni cip je to vse lepo razlozeno (in to kar na vrhu prve strani - za nepotrpezljive).
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
KRAPman
Član
Član



Pridružen-a: Sre 23 Nov 2005 14:35
Prispevkov: 115
Aktiv.: 0.49
Kraj: Maribor

PrispevekObjavljeno: Čet Dec 22, 2005 11:28 pm    Naslov sporočila:   Odgovori s citatom

@Sokrat
Najprej hvala za tvoj hiter odg. Da, poskušam narediti demux 1:8. Kar se glede PICa tiče mislim da dela vse OK, vendar "za ziher" prilagam .ASM kodo :

Koda:

....
HC595_SEND
         MOVWF   HC595_DATA
         MOVLW   H'08'
      MOVWF   HC595_BITCOUNT
HC595_SEND_LOOP
      RLF         HC595_DATA,F
      BTFSS     STATUS,C
      BCF        PORTB,0 ;  PORTB, 0 = HC595_DATA_PIN
                                                                   ; = Ds-->PIN14
      BTFSC    STATUS,C
      BSF        PORTB,0;   PORTB, 0 = HC595_DATA_PIN
                                                                   ; = Ds-->PIN14      
      
      BSF        PORTB,1;  PORTB, 1 = HC595_CLOCK_PIN
                                                                   ; = SHcp-->PIN11      
      BCF        PORTB,1;  PORTB, 1 = HC595_CLOCK_PIN
                                                                   ; = SHcp-->PIN11
      


      DECFSZ  HC595_BITCOUNT,F
      GOTO      HC595_SEND_LOOP
      
      BSF         PORTB,2;  PORTB, 2 = HC595_LATCH_PIN
                                                                   ; = STcp-->PIN12
      BCF        PORTB,2;  PORTB, 2 = HC595_LATCH_PIN
                                                                   ; = STcp-->PIN12
      
      RETURN


;              *****************************
;              **  RESET :  main boot routine  **
;              *****************************

RESET      MOVLW   B'00000111'   
      MOVWF   CMCON
      BSF   STATUS,RP0               
      MOVLW   B'11010111'   
      MOVWF   OPTION_REG   
      CLRF   INTCON      
      MOVLW   B'00000000'
      MOVWF   TRISB                  
      MOVLW   B'11111111'   
      MOVWF   TRISA
      BCF   STATUS,RP0   
      CLRF   PORTB      
      ;

START       
      MOVLW   B'00000001'
         CALL      HC595_SEND
         CALL      DELAY
         GOTO      START
      END


Torej, če prav razumem bi mi moralo na izhodu Q0 goreti LED, na ostalih izhodih pa ne. Pri meni pa so high vsi izhodi. Glede utripanja pa sem ugotovil vzrok - home-made napajalnik Confused .

Sheme ne bom pripenjal, ker sem uporabil isto kot Glavič. PIC pa je model 16F627. Kakšna ideja kaj bi še lahko šlo narobe?

Lp



IMG_0387.JPG
 Opis:
Testna plošča_01
 Velikost datoteke:  909.37 KB
 Pogledana:  58 krat

IMG_0387.JPG


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Čet Dec 22, 2005 11:46 pm    Naslov sporočila:   Odgovori s citatom

Tukaj pise, da ima ukaz RLF dva parametra - prvi je register, katerega vrednost rotiras, drugi pa 0 ali 1 in od tega je odvisno kam se spravi rezultat. A je to analogno tvoji kodi ?

Tako na hitro ne zgleda nic narobe - max. frekvenca takta za doticni cip je precej visja, kot je tvoj signal, ce je vse prikljuceno pravilno, bi moralo delati.

Sicer se napake najlazje odkrije s simulacijo oz. vstavljanjem breakpointov ("breakpoint" je lahko tudi neskoncna zanka) - ali obstaja kaksno orodje v katerem bi lahko program simuliral ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Pet Dec 23, 2005 9:16 am    Naslov sporočila:   Odgovori s citatom

Zakaj imaš pa upore vzporedno z LED-icami vezane?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
KRAPman
Član
Član



Pridružen-a: Sre 23 Nov 2005 14:35
Prispevkov: 115
Aktiv.: 0.49
Kraj: Maribor

PrispevekObjavljeno: Pet Dec 23, 2005 4:11 pm    Naslov sporočila:   Odgovori s citatom

@Sokrat
Citiram:

Tukaj pise, da ima ukaz RLF dva parametra - prvi je register, katerega vrednost rotiras, drugi pa 0 ali 1 in od tega je odvisno kam se spravi rezultat. A je to analogno tvoji kodi ?

Da, uporabljam include datoteko za moj tip PICa (torej P16F627.INC) v kateri je definirano : F EQU H'00000001' ter
W EQU H'00000000'
za pač lažje branje assemblerske kode (F - shrani v register, ki je definiran kot prvi parameter funkcije RLF; W - shrani v temp. register W). Glede simulatorja pa je tak, da doma imam MPLAB, vendar ga ne znam preveč dobro uporabljat Confused (nisem se niti še toliko poglabljat v to). Bom pa poskusil (takoj ko bo dovolj časa za to) usposobit simulator.
@NeoTO
Trenutno doma nisem imel primernih uporov za 5V(upornost napajalnika na testni plošči)-->LED (3v), sem pa imel še nekaj takih po 470 Ohm in sem vezal 2x470 vzporedno, kar nanese 235Ohm, kar je primerno za LEDico Wink

Hvala obema za trud!

Lp, postam v kratkem
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Pet Dec 23, 2005 4:29 pm    Naslov sporočila:   Odgovori s citatom

Aha. No, ce se ti ne ljubi ukvarjati s simulatorjem, potem lahko se vedno uporabljas neskoncne zanke kot "breakpoint" za kljucnimi deli kode (npr. za delom, ki rotira vrednost in jo posilja na izhod, itd.), ampak to je precej ucinkovit nacin za zapravljanje casa (v istem casu bi se najbrz naucil uporabljati simulator Laughing ).
Nazaj na vrh
Skrit 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 Dec 23, 2005 4:37 pm    Naslov sporočila:   Odgovori s citatom

Glede uporov ter diod - na fotografiji se bolj slabo vidi a izgleda kot, da so upori vzporedno k diodi?
_________________
lp
Silvo
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
Pojdi na stran 1, 2  Naslednja
Stran 1 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