Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   940 / 1320
(#) n_yálastrubadúr válasza potyo hozzászólására (») Márc 25, 2011 /
 
Degáz vagyok köszi, amúgy ott vagyok, hogy előosztás nélkül timr0-val az rb0-án, megszakítással mérném az időt ledekkel jelezve a biteket a portb-n. Tsop-val Csak az 1-eket nézem, de lehet az 4mhz előosztás nélkül, hogy az eredmény 2? A 2 egyes között, mert én ezt nagyon keveslem. Addig nem is megyek tovább még nem biztos az idő. Megszakításkor elmentem a tmr0-át majd kilépéskor törlöm, de szerintem a kiírás a főprogramba maximum a megszakítás rutint méri és írja ki a portb-re.
BCF INTCON,0
BTFSS PORTB,7
RETFIE
MOVF TMR0,W
MOVWF TIMER
MOVWF SAVE
INCF HOLE,F
MOVFW SAVE
CLRF TMR0
RETFIE
(#) watt válasza menyus hozzászólására (») Márc 25, 2011 /
 
Az AD bemenetet 1k impedanciával kell meghajtani. Próbáld lehúzni 1k-val az egyenirányító kimenetét, és próbálj nagyobb kondit használni, ha hullámos lenne a feszültség. A soros 10k elmaradhat.
Az IC kimenetére is kisebb ellenállás kell, és nagyobb kondi.
Az AD elé közvetlenül tegyél soros 1k-t is.
(#) icserny válasza menyus hozzászólására (») Márc 25, 2011 /
 
Ha jól látom, fordítva kötötted be a bemeneteket. A programban ehhez igazodva invertáltad a kimenetet (CMCON regiszter CINV bitje = 1)?
(#) menyus válasza icserny hozzászólására (») Márc 26, 2011 /
 
Hopp, 1 hiba.. a CINV bit "0" ra volt állítva...Köszi. Megcsinálom watt instrukciójának megfelelően az átalakításokat és utána próba..

Addig is köszönöm
(#) menyus válasza icserny hozzászólására (») Márc 26, 2011 /
 
Bár a CINV bit nem megfelelő beállítása miatt legfeljebb fordítva billeg a kimenet..vagy nem? Ettől függetlenül működik. Az a nem mindegy hogyan kérdezem le (btfsc / btfss) a kimenetét. Nem is működött elsőre, csak én nem a CINV bit et fordítottam meg hanem átírtam a feltételeket....
(#) menyus válasza watt hozzászólására (») Márc 26, 2011 /
 
Megcsináltam az átalakításokat amiket írtál, jelentem sokat javult a helyzet! Sőt úgyis fogalmazhatnék hogy jó lett! Az 1 k a kétszerező kimenetén ugyan jócskán besöntöl, mert eddig V nagyságrendű feszültségugrások is előfordultak a bemeneti jel függvényében. Jelenleg a bemeneti jeltől függően kb. 3 - 5 mV (gondolom a mikrofon által felvett környezeti alapzaj..) és 300 mV között változó értékeket mérek. Valamely minimális időbeli késés a 4,7u kisülése miatt így is maradt, de közel nem másodperces nagyságrendű mint előtte. Ez így már tökéletesen használható. A fene gondolta volna hogy a bemeneti impedancia képes így megszívatni. Mert szerintem az volt a fő gond hogy az AD bemenete nem volt lehúzva az 1K val. És persze a 4,7u is azon keresztül sül ki, de az érdekes az hogy a jelenség ami számomra a gondot okozta akkor is megvolt amikor a 4,7 u még nem volt berakva a mostani helyére..!

Most úgy tűnik hogy jó lesz. Ha pl rákoppintok egy nagyot az asztalra a csavarhúzóval akkor nem billen be az áramkör, ha elszámolok háromig akkor igen. Persze ez már az impulzusszámlálás és a kiértékelés utáni végeredmény. Jelenleg úgy tesztelgetem hogy a regiszter tartalmát az értékelés után az eepromba iratom, így látom hogy milyen jellegű és időtartamú zörejek mekkora impulzusszámot generálnak. Igy ki tudom kísérletezni azt az optimális értéket amikor minden kósza ajtócsapódásra még nem lép működésbe az áramkör, csak kellő számú impulzus beesése esetén. Meg persze a kimenet lekérdezésének idejével (azaz a "mintavételezés" idejével) is el lehet játszani...Ennek a beállítása már türelemjáték, mint minden analóg jellegű dologé ahol nem csak 0 ban és 1 ben kell gondolkodni.. És persze az általad említett akusztikus szűrés is van a kapcsolásban a műveleti erősítőnél. Persze nem mondom hogy ha majd elmegy a ház előtt egy Harly Davidson a maga 0,3 Hz es kipufogási utemével és az óriási dinamikájával, arra nem kapcsol majd be . De ezekkel az egyszerű módszerekkel ez a max eredmény ami szerintem elérhető. Összességében kb. ez az amit szerettem volna.

Köszönöm a segítséget mindkettőtöknek.

micamp2.JPG
    
(#) n_yálastrubadúr hozzászólása Márc 26, 2011 /
 
Jó reggelt!
A főprogramban elhelyeztem egy késleltetést ami,majd törli a portb-t, és így megint random értékek jönnek ki. A szegény ember szkópjával megnéztem a jelalakot. Kiderült minden gomb 10 1est és 10 0-át tartalmaz egy ciklusidőben, összesen 9 van belőle 1 mp-ben, a többi szünet. A Girder egy 14-bites hexaszámot rendel a gombokhoz. egyelőre nagyon bonyolult és hosszadalmas és korántsem biztos az ötletem a bitek helyének pontos meghatározásához. Valakinek van egy egyszerű kulcsa, ötlete, köszönöm
(#) kissi válasza veress11 hozzászólására (») Márc 26, 2011 /
 
Szia Gabi!

Beolvasod a portot, kimaszkolod a megfelelő biteket, ahol a hexa kapcsoló van ( ANDWF ), majd eltolod a kapott biteket, hogy a megfelelő helyiértékre kerüljenek (pl. RLNCF ) és már meg is van a beolvasott szám, mehet a kiírás!

Steve
(#) bankimajki hozzászólása Márc 26, 2011 /
 
Sziasztok, valaki legyen olyan kedves és avasson be abba a dologba hogy mit is kellene "string fv." alatt értenem. Egy egyszerű példán jó lenne ha megértetnétek velem. Előre is köszönöm.
(#) Pepebá hozzászólása Márc 27, 2011 /
 
Üdv.
Az MPLAB tudja a MikroC forráskódot fordítani? Amennyiben igen, hogyan?
Hogy lehet egy port adott bit-jéről 8 bytes adatot beolvasni?
(#) n_yálastrubadúr hozzászólása Márc 27, 2011 /
 
Jó reggelt!
Próbálkoztam, gondolkodtam. De mindig ugyanaz, teljesen látom ez így biztosan nem jó. Ha nincs megszakítás,csak a sima főprogram, és ott várok 1-et majd nullázom a tmr0-át aztán 0-át várok és az ismét egynél lehívom a tmr0-át és kiírom portb-re. akkor úgy működik ahogy kell, az úgy jó. De megszakítás az kell mert bármikor jöhet egy infra csomag, és akkor már biztosan valótlan értékeket mutat. Röviden a program és a megszakítás
  1. ORG     4
  2.         BCF             INTCON,0
  3.         BTFSS   PORTB,7
  4.         RETFIE 
  5.         MOVF    TMR0,W
  6.         MOVWF   PERIOD
  7.         CLRF    TMR0
  8.         RETFIE
  9. ;--------------
  10. ;program       
  11. ;--------------
  12. HA
  13.         BTFSS   INTCON,0
  14.         GOTO    HA
  15.        
  16.         MOVF    PERIOD
  17.         MOVWF   PORTB
  18.  
  19. OVER
  20.         GOTO    OVER
(#) icserny válasza Pepebá hozzászólására (») Márc 27, 2011 /
 
Az MPLAB semmilyen forráskódot nem tud fordítani, csupán egy fejlesztői környezetet biztosít. Az MPLAB alá telepített, vele együttműködő fordító és linker (Language Tool = nyelvi eszköz) kell a fordításhoz.

A MikroElektronika fordítói azonban saját fejlesztői környezetet használnak. Állítólag dolgoznak az MPLAB-ba történő integráláson, de én nem láttam még ennek a tényleges megvalósítását.
(#) n_yálastrubadúr hozzászólása Márc 27, 2011 /
 
  1. MOVF    PERIOD,W

ez így van..
(#) Pepebá válasza icserny hozzászólására (») Márc 27, 2011 /
 
Üdv.
Köszi. Igen értem, rosszul tettem fel a kérdést.
Akkor vagy MPLAB vagy MikroC környezetben kell programozni. A C18 fordító nem fordítja a MikroC forráskódot.
Az adott port bit-jéröl történő byte adat beolvasásáról C -ben adnál információt?
(#) Hp41C válasza Pepebá hozzászólására (») Márc 27, 2011 /
 
Időben eltova, szépen egymás után. (Bit bang serial)
(#) Pepebá válasza Hp41C hozzászólására (») Márc 27, 2011 /
 
Üdv.
Kérhetném kicsit bővebben vagy esetleg egy példával.
Köszi.
(#) icserny válasza Pepebá hozzászólására (») Márc 27, 2011 /
 
Idézet:
„A C18 fordító nem fordítja a MikroC forráskódot.”
A kijelentés igaz. :yes:
(#) Pepebá válasza icserny hozzászólására (») Márc 27, 2011 1 /
 
Ezt értem, csak azt nem tudom hogy tudok kiküldeni vagy olvasni a példánál maradva az RB7-n 1 bit-nél több adatot. Azt tudom hogy a be-kimenetet be kell állítani.
Az 1 bit-es adatokkal nincs is gondom.
(#) Hp41C válasza Pepebá hozzászólására (») Márc 27, 2011 /
 
Könnyebb lenne, ha leírnád mit szeretnél...
(#) Pepebá válasza Hp41C hozzászólására (») Márc 27, 2011 1 /
 
Üdv.
DS18B20 hőmérő szenzor adatait akarom beolvasni, PIC18F4550 A port 5. bitjén (RA5)
A szenzor adatlapja, az 1wire leírása meg van.
Idáig jutottam: reset, jelenlét jel meg van, 55h-t kellene kiküldeni és beolvani az azonosítót 64 bit (8+48+8)
Erre nem tudom a megoldást.
(#) Hp41C válasza Pepebá hozzászólására (») Márc 27, 2011 /
 
Itt találhatsz mintát, de nem C18 fordítóra készültek...
(#) Pepebá válasza Hp41C hozzászólására (») Márc 27, 2011 1 /
 
Üdv.
Köszönöm, de ilyen példa programjaim vannak MikroC-re, (a help-je is tartalmaz, igaz DS1820-t).
Az a baj hogy nagyon kezdő vagyok a PIC-ben (C-ben) és még gondot jelent a több include, header file-t tartalmazó projekt áttekintése.
Kérdésem: 55h kiírása és adat beolvasás egy port adott bitjéről. A protokolt (1wire) ismerem.
(#) Hp41C válasza Pepebá hozzászólására (») Márc 27, 2011 /
 
Szia!

Ahogy elnézem a mintapéldában a következő nem áll rendelkezésre a C18 környezetben:
#define DQ PIN_C7 // DS18B20
output_low(DQ),
input(DQ),
output_float(DQ).

A konkrét esetben átírható a következőkre: (RA5-re)
  1. void output_low(void)
  2. {
  3.  LATAbits.LATA5 = 0;
  4.  TRISAbits.TRISA5 = 0;
  5. }
  6.  
  7. void output_float(void)
  8. {
  9.  TRISAbits.TRISA5 = 1;
  10. }
  11.  
  12. int8 input(void)
  13. {
  14.  return (PORTAbits.RA5);
  15. }

Az eljárások elég bonyolultak, de a többi utasítással / eljárással a C18 megbírkózik. A delayus lehet még kritikus, de biztos van helyette valami. Ha nem lenne, az órajel ismeretében kellő számú nop() is megteszi...
(#) Pepebá válasza Hp41C hozzászólására (») Márc 27, 2011 /
 
Üdv.
Köszi. Amit írtál azt értem, a minta példa még sötét.
Próbálkozom a megértésével.
(#) Pepebá hozzászólása Márc 28, 2011 /
 
Üdv.
A Piccolo projekben PIC18F4550 esetén, Bootloader használatával hogyan lehet az A port bitjeit digitálisra állítani?
Ahogy értelmeztem Bootloader használata esetén ezen config beaállítások maradnak, nem a Piccolo4550.h configja.
A Bootloader configját honnan lehet megtudni?
Vagy nem jól értelmezem?
(#) icserny válasza Pepebá hozzászólására (») Márc 28, 2011 /
 
Idézet:
„A Piccolo projekben PIC18F4550 esetén, Bootloader használatával hogyan lehet az A port bitjeit digitálisra állítani?”
Ugyanúgy, mint bootloader nélkül! A főprogram elején ki kell adni a
  1. DISABLE_ALL_ANALOG();
makróhívást, ami az
  1. CMCON  = 0b00000111;  
  2. ADCON1 = 0b00001111;
utasításokkal egyenértékű.


A bootloader CONFIG beállítása ugyanaz, mint amit a piccolo-4550.h-ban olvashatsz. De ennek nincs köze az A port analóg funkciójához.
(#) Pepebá válasza icserny hozzászólására (») Márc 28, 2011 /
 
Üdv.
Köszönöm a gyors és érthető infót.
(#) vaszily hozzászólása Márc 28, 2011 /
 
Sziasztok!
Most kezdtem el a PIC-ekkel foglalkozni. Nagyon sokat olvasgattam a fórumon és arra jutottam,hogy assemblyben kezdenék hozzá! Kérdésem az lenne ,hogy a CBLOCK címet hol tudom megnézni,hogy nekem melyik az ideális?
(#) proli007 válasza vaszily hozzászólására (») Márc 28, 2011 /
 
Hello!
Az adatlapon a "REGISTER FILE MAP", vagyis a regiszter fájl térképén megnézed hol vannak a "General
Purpose Register"-ek, vagy is az általad általánosan használható regiszterek. Tábla mellett a címtartomány jelölve van.
üdv! proli007
(#) vaszily válasza proli007 hozzászólására (») Márc 28, 2011 /
 
Köszönöm a gyors választ!
Következő: »»   940 / 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