Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
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
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.
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)?
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
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....
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.. ![]() ![]() Köszönöm a segítséget mindkettőtöknek.
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 ![]()
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
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.
![]()
Ü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?
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
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.
ez így van..
Ü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?
Időben eltova, szépen egymás után. (Bit bang serial)
Üdv.
Kérhetném kicsit bővebben vagy esetleg egy példával. Köszi. Idézet: A kijelentés igaz. :yes: „A C18 fordító nem fordítja a MikroC forráskódot.”
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.
Könnyebb lenne, ha leírnád mit szeretnél...
Ü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.
Itt találhatsz mintát, de nem C18 fordítóra készültek...
Ü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.
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)
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...
Ü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.
Ü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? Idézet: Ugyanúgy, mint bootloader nélkül! A főprogram elején ki kell adni a „A Piccolo projekben PIC18F4550 esetén, Bootloader használatával hogyan lehet az A port bitjeit digitálisra állítani?”
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.
Üdv.
Köszönöm a gyors és érthető infót.
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? ![]()
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 |
Bejelentkezés
Hirdetés |