Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   595 / 1320
(#) icserny válasza frecsko hozzászólására (») Okt 27, 2009 /
 
Idézet:
„ha a kapcsolót megnyomom akkor lesz 5V-rajta.”

Az pont jó, csak nyomógomb legyen, mert utána el kell engedni (csak egy impulzust kell, hogy adjon).
(#) pajti2 válasza Csaplar hozzászólására (») Okt 27, 2009 /
 
FT232rl-nek ugyan nem néztem utána, de biztos jól van bekötve az USB tápvonala? Mármint a GND vonala. Valami furcsát látok én ott.
(#) Hp41C válasza Csaplar hozzászólására (») Okt 27, 2009 /
 
Szia!

Az MPXA6115 majdnem 1000 Ft-tal olcsóbb itt, mint az MPXA4115.
Az A/D átalakító 1100 hPa -nál/4,5V 921 kódot ad, a 200 hPa- nál /0,5V pedig 102-t. 900 hPa változásra 887 kódváltozás jut közvetlen méréssel. 1.01 hPa változás eredményez egy lépést a kódban. Egy hPa lépés 4mV feszültséglépést jelent, ez összemérhető az erősítő 2-7mV offset feszültségével.
A műveleti erősítő a (-1) szeres erősítés miatt a felbontáson nem változtat, de a skálát kifordítja: a kisebb nyomásértékhez rendeli a magasabb kódot.

A felbontást úgy lehet növelni, ha az erősítő kivonná a 700 hPa-hoz tartozó 2,37V -ot a kimenő feszültségből, és (+2) szeresen erősítené a jelet. Ekkor már kb 0.5 hPa lenne a felbontás.

Szia
(#) pepe33 válasza Hp41C hozzászólására (») Okt 27, 2009 /
 
Másik megoldás hogy vesz egy 22bites AD konvertert és akkor növelheti a felbontást, vagy megpróbálkozik digitális szenzorral mint én, és akkor nem kell az analóg résszel is vacakolni.
Én a második megoldást gondoltam égszerűbbnek, ezért a HP03MA típusú szenzor választottam.
Most épp szenzorból kinyert adatok helyes számításán dolgozok, mert a hőmérsékletváltozás még erősen befolyásolja a kapott eredményt.
(#) Hujikolp hozzászólása Okt 27, 2009 /
 
Üdv!

Ha CALL-al meghívtam egy várakozást, de a várakozásban van egy BTFSC ami onnan GOTO-val kiugrik egy másik címkére, és nem lesz RETURN , akkor az nagy baj? Csak mert a veremtár meg hasonlók miatt nem tudom, hogy mennyire gáz, vagy lehet ezt valahogy törölni?
Vagy oldjam meg máshogy?
(#) trudnai válasza Hujikolp hozzászólására (») Okt 27, 2009 /
 
Oldd meg mashogy...
(#) Norberto válasza Hujikolp hozzászólására (») Okt 28, 2009 /
 
CALL-lal meghívni egy szubrutint, és abból nem visszatérni nagyon nagy bátorság, illetve nagyon nem szép dolog. Kb. olyan, mintha valaki kiugrana ejtőernyőzni egy kisrepülőből, de aztán menet közben úgy gondolná, hogy mégsem szükséges neki az ejtőernyő és eldobná. Szóval logikátlan lépés. Inkább térj vissza retlw-vel, és a w ekkori tartalmát használd fel valami állapotjelzőnek a főprogramban vagy ilyesmi.
(#) Hujikolp válasza Norberto hozzászólására (») Okt 28, 2009 /
 
Jó ötlet! El is kezdtem ezen a logikán keresztül gondolkodni, és sikerült megoldani!
Köszi a segítséget!
(#) trudnai válasza Hujikolp hozzászólására (») Okt 28, 2009 /
 
...vagy egyszeruen ne CALL-lal hanem GOTO-val ugorj oda..
(#) Hujikolp válasza trudnai hozzászólására (») Okt 28, 2009 /
 
A CALL azért kell, mert az visszaugrik, ha lefutott a várakozási rutin. Ebben a várakozási rutinba tettem egy gomb figyelőt. De ez a gomb figyelő, csak 1x használatos, a kód elején. Többet nem kell, hogy kiugorjon a várakozásból, ha megnyomom közben a gombot. Így végül is jó, GOTO-val szerintem sokkal nehezebben lehetne megírni.
De legalább ezen is végigrágtam magam, hogy jobb-e így.
Köszi Neked is!
(#) Bul válasza trudnai hozzászólására (») Okt 28, 2009 /
 
Tényleg sokat kérdeztem...

Ez egy alacsony feszültségű szériás PIC, 2Vról is hajlandó működni, közvetlenül kapcsolnám a cellára.

Tervem szerint 3V alá nem csökken a cellafeszültség, és a töltést egy másik IC intézi. A/D-hez Si bandgap referenciát használnék, tehát a változó táp nem gond.

A "ki/bekapcsolás" félreérthető volt, bocsánat. Nem kapcsolnám le teljesen, mert csak pár uA-t fogyaszt sleep-ben, amit évekig elbír egy ilyen cella, sőt előbb megy tönkre magától.

Nem tudtam, hogy van beépített dióda, az a negatív input feszültségtől véd?

Szóval elegendő egy soros védő ellenállás? kb. mekkora értékű?
(#) Hp41C válasza Hujikolp hozzászólására (») Okt 28, 2009 /
 
Szia!

16F sorozatnál az ajánlott megoldások használhatók csak, 18F, 24F, 30F család tagjainál a pop utasítással rendbe szedheted a stack-et....

Szia
(#) Csaplar válasza icserny hozzászólására (») Okt 28, 2009 /
 
Hali

Sok jó ötletet adtatok nekem, köszi!
Nem ismerem ezt a 18F14K50-es picet, de átrajzolom a kapcsolást, mert egyébként is féltem az FT232RL forrasztásától...

Ez a HP03MA is jó lehetne, de nem tudom, hogy hol lehet beszerezni.
Esetleg meg tudnátok írni?

Köszi
Zoli
(#) pepe33 válasza Csaplar hozzászólására (») Okt 28, 2009 /
 
Ott kapható ahol a legtöbb PIC. CHIPCAD.....
(#) icserny válasza Csaplar hozzászólására (») Okt 28, 2009 /
 
Idézet:
„Nem ismerem ezt a 18F14K50-es picet”

Itt található egy kapcsolás hozzá
Itt meg sok egyéb más is...
(#) Hp41C válasza Csaplar hozzászólására (») Okt 28, 2009 /
 
Szia!

Vigyázat, az HP03M -nél a tápfeszültség ajánlott (recommended) és a tönkremeneteli (absolute) maximális feszültség határa 5.00V, a tipikus tápfeszültsége 3V. A pic I2C bemenetén az előírt minimális magas szint 0.8*Vdd.

Szia
(#) icserny válasza Hp41C hozzászólására (») Okt 28, 2009 /
 
A PIC is mehet 3,3 V-ról...
(#) mrfencer válasza El_Pinyo hozzászólására (») Okt 28, 2009 /
 
A E portot ha jól gondolom igy tudom bemenetként konfigolni:

banksel TRISE
clrf TRISE
banksel PORTE

Idézet:
„Szerk.: Az E port lábai alapból analógok is, emiatt az ADCON1 regiszterbe is be kell tölteni a megfelelő értéket!”

Hogyan tudom az portE értékét ide betölteni és majd a nekem szükséges bitet figyelni? Jelen esetben nekem a PORTE,1 kellene. (PIC16F877A)

Köszönöm!
(#) Hp41C válasza icserny hozzászólására (») Okt 28, 2009 /
 
Szia!

A pic mehet, de az LM2904 erősítő csak 5V fölött működik rendesen. 3.3V-hoz MCP60x vagy MCP600x kellene.

Szia
(#) Hp41C válasza mrfencer hozzászólására (») Okt 28, 2009 /
 
Szia!

Így kimenetnek állítottad őket.

  1. banksel  TRISE
  2. movlw  0x07   ; Bemenet minden bit ld. DS39582B-page 50
  3. movwf  TRISE
  4. banksel  ADCON1
  5. movlw   0x07
  6. movwf  ADCON1  ; Digitális minden port ld. DS39582B-page 128
(#) El_Pinyo válasza mrfencer hozzászólására (») Okt 28, 2009 /
 
Az első kérdéskörre Hp41C megadta a helyes választ!
A másik része a kérdésednek kicsit homályos.
Idézet:
„Hogyan tudom az portE értékét ide betölteni és majd a nekem szükséges bitet figyelni?”

Eredetileg kimenetnek szeretted volna a PORTE,1 lábát, hogy a kürtöt arról működtesd, ugye? Most akkor bemenet lesz a PORTE?
Az ADCON1 regiszter szolgál többek között az analóg bemenetek kiválasztására, digitálisra állítani Hp41C által leírt kódrészlettel lehet. Ha digitális bemenetként konfigurálod, akkor valamely bit tesztelő utasítással lehet az állapotát figyelni (btfss, btfsc), van más mód is, de talán ez a legegyszerűbb.
Üdv.
(#) mrfencer válasza El_Pinyo hozzászólására (») Okt 28, 2009 /
 
Köszönöm! PORTE-t sikerült kimenetnek állitani. Viszont nem értem, hogy miért nem ugy működik a progim ahogyan szeretném!
A PORTE-n lévő kimenetnek akkor kellene logiakai egynek lenni, ha a RB0-an logikai egy van mindaddig mig a RB1 nem kap logiaki egyet, de ez a része sajna nem valósul meg. Tudnátok segiteni, hogy hol kavartam el?
  1. LIST P=16F877
  2. #INCLUDE "P16F877.INC"
  3. __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
  4. ;A 0x20 egy szabad memória rész kezdő címe
  5. CBLOCK 0x20
  6. T1
  7. T2
  8. T3
  9. CLOSED
  10. GOMB
  11. ENDC
  12.  
  13. ORG 0
  14.  
  15. #define AOK PORTD,3     ;riaszto visszalyelzo /riaszto be/
  16. #define DS PORTB,0              ;nyitas erzekelo
  17. #define HORN PORTE,1    ;kürt
  18. #define S1 PORTB,1              ;riasztas nyuktazasa
  19.  
  20. START
  21.  
  22.         banksel TRISE
  23.         movlw   0x07
  24.         movwf   TRISE
  25.         banksel ADCON1
  26.         movlw   0x07
  27.         movwf   ADCON1
  28.         clrf    TRISE
  29.  
  30.  
  31.         banksel TRISC          ; Selects bank containing register TRISB
  32.         clrf    TRISC           ; All port B pins are configured as outputs
  33.         banksel PORTC           ; Selects bank containing register PORTB
  34.  
  35.         ;banksel PORTB
  36.         ;clrf   PORTB
  37.  
  38.         banksel TRISD                   ;Selects bank containing regiszter TRISD
  39.         clrf    TRISD                   ; All port D pind  are configured as outputs
  40.         banksel PORTD                   ; Selects bank containing register PORTB
  41.  
  42. ;**********************************************************************
  43. ; riaszto visszajelzo villog
  44.  
  45. ALARMOK
  46.  
  47.         ;BCF HORN                               ;kürt némítása
  48.         BSF AOK
  49.         CALL DELAY
  50.         BCF AOK
  51.         CALL DELAY
  52.         BSF AOK
  53.         CALL DELAY
  54.         BCF AOK
  55.         CALL DELAY
  56.  
  57.         goto DOOROPEN
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. ;riazto visszajelzo vege
  65. ;*************************************************************************************
  66.  
  67. ;ajtonyitas erzekeles
  68.  
  69. DOOROPEN
  70.  
  71. ;detection of the door opening
  72. ;       banksel PORTB
  73. ;       movf    PORTB,w
  74. ;       movwf   CLOSED
  75.          
  76.         MOVLW PORTB
  77.         MOVWF STATUS
  78.         BTFSC STATUS,1 ; ha a PORTB,0 = 0 akkor ugrik ALARMOK-ra
  79.         GOTO ALARMOK
  80.         GOTO ALARM
  81.  
  82.  
  83. ALARM                   ; riasztas inditasa
  84.         ;banksel PORTD
  85.         ;movf PORTD,w
  86.         ;movwf PORTD
  87.  
  88.         BSF HORN
  89.         CALL DELAY
  90.         BCF HORN
  91.         CALL DELAY
  92.         BSF HORN
  93.         CALL DELAY
  94.         GOTO PRESS
  95.  
  96. PRESS                   ; riasztas nyuktazasa
  97.  
  98.         MOVLW PORTB
  99.         MOVWF GOMB
  100.         BTFSC GOMB,1 ;ha PORTB,1 =0 akkor ugrik
  101.         GOTO ALARMOK
  102.         GOTO ALARM
  103.  
  104. DELAY
  105.  
  106.         MOVLW d'50'
  107.         MOVWF T1
  108.         DEL
  109.         MOVLW d'50'
  110.         MOVWF T2
  111.         DEL1
  112.         MOVLW d'20'
  113.         MOVWF T3
  114.         DEL2
  115.         ;NOP
  116.         ;NOP
  117.         ;NOP
  118.         ;NOP
  119.         ;NOP
  120.         NOP
  121.         NOP
  122.         NOP
  123.         NOP
  124.         NOP
  125.         DECFSZ T3,f
  126.         GOTO DEL2
  127.         DECFSZ T2,f
  128.         GOTO DEL1
  129.         DECFSZ T1,f
  130.         GOTO DEL
  131.         RETURN MOVWF T1
  132.  
  133.  
  134. END   ;PROGI VEGE
(#) icserny válasza Hp41C hozzászólására (») Okt 28, 2009 /
 
Idézet:
„A pic mehet, de az LM2904 erősítő csak 5V fölött működik rendesen.”

HP03M esetén nem is kell erősítő!
(#) icserny válasza mrfencer hozzászólására (») Okt 28, 2009 /
 
  1. MOVLW PORTB
  2.   MOVWF STATUS
  3.   BTFSC STATUS,1 ; ha a PORTB,0 = 0 akkor ...


Nem tudom, hogy ezzel mi volt a szándékod, de amit csinál, annak köze nincs ahhoz, amit a megjegyzésbe írtál!

MOVLW = MOVe Literal to W...
(#) trudnai válasza mrfencer hozzászólására (») Okt 28, 2009 /
 
Nem beszelve arrol, hogy eleg meredek dolog a PORTB-rol a STATUS-ra attolteni igy barmit is... Csak elizeled a bankselt es hasonlokat, semmi teteje igy a dolognak...
(#) Hp41C válasza icserny hozzászólására (») Okt 28, 2009 /
 
Szia!

Igazad van, az erősítő nem kell, de a DS1820 a fél fokos pontosságot csak 4.3V fölött tudja. Tudom az sem kell, mert a HP03M -ből a hőmérséklet is kiolvasható....

Szia
(#) Csaplar válasza icserny hozzászólására (») Okt 28, 2009 /
 
Nekem teljesen jó úgy, hogy PIC18F14K50 és HP03M és akkor 3.3V-ról menne az egész. És ekkor ugye nem kell az LM2904-es műv erősítő sem.
A kérdésem csupán annyi még, hogy ezzel a HP03M-es szenzorral milyen magasságértéket tudok kimutatni? Mettől meddig és milyen felbontással?

Előre is köszi!
(#) pepe33 válasza Csaplar hozzászólására (») Okt 28, 2009 /
 
A chipcadnál HP03MA kapható , aminek maximálsi tápfeszültsége 3.6V erre figyelni kell.
300 hPa -tól 1100 hPa ig mér, ami 9160m és -698m közöttinek felel meg. ( KALKULÁTOR )
HP03MA
Mivel teljesen digitális , nem kell müv. erősítő.
Legjobb megoldás szerintem ha PIC feszültségét is 3V körüli értékre rakod és a szenzort is vele közös tápról hajtod. És még kell neki egy 32.768Hz órajel is amit szerintem legegyszerűbb a PIC PWM kimenetével előállítani neki.
(#) mrfencer válasza icserny hozzászólására (») Okt 28, 2009 /
 
Értem(azt hiszem)
Akkor viszont, azt hogyan tudom megoldani, hogy az RB0-at figyeljem és ha az logikai egy, akkor ugorjon a következő utasításra, ha nulla akkor meg ugorjon egy utasítást?
A BTFSC-vel ezt akartam elérni, de ezek szerint rosszul gondoltam!
A PORTB-t azért másoltam a status-ba mert igy annak az első bitjét tudom figyelni, de akkor ha mondjuk egy saját regisztert létrehozok és abba másolom a PORTB-t ugy már jó?
Mondjuk valahogy igy?
  1. MOVF PORTB,W
  2. MOVWF CLOSED     ;sajat regiszter
(#) Hp41C válasza mrfencer hozzászólására (») Okt 28, 2009 /
 
Szia!

Például:
btfsc PORTB,0
goto B0_high
goto B0_low

Szia
Következő: »»   595 / 1320
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