Fórum témák

» Több friss téma
Fórum » Pic soros adat
 
Témaindító: csaba7575, idő: Ápr 6, 2010
Témakörök:
Lapozás: OK   2 / 2
(#) vlacexx hozzászólása Ápr 22, 2010 /
 
Sziasztok. PIC 18F4455 -t hasznalok es egy programot szeretnek irni ra ami serialon kuld adatot, csak kuld es nem fogad, lenne erre valakinek egy pelda programja? Amugy C-ben ha lehet, kosz.
(#) icserny válasza vlacexx hozzászólására (») Ápr 23, 2010 /
 
Itt biztosan találsz! Bővebben: Link
(#) vlacexx válasza icserny hozzászólására (») Ápr 23, 2010 /
 
kosz szepen , belenezek
(#) csaba7575 válasza Matt hozzászólására (») Máj 8, 2010 /
 
Sziasztok. Szóval próbálgattam és elég sok helyen nézelődtem. De sehol nem találtam megfelelő példát. A tiedet Matt nem tudom lefordítani, mert hibákat ír ki. A lényeg kapok adatott.pl:+000.0? Jön ez az adat folyamatos majd, ha van mozgás a hardver előtt, akkor a soros portón pl.:+050.5? És ez folyamatosan változik. Most nekem arra lenne szükségem, hogyha ettől nagyobb pl.+050.0? Akkor bekapcsol egy Led. Ebben kellene a segítség. Azért nem is jelentkeztem próbálkoztam ,hogy egyedül megoldom a példa programmal, amit Matt adott, de nem sikerült és most már szorít az idő. Segítségetek előre is köszönöm.
(#) zenetom hozzászólása Júl 27, 2010 /
 
Hali!
PIC 18F1320-al szeretnék adatot fogadni PC soros portról. Az adatot PC-ről delphiben küldöm ki, elvileg jók a beállítások.
Ennek a kódnak működnie kéne, nem? :

  1. START  
  2.         CLRF LATB
  3.         CLRF PORTA
  4.         CLRF LATA      
  5.         MOVLW b'01111111'   ; mindegyik digitális port
  6.         MOVWF ADCON1
  7.         MOVLW b'000000'   ;
  8.         MOVWF TRISA
  9.         MOVLW b'00000000'   ; mindegyik kimenet
  10.         MOVWF TRISB
  11.        
  12.  
  13.  
  14. INIT_SERIAL
  15.         BSF LATB,4
  16.         BSF LATB,1
  17.         MOVLW b'0001000'        ;az RB4 az RX
  18.         MOVWF TRISB
  19.  
  20.         MOVLW d'110'
  21.         MOVWF SPBRG                     ;sebesség beállítása
  22.         MOVLW b'00100000'       ;az 5. bit a transmit enable/disable bit!
  23.         MOVWF TXSTA                     ; TXSTA: TRANSMIT STATUS AND CONTROL REGISTER
  24.  
  25.         MOVLW b'10000000'
  26.         MOVWF RCSTA                     ;RCSTA: RECEIVE STATUS AND CONTROL REGISTER
  27.  
  28. MAIN
  29.         RCALL GETBYTE
  30.         BSF LATB,6                      ;felvillan a LED ha kész
  31.        
  32.         BRA MAIN
  33.  
  34. GETBYTE
  35.         BTFSS PIR1,5            ;ha 1 a PIR1 regiszter 5. bite akkor van fogadott adat
  36.         BRA GETBYTE
  37.         MOVF RCREG,W
  38.         RETURN


A neten is találtam kódot és ott is csak ennyit állítottak be (azthiszem).
Vagy még be kell valamit állítani?
(#) potyo válasza zenetom hozzászólására (») Júl 27, 2010 /
 
A TRISB beállításánál szerintem hiányzik egy nulla még a végéről, és így az RB3 lesz bemenet, az RB4 pedig kimenet.


PIR1 ötödik bitjének van neve, valószínűleg RCIF, és használd inkább úgy, hogy PIR1, RCIF a PIR1, 5 helyett, olvashatóbb a kód tőle. Ugyanez érvényes LATB-re is, csak ezeknél nem olyan vészes a szám sem, mert esetleg LATB, 6 helyett mondjuk LATB, RB6 az majdnem ugyanaz.
(#) zenetom válasza potyo hozzászólására (») Júl 27, 2010 /
 
De vaksi vagyok és tényleg, köszi.
Még jó hogy az előbb rosszul raktam bele az égetőbe a PIC-et és nem akarja beégetni, VDD voltage level errort írkál mindenre. Ráadásul csak 12F675-öm van még. Remélem nem a FET szállt el a PICKit2-ben, mert azt utálok cserélni
szerk.: Ritka rossz érzés, nem tudom kipróbálni, mert beadta a kulcsot vagy a pic, vagy az égető
(#) zsema hozzászólása Márc 29, 2011 /
 
Sziasztok!

PIC16F877-hez (20MHz) szeretnék illeszteni egy MC14489-es SPI kompatibilis kijelzőmeghajtót. Be is állítottam a PIC-ben az MSSP modult SPI Master módra. CKP,CKE a periféria kívánalmai szerint beállítva.

Csatolom az idődiagrammot, hogy egyszerűbb legyen. (Amúgy pedig az adatlap 8. oldala)

A gondom az, hogy a periféria display - a kijelzőre irandó BCD számjegyek - regisztere 24 btes, és az órajel kocogása mellett folyamatos 24 bitet vár el. A PIC SSPBUF regisztere 8 bites. Tehát az első byte elküldése után fel kell töltenem újra SSPBUF regisztert még 2x, és azt küldeni ki újra. De eközben az órajel szalad.

Hogyan tudok kiküldeni folyamatos 24 bitet? Vagy valami más hiba lehet?

Ha az órajel leosztást beállítom 16x-osra vagy 64x-re, akkor lenne időm állítani SSPBUF értékét, de tele kell pakolnom a kódot NOP-okkal, hogy a lassú órajel szerinti mintavétel még a jó értéket találja?


Magyarázat: a program egyszerű, de viszonylag pontosabb időzítésre kellene, így nagy könnyebbség lenne nekem, ha a 7 szegmenses kijelző multiplexálása nem zavarna be az időzítésekbe.

Előre is köszönöm a segítséget!
(#) El_Pinyo válasza zsema hozzászólására (») Márc 29, 2011 / 1
 
Idézet:
„De eközben az órajel szalad”

Ez nem igaz! Az órajel master módban csak addig megy, amíg a 8 bitet ki nem küldi a bufferből. Ha elfogy az adat a bufferből, akkor addig nem megy tovább az órajel, amíg új adattal nem töltöd fel a buffert. Szerintem vagy más jellegű hiba van, vagy rosszul van felkonfigurálva az SPI.
(#) zsema válasza El_Pinyo hozzászólására (») Márc 29, 2011 /
 
Köszönöm. Ez nekem valahogy nem jött le az adatlap alapján. Tényleg máshol volt a hiba: az engedélyezést túl hamar levettem, mert nem vizsgáltam az átvitel végét.
(#) icserny válasza zsema hozzászólására (») Márc 29, 2011 /
 
Idézet:
„CKP,CKE a periféria kívánalmai szerint beállítva.”
Arra vigyázni kell, hogy a Microchip a CKE bit beállítását pont fordítva értelmezi, mint ahogy normális helyeken szokás!
Következő: »»   2 / 2
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem