Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   607 / 1319
(#) icserny válasza morgan666 hozzászólására (») Nov 20, 2009 /
 
Az adatlap megmondja:
  1. EBTRB: Boot Block Table Read Protection bit
  2. 1 = Boot block (000000-0007FFh) not protected from table reads executed in other blocks
  3. 0 = Boot block (000000-0007FFh) protected from table reads executed in other blocks

Vagyis letiltja a 0-7FFh kódterülethez való hozzáférést a programmemória többi területéről. Ez azt jelenti, hogy ha a PICOS18 vagy bármely más program ezen a területen konstans adatokat vagy táblázatot tárol, akkor nem fog hozzáférni. Így nem csoda, hogy fejreáll...
(#) kotla hozzászólása Nov 20, 2009 /
 
Sziasztok!
Nem olyan rég keltette fel a figyelmem a PIC,elég sokat olvasgattam a programozásukról és a különböző tipusairól és közben megépítettem magamnak egy égetőt is(propic2) de sajnos elakadtam és még 1 PIC-et sem tudtam égetni Na szóval: Az lenne a problémám hogy a hardware settingsnél nemtudom beálítani portnak LPT1-et pedig csatlakoztatva van a gépemhez az égető. ezt miért csinálja? A Hardware settings-ről csatolok képet!
A tápja a számítógépem tápegysége., ez gond lehet?
ha valaki tudna segíteni nagyon hálás lennék.
üdv:kotla


ui:Ha netán olyan témában szólaltam meg amit máshol kellet volna feltennem vagy éppen már nagyonsokszor elmondtatok akkor elnézést kérek de csak ebben a témában 1214 oldal van és nem nagyon van időm jelenleg az olvasásra

IC-prog_.JPG
    
(#) vizor válasza kotla hozzászólására (») Nov 20, 2009 /
 
Nem tudom, hogy az IC-Prog-nak ez-e a baja, de saját fejlesztésű programoknál működik, ha bemásolod az io.dll fájlt a \windows\system32 könyvtárba aztán restart. Ez engedélyezi az ezt használó programoknak az LPT port közvetlen kezelését. Egy próbát megér.

io.dll
    
(#) kotla hozzászólása Nov 20, 2009 /
 
Köszönöm szépen! meg is nézem hogy működik-e
(#) watt válasza vizor hozzászólására (») Nov 20, 2009 /
 
Az io.dll-t tudomásom szerint csak én használom a többi valami más módon olda ezt meg. Azért ki lehet próbálni, de szerintem nem ez a baj. Végig kell menni a szokásos beállításon, amit már oly sokszor leírtunk. Az oldalamon is lehet találni ilyen jellegű infót külünféle égetők kapcsán. Végig kell olvasni és megérteni, mi miért van.
(#) foxi63 válasza kotla hozzászólására (») Nov 21, 2009 /
 
Szia!
Az ic prog beállítása xp esetén:

Programmer: Interface
ProPic 2 Programmer Direct I/O
X Windows API


Ports Communication

X LPT 1 X Invert Data Out
X Invert Data IN
X Invert Clock
Invert MCLR
Invert VCC

settings->option menü ->misc ->xp engedélyezése

(#) slogan hozzászólása Nov 22, 2009 /
 
Sziasztok !

Nem értem mit bénázhatok el ?

A kódrészlet működik ,nyomom a buttont ,világít a led ,elengedem kialszik.
De,ha a BSF GPIO,4 helyére egy goto ,vagy call utasítást írok ,nem ugrik oda......
Vajon miéer ?

Köszi előre is !
Üdv : István


  1. START
  2.         BTFSS   GPIO,0
  3.         BSF     GPIO,4
  4.         BTFSC   GPIO,0
  5.         BCF     GPIO,4
  6.         GOTO    START

(#) Norberto válasza slogan hozzászólására (») Nov 22, 2009 /
 
Ha a jó programrészletet adod meg nekünk, ami működik, akkor nem fogjuk tudni kitalálni, hogy a call-os vagy goto-s programrészlet - amit nem adtál meg - az miért nem működik...
(#) slogan válasza Norberto hozzászólására (») Nov 22, 2009 /
 
Jogos !
Köszi !

  1. START
  2.         BTFSS   GPIO,0
  3.         GOTO    PIROS
  4.         BTFSC   GPIO,0
  5.         BCF     GPIO,4
  6.         GOTO    START
  7.  
  8.  
  9. PIROS
  10.         BSF     GPIO,4
  11.         CALL    D1
  12.         BCF     GPIO,4
  13.         CALL    D1
  14. GOTO    PIROS
(#) Norberto válasza slogan hozzászólására (») Nov 22, 2009 /
 
És mi a hibajelenség?

Ha jól látom, ennek a programnak azt kéne csinálnia, hogy ha kezdetben nem nyomsz semmit, akkor a GPIO,4-re kötött LED nem világít, ha viszont egyszer megnyomod a gombot, akkor belekerül a végtelen ciklusba, ahol ki-be kapcsolgat, a delay-nak megfelelő időértékkel. Ugye, a call-lal meghívott szubrutinból megfelelően visszatérsz, return-nel?
(#) slogan válasza Norberto hozzászólására (») Nov 22, 2009 /
 
Igen ,tökéletes a meglátás !
Így kéne működnie

Egyből ide kellett volna tennem az egész "programot" ,most megteszem.....

Most momentán az a jelenség ,hogy egyből villog GPIO,4 és nem reagál a buttonra


  1. list p=12f509, f=inhx8m
  2.  
  3. #include "p12f509.inc"
  4.  
  5.         __config _MCLRE_OFF & _CP_ON & _WDT_OFF & _IntRC_OSC
  6.        
  7.         org             0
  8.         ;goto   Debut
  9.         cblock  07h
  10.         A1
  11.         A2
  12.         A1_2
  13.         endc
  14.         org             10
  15. Debut
  16.         movlw   B'001101'
  17.         movwf   GPIO
  18.  
  19.         TRIS    GPIO                                   
  20.         movlw   H'df'
  21.         option
  22. ;---------------------------------------                                                       
  23. START
  24.         BTFSS   GPIO,0
  25.         GOTO    PIROS
  26.         BTFSC   GPIO,0
  27.         BCF     GPIO,4
  28.         GOTO    START
  29.  
  30.  
  31. PIROS
  32.         BSF     GPIO,4
  33.         CALL    D1
  34.         BCF     GPIO,4
  35.         CALL    D1
  36. GOTO    PIROS
  37. ;-------------------------------- DELAY -------------------------
  38. ; Delay = 0.6 seconds
  39. ; Clock frequency = 4 MHz
  40.  
  41. ; Actual delay = 0.6 seconds = 600000 cycles
  42. ; Error = 0 %
  43.  
  44.        
  45.  
  46. D1
  47.                         ;599996 cycles
  48.         movlw   0xD1
  49.         movwf   A1
  50.         movlw   0x4F
  51.         movwf   A2
  52.         movlw   0x02
  53.         movwf   A1_2
  54. D1_0
  55.         decfsz  A1, f
  56.         goto    $+2
  57.         decfsz  A2, f
  58.         goto    $+2
  59.         decfsz  A1_2, f
  60.         goto    D1_0
  61.  
  62.                         ;4 cycles (including call)
  63.         return
  64. ;----------------------------------------------------------------
  65.  
  66.  
  67.  
  68.  
  69. END
(#) Norberto válasza slogan hozzászólására (») Nov 22, 2009 /
 
Két dolog tűnik fel elsőként, amit javítani kellene, ha valóban úgy van megírva a forrásban, mint ahogy most itt kinéz:

1:

movlw B'001101'
movwf GPIO

A GPIO regiszter 8-bites, tehát nem szabad csak 6 bittel megadni a fenti módon!

2:

A GOTO PIROS előtt, ahogy látom, nincs tabulátor? Ezt is javítani kellene, ha így van a forráskódodban is, a sor legelején a címkék helye van, aztán legalább 1 tabbal elválasztva kell lennie az utasításnak, és ezt követően legalább 1 szóközzel, de méginkább 1 tabbal elválasztva kell lennie az operandusoknak.
(#) slogan válasza Norberto hozzászólására (») Nov 22, 2009 /
 
Dolgok javítva !

Idézet:
„movlw B'00001101' így jó lesz szintaktikailag ?
movwf GPIO”


Hiba ugyan úgy fenáll .....

Input lábak 2,2k val "+" ra húzva vannak és lenyomáskor teszem földre ,ha fontos lehet....
(#) trudnai válasza slogan hozzászólására (») Nov 22, 2009 /
 
Hogy van az a gomb bekotve? Amugy ha egyszer bemegy a PIROS nevu reszbe onnan ugye nem johet ki. A masik, hogy nincs debouncing, tehat ez a jelenlegi elrendezes inkabb jumperes / dip swithes kapcsolasokra emlekeztet mikor a beallitasok a keszulek bekapcsolasa elott tortennek meg.
(#) trudnai válasza slogan hozzászólására (») Nov 22, 2009 /
 
Idézet:
„Input lábak 2,2k val "+" ra húzva vannak és lenyomáskor teszem földre ,ha fontos lehet....”


Az rendben van, de nincs debouncing, es a PIROS-bol sem jon ki.. Amugy az ORG 0 utana nncs GOTO Debut vagy hasonlo, igy az ORG 0 es ORG 10 kozti memoria szemet miatt a program lehet hulyeseget csinal...
(#) slogan válasza trudnai hozzászólására (») Nov 22, 2009 /
 
Szia !
Kapcsoló bekötése a képen.
A
Idézet:
„debouncinget”
sajnos nem értem

Idézet:
„es a PIROS-bol sem jon ki.. Amugy”


mert ott még nem tartok ....

Tegyem vissza a
Idézet:
„GOTO DEBOUT”
-ot ?

kapcsolo.JPG
    
(#) trudnai válasza slogan hozzászólására (») Nov 22, 2009 /
 
Idézet:
„Tegyem vissza a „GOTO DEBOUT ”-ot ?”


Nem kell, ha azt az ORG 10-et kiveszed... a 12F509 kulonben is baseline, abban nincs interrupt kezeles, szoval teljesen felesleges a reset vektort es az init reszt elvalasztani.

"debouncing" --> prellezes, avagy perges ha ugy jobban tetszik. Ugye minden mechanikus kapcsolonak van ez a nem tul jo tulajdonsaga, hogy nehany ms-ig ide-oda kapcsol akar tobb szazszor is. Ezt kell vagy elektronikusan vagy szoftveresen kiszurni. (itt ebben a temaban is kitargyaltuk ezt jonehanyszor, ha rakeresek a keresovel meg fogod talalni a megoldasokat )
(#) slogan válasza trudnai hozzászólására (») Nov 22, 2009 /
 
Köszönöm szépen !
(#) bubu hozzászólása Nov 23, 2009 /
 
Sziasztok!

USART kommunikációval küzdve float tipust szeretnék küldeni.
  1. putrsUSART ("Hello World!");
  2.     sprintf (buf,"%c %f %c",STARTCHAR, pi,STOPCHAR);
  3.     putsUSART(buf);

Probáltam startchar nélkül is, de úgy sem jó.
A pi értékét szeretném kiratni, ami 3,14, float tipusú.
Az ellenőrzésre betett helló világ visszajön, de a konvertált érték nem.
A start és stop char:
  1. #define STARTCHAR    \0
  2. #define STOPCHAR    \0


Van valami ötletetk mit rontottam itt el?Esetleg hogy helyes?

A segítségeteket előre is köszönöm!
(A google barátom most nem igazán tudott segíteni.)
üdv, bubu
(#) trudnai válasza bubu hozzászólására (») Nov 23, 2009 /
 
A \0 gondolom ideje-koran lezarja a stringedet (jelen esetben a buffer leges-legelejen). Emiatt nem fog kuldeni semmit sem. Nem tudom miert raktad ezeket a START/STOP dolgokat bele amigy?
(#) bubu válasza trudnai hozzászólására (») Nov 23, 2009 /
 
Hali,

Köszi a tippet, de igy sem akar menni. most igy né ki:

  1. char buf[50];
  2. float pi=3.14;
  3. ...
  4.         while(1)
  5.         {
  6.          putrsUSART ("Hello World!");
  7.          sprintf (buf,"%f",pi);
  8.          putsUSART(buf);
  9.          Delay (1000000);
  10.         }


Te is így gondoltad?
(#) icserny válasza bubu hozzászólására (») Nov 23, 2009 /
 
Nálad milyen PIC és milyen fordító van? Nálam MPLAB_8.15 és C18-Student Edition-v3.22 van telepítve, de ebben nem látok putrsUSART() függvényt, csak putsUSART() van.
(#) trudnai válasza icserny hozzászólására (») Nov 23, 2009 /
 
Azt hiszem ez a CCSC-ben van (marmint ha rakeresek a tutrsUSART es putsUSART fuggvenyekre akkor CCSC dolgok jonnek elo, de amugy en sem ismerem). Ha jol latom a putrsUSART() a ROM-ban tarolt stringek elkuldesere valo, mig a masik a RAM-ban taroltakra.
(#) trudnai válasza bubu hozzászólására (») Nov 23, 2009 /
 
Passz, masra nem tudok gondolni, minthogy nehany forditonal (ill. C konyvtarnal) alapbol nem szokas a printf-nel a float tamogatast belerakni, merthogy attol erosen egno a kod merete. Elkepzelhetonek tartom, hogy itt is errol van szo, es egyszeruen csak lenyeli a %f-et de nem kezd vele semmit sem. Utana kellene olvasni, hogy valoban lehetseges-e ez es hogy mikent lehet a floatos printf-et beizzitani.

UI: Ja, es elotte probaldd ki egesz tipusuval, hogy mukosidik-e ez a putsUSART, tehat sprintf(buf, "%u", 1234); es utana a putsUSART(buf);
(#) bubu válasza trudnai hozzászólására (») Nov 23, 2009 /
 
Kiprobáltam és így sem megy.

Valakinek van ötlete? Ezek szerint tényleg nem egyszerű, mert egész kiiratása sem megy.
(#) icserny válasza bubu hozzászólására (») Nov 23, 2009 /
 
Még mindig nem árultad el, hogy milyen PIC, milyen fordító...
(#) trudnai válasza bubu hozzászólására (») Nov 23, 2009 /
 
Meg egy utolso otletem van: Lehetseges, hogy a compiler szepen kioptimalizalja a kifejezeseket, es mivel a valtozod nem valtozik, ezert optimalizalas gyanant a RAM stringbol csinal egy ROM stringet... (csak spekulacio)

Tehat ha ugyanaz mukodik putrsUSART() -tal (az "R"-es valtozattal, akkor valoszinuleg ez tortenik. Ill. amit meg meg lehet probalni, hogy a pi valtozot volatile-nak megjelolni, hatha akkor az optimalizacio kimarad a kepletbol.

Na jo, meg egy otlet: Lehet valami hand-shaking be van kapcsolva amitol a kommunikacio leall -- ill. a PIC ezt nem veszi figyelembe, kiloki az kuldendo adatot, de a terminal meg nem all keszen a fogadasra. xon-xoff ill rts-cts-dtr ilyeneket kellene keresgelni.
(#) bubu válasza icserny hozzászólására (») Nov 23, 2009 /
 
Bpcsánat!
PIC18F45K20
MPLAB MCC18
(#) bubu válasza trudnai hozzászólására (») Nov 23, 2009 /
 
Találtam egy egész jó megoldást:
  1. putrsUSART ("\t Homerseklet:\t");
  2.         pih = (int) T;
  3.         pil = (int) ((T-pih)*ACCURACY);
  4.  
  5.     sprintf (buf,"\t%i,%i",pih,pil);
  6.         putsUSART(buf);


És it belehet állítani a tizedes pontosságot is.
Már csak akkor van baj, ha más kommunikációval együtt kell használni. pl i2c-n lekérdezett adatot továbbítok.
(#) trudnai válasza bubu hozzászólására (») Nov 23, 2009 /
 
De nem azt irtad az iment, hogy a putsUSART() nem mukodik?
Következő: »»   607 / 1319
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