Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia
18F46K20 a PIC típusa. Megnézem az adatlapot hogy mit mond a bemenetek beállítására. Köszi a tippet. Köszi lidi a linkeket, megnézem hátha találok benne valami hasznosíthatót. Megpróbáltam közvetlen IO-ként a lábat üzemelni és rendesen felment magasra és adta az alacsony jelszintet is. Szóval elbizonytalanodtam hogy hardvergond lenne. De még nincs 100%osan kizárva.
Igaz, hogy nem ide tartozik, ezért csak még annyit, hogy keményforrasztással, rézlemezből is lehet ilyen feltétet készíteni, vagy egy 4mm átérőjű szűkítőt, csak azzal az a baj, hogy amelyik fúlyó nincs erre felkészítve, lehet, hogy leég, mert csökken a légáramlás sebessége a fűtőszálon.
Idézet: „Nem írtad meg a kontroller típusát, de a TRISC = 0b10000111; csak a Rx -e állítja bemenetre.” Helyes az észrevétel, ugyanis kiderült, hogy PIC18F46K20-ról van szó. Az adatlap egyértelmű: For all modes of EUSART operation, the TRIS control bits corresponding to the RX/DT and TX/CK pins should be set to ‘1’. The EUSART control will automatically reconfigure the pin from input to output, as needed.
Sziasztok.
Lenne egy bátor válálkozó ( Szilva mester ) aki elmagyarázza az A/D portok használatát? Itt az analóg részre gondolnék, hogy hogy smint lehet használni.
Ez OK, de nem bináris volt a rendelkezésre álló formátum és már az átalakítás is több konverziót igényel, ezért gondoltam, hogy akár az eredi formátumból is dolgozhat!
Mostmár várom a jelentkezését, hogy milyen formában oldotta meg! Steve
Szia!
Nem vagyok mester, csak egy lelkes amatőr. Az A/D-kről meg nem tudom, mi pontosan, amit szeretnél tudni, elég tág témakör. Alapvetően az A/D segítségével a bemeneten lévő feszültség értékét lehet digitális, a PIC által feldolgozható formába (8, 10 vagy 12 biten ábrázolva) átalakítani. Mi a kérdés? Idézet: „Lenne egy bátor válálkozó, aki elmagyarázza az A/D portok használatát?” Mi nem érthető az adatlapból, vagy a Referencia Kézikönyvből, vagy ebből a leírásból?
Sziasztok!
Azt akarom meg kérdezni hogy Kónya László úr könyve, a PIC Mikrovezérlők Alkalmazástechnikája c. könyv 3. kiadása mennyire jó választás, egy olyan kezdőnek aki Assembly-vel, és 16, 18F-ekkel szeretne foglalkozni? Úgy gondolom hogy a második kiadás jobban erről szól. Ti mit gondoltok?
Szerintem is jobb az adott témákhoz a 2. kiadás, de sokkal többet tanulhatsz a netről és itt a fórumon ( olvasd el a hozzászólásokat az elejétől, sok ismeret van benne és nézd meg az ajánlott oldalakat, linkeket!) !
Jó szórakozást a PIC táborban ! Steve
Nem túl nagy angol szókincs meg még nem hallottam a referencia kézikönyvről és még nem láttam ezt az oldalt.
Kb ennyi.
Lelkesen megértetted velem a számolást is.
Az A/D-ről minden. Hogyan tudom feszültségmérésre használni de nem a hardveres része ( fesz osztó a bemenetre) érdekel hanem a progi.
Helo!
Köszi a meg erősítést, NET-en keresztül is ismerkedek a témával természetesen. Esetleg be lehet szerezni szerinted a 2. kiadást valahonnan? Google csak Vaterát dobott ki. Majd lehet írok egy e-mailt ChipCad-nak hátha van elfekvőben egy db.
Nekem úgy rémlik, hogy a 3. kiadás lemezmellékletén megtalálható digitális formában az 1. és a 2. kiadás.
Ebből a szempontból mégiscsak a 3. a jobb választás.
Elkezdtem a soros progit megírni. Az explorer 16 alapján csináltam, ott megy is, abban mondjuk f4fj120ga010 van az 100 lábú az enyém csak 80, de átírtam melyik az usart2 rx tx cts rts, hiba nélkül lefordul de nem történik semmi.
Az a valószínűbb, hogy a saját készítésű soros modulom rossz. Mellékelem a kapcsolási rajzot, de találtam egy csomó fajtát, ezért a c1-et és c2-őt fordítva kötöttem be, mert egy rajzon meg úgy volt. Rá tudnátok nézni a kapcsolásra és arra, hogy tényleg fordítva kell e bekötni vagy simán.
A legfontosabb: a PIC-eknél nem lehet szétválasztani a HW-SW részt, az egyik a másikat alapvetően meghatározza.
Hogy hogy kell megcsinálni a progit? 1. Mekkora feszültséget szertnél mérni? 2. Ezt a PIC melyik portjára szertnéd rákötni? 3.A PIC-nek milyen refererencia feszültsége(ke)t szeretnél megadni? 4. A referencia feszültségek alapján és a PIC A/D átalakító pontosságának (hány bites) tudatában már könnyedén ki tudod számolni az LSB- legkisebb helyiértékű bit értékét 5.Ekkor már tudod, hogy mi az a legkisebb mennyiség (mV) amit elvileg egy helyesen, zajmentesen felépített áramkör esetén mérni tudsz fizikailag. 6. Min szeretnéd megjeleníteni? 7szegmenses kijelzőn, LCD-n, Nixie csöveken? mind, mind más és más meghajtást követelnek meg. Vagy esetleg nem is akarod kiíratni, csak valamit csinálni a beolvasott értékkel/ regiszterrel? 7. Most jutottál el addig, hogy egyáltalán belefogj a tényleges programozásba. 8. Ha ki akarod íratni kell keresned egy algoritmust, ami alapján a mért érték bináris értékéből egy, az általunk elfogadott decimális értéket konvertál. (Vagy táblázatból keresteted ki (lassú), vagy vagy keresel (kitalálsz) egy hatékonyabb keresést. (Helyi értékenként kerestetsz, először megnézed, hogy mi lesz a kijelzőn a legmagasabb helyi érték értéke -na ez szép mondatrész -, és így mész egészen a legalsó helyi értékig . Ezeknek a kérdéseknek a tisztázása, és megértése az egész PICezésben a lényeg.
Szia.
Szerintem a 3. kiadás a jobb választás mert egyrészt tartalmazza a 2. kiadás teljes anyagát, és maga a 3. kiadás is sokk értékes anyagot tartalmaz. Mint pl. C nyelvű programozás vagy DSP használat a PIC-en.
Igazából nincs is progi, mert az A/D egy teljes periféria. Be kell állítani, majd indítani egy mérést és kiolvasni a két regiszterét. Ennyi! Ezek között egy sem olyan jellegű probléma, ami programozási ismereteket kívánna, csupán az adatlap írásait kell szó szerint venni.
Rossz képet raktam be, ezt a kapcsolást csináltam meg.
Szia.
Elsősorban azt kérdezném meg, hogy mi az a HW-SW? Mert a pic adatlapján nem olvastam ilyet vagy csak figyelmetlen voltam és elsiklottam felette. Egy stabil ellenállás és egy termisztorból épített feszültségosztót akarok a pic RA0 lábára kötni, majd mikor már értem a lényegét bővíteném még 3 lábra. Lényegében egy hőmérőt szeretnék építeni ami majd egy 2x16-os Lcd-re fogja kiírni az értéket. A Pic tápját fogom használni a feszosztóhoz. Az adatlapon az RA2 és RA3 láb a referencia bemenet, csak ezt a két lábat használhatom annak?
Nézd még át 2-3-szor az adatlapot ( nem rosszakaratból mondom, tényleg nehéz lehet elsőre megérteni és átlátni, de lassan kikristályosodik!!) ! A referenciafeszültséget az AD használja az átalakításhoz, ezt osztja fel részekre és megmondja, hogy hanyadik részt éri el a bemenetre kapcsolt feszültséged ! Amit emlegettél, az azzal van összefüggésben, hogy referenciaként használhatod a PIC 5V-ját ( nyilván a PIC terhelésétől függően minimálisat ingadozik, ami jó tápnál mV-kat jelent, ezért nagyon sokszor megfelelő!!), vagy használhatsz szuperstabil, külső referenciát, amit csak az AD ref bemenete terhel (amiről kérdeztél és azt tényleg csak a megadott lábakra kapcsolhatod!)!
Steve
Az adatlapot böngészem most is, sőt fordítom már amennyire tudom. A kristályosodástól még messze árok nagyon.
Az 5V-ot nem referenciára akarom használni hanem az adja a tápot az osztónak és a termisztor ellenállásának a változását figyelném.
OK, de a PIC AD-je tudja az 5V-os tápját használni referenciának ( és akkor nem igényel lábat v. lábakat a referencia bejuttatása!)!
Az előbb még nem említettem,hogy a külső referencia jól jöhet akkor is, ha egy tartományt pontosabban akarsz mérni, mert pl. 10 bites felbontás --> 1024 lépcső. Ha referenciafeszültségnek 5V-ot adsz (pl. a táp!), akkor 1 lépcső 5V/1024 ~ 5mV!. Ha azonban kívülről pl. 1V-ot kap referenciafeszültségnek, akkor 1V/1024 ~1mV a felbontás ( igaz, hogy csak 1 V-os tartományban!)! Szerintem neked most simán megfelel a +5V-os táp, mint referencia és az ADRESH, mint eredmény ( így könnyebben tudod kezelni az eredményt, viszont csak 256 lépcsőd van, de hőm. mérésére ez elegendő lehet !) ! Jó munkát ! Steve
Mintha úgy rémlene nekem hogy nem lehet 1V a referencia fesz. Én vref+ nak valami minimum 2.5V ra emlékszem. Meg kell nézni az adott pic adatlapján az ELECTRICAL SPECIFICATIONS résznél.
A két Uref láb között 1V-ot értettem, tehát pl. Urefmin 2,5V a potenciál, az Urefmax 3,5V ( az adatlapot én most nem néztem, de mintha én is az általad említett értékre emlékeznék! )!
Steve
Hát..az angol rövidítésekből meg a mellettük lévő apró megnevezésből nekem nem sok jön le. Nincs véletlenül magyar adatlap?
Milyen adatlapot nézel és melyik részét ( nem olvastam vissza a topicban! )?
Steve
Nem tudtam, hogy milyen PIC-ről beszélünk...
Mit nem értesz az adatlapról ( sajnos nem tudok magyar nyelvűről!) ? Ne csak a szöveget, hanem az ábrákat is nézd!! Steve
Az angol szavakat lefordítom magyarral és próbálok belőlük értelmes mondatot kirakni. De mivel nem nagyon sikerül az értelmeshez közelítenem ezért nem is nagyon értek az adatlapból semmit.
Watt már írta, hogy ez is egy periféria és "csak" fel kell programozni.
Ne olvasd végig ha nehezen megy az angol, mert szerintem így nehezebben érted meg. Szerintem nézd meg, hogy az adott regiszterek melyik bitje mit állít ( ezeket a szokásos módon be tudod állítani !) és csak akkor keresgélj a szövegben célirányosan, ha a regiszter melletti leírásból ( + a RAJZOKBÓL, ÁBRÁKBÓL ! ) nem jössz rá az adott bit funkciójára! Próbálok Neked keresni egy mintapéldát! Steve[code=c]; Feladat: A PORTA 0.bitjén található potenciométer feszültségének konvertálása az AD segítségével ; és a kapott érték kiírása a kijelző 1.sorának 0. pozíciójától. list p=16F874A #include CBLOCK 20H Timer1 ; változók az LCD kezeléséhez, az INC-ből kiolvashatóak! Timer2 KARAK PORTD_SAVE HELY MUTATO ; a táblázatos kiírásnál használom a következő elem kijelölésére a táblázatban! SZAM ; változók az AD átalakítás eredményének feldolgozásához ( SZAM --> maga a szám, illetve a feldolgozás végén az egyesek számát tartalmazza!) SZ ; százasok számát tartalmazza T ; egyesek számát tartalmazza ENDC BANKSEL TRISD MOVLW 00010100B ; az LCD-hez PORTE lábai digitálisak, PORTA is digitális, kivéve RA0-t! MOVWF ADCON1 ; 7 bit: az AD átalakítás 10 bites eredményét balra rendezi ( ADRESH-ba jut a felső 8 bit!) ; 6 bit: az AD átalakítás konverziós sebessége Fosc/32 ; 5-4 bit: nem érdekes ; 3-0 bit: Az 'A' és 'E' port digitális, csak a PORTA,0 lesz analóg, az AD átalakító a ref.feszültséget a PIC 5V-os tápjáról kapja! CLRF TRISE ; a PORT-okat kimeneteknek állítjuk az LCD működtetéséhez! CLRF TRISD ; a PORT-okat kimeneteknek állítjuk az LCD működtetéséhez! BANKSEL PORTD ; a PORT-okat tartalmazó BANK-ra váltás MOVLW 10000001B MOVWF ADCON0 ; 7-6 bit: az AD átalakítás konverziós sebessége Fosc/32 ; 5-3 bit: az AN0-s csatornát (PORTA,0) fogjuk digitalizálni ; 2 bit: AD átalakítás nincs folyamatban ( a bit='0' ) ; 1 bit: nem érdekes ; 0 bit: Az AD modult kapcsolja be ( most kap tápot!) CALL LCD_INI ; az LCD inicializálása 2 soros, 8 bites, automatikus léptetésűre ( az INCLUDE-ban van a rutin!) UJRA: CALL Kesl2 ; Az INCLUDE fájlból használom késleltetésnek, mert két AD feldolgozás között kell egy kicsit várni -->Busy flag olvasását "helyettesíti" BSF ADCON0,2 ; indul az AD átalakítás BTFSC ADCON0,2 ; AD készen van? GOTO $-1 ; még nincs! MOVF ADRESH,W ; készen van, a felső 8 bitet berakom az akkumulátorba, MOVWF SZAM ; majd a SZAM regiszterbe! CALL SZTE ; a kapott SZAM-ot felbontom százasokra, tízesekre és egyesekre MOVLW 128 ; megadom, hogy kiírás az 1.sor 0. pozíciójától MOVWF HELY CALL LCD_POS ; ténylegesen itt állítom be CALL KIIR ; meghívom az SZTE értékeit kiíró rutint! GOTO UJRA SZTE: CLRF SZ ; törlöm a százasokat CLRF T ; és a tízeseket SZAZ_KIVON: MOVLW 100 SUBWF SZAM,F BTFSS STATUS,C GOTO TIZ_KIVON ; már nem lehetett belőle 100-at kivonni INCF SZ ; még ki lehetett vonni a százat, ezért megnövelem a százasok számát! GOTO SZAZ_KIVON ; újra próbálom! TIZ_KIVON: MOVLW 100 ; nem lehetett kivonni a százat, ezért visszaadom! ADDWF SZAM,F TIZ_KIVON_1: ; százat már nem lehetett, ezért próbálgatom a tízek kivonását! MOVLW 10 SUBWF SZAM,F BTFSS STATUS,C GOTO EGY_KIVON INCF T ; a tízesek növelése GOTO TIZ_KIVON_1 EGY_KIVON: MOVLW 10 ADDWF SZAM,F ; nem lehetett kivonni a tízet, ezért visszaadom és így a SZAM-ban lesznek az egyesek! RETURN KIIR: MOVF SZ,W ;a százasok kiírása ADDLW 30H ; a megfelelő ASCII kód megkapásához MOVWF KARAK CALL Write MOVF T,W ; tízesek ADDLW 30H MOVWF KARAK CALL Write MOVF SZAM,W ; egyesek ADDLW 30H MOVWF KARAK CALL Write RETURN #include Lcd_8_bit.inc ; az LCD rutinok "include"-olása ( ugyanabban a könyvtárban legyen, mint projekt! )! end |
Bejelentkezés
Hirdetés |