Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   805 / 1216
(#) Pali79 válasza Pali79 hozzászólására (») Jún 5, 2016 /
 
Az elv már megvan, már csak a kivitelezés van hátra. Azt találtam ki, hogy a számból kivonok 10-et és megnézem, hogy az eredmény pozitív-e. Ha igen akkor újból levonok 10-et. Ha már az eredmény negatív akkor hozzáadok 10-et. Ha megszámolom hányszor vontam le, akkor megvan a tízesek száma és a maradék is.
(#) Pali79 válasza Pali79 hozzászólására (») Jún 5, 2016 /
 
Hát szinte biztos, hogy nem a legelegánsabb megoldás, de a szimulátor szerint működik:
  1. Start
  2.                 movlw   .10
  3.                 subwf   szam,f
  4.                 btfsc   STATUS,C
  5.                 incf    tizesek
  6.                 btfsc   STATUS,C
  7.                 goto    Start
  8.                 movlw   .10
  9.                 addwf   szam
  10.                 movf    szam,w
  11.                 movwf   egyesek
(#) don_peter válasza Pali79 hozzászólására (») Jún 5, 2016 /
 
Az osztás nem kevesebb lépésből van meg?
89%10
Maradék az egyesek.
89/10
Eredmény a tízesek.
A hozzászólás módosítva: Jún 5, 2016
(#) benjami válasza don_peter hozzászólására (») Jún 5, 2016 /
 
Hát... nem. C-ben biztos hogy rövidebbnek tűnik, de nem az. Egyébként meg erre való a szimulátor, hogy kipróbáljuk.
(#) Pali79 válasza don_peter hozzászólására (») Jún 6, 2016 /
 
Ezért írtam, hogy assembly. C-ben csak ennyit írsz és a fordító megoldja helyetted, de ha megnézed mire fordult le, szinte biztos vagyok benne, hogy sokkal hosszabb mint amit én írtam.
Egyébként csak a két egymás utáni C bit ellenőrzés piszkálja a csőrőm, de egyenlőre nem tudtam jobbat.
(#) don_peter válasza benjami hozzászólására (») Jún 6, 2016 /
 
Értem.

Pali79: Fura ez a C.
Nem néztem amúgy mit fordít le, de gondoltam megkérdezem
Lassan rászánom magam, hogy letöltsem az új MPLAB-ot (X-et), kíváncsi leszek, hogy az mennyire sok sallangot fordít majd bele a projektekbe.

Más:
Ha már itt tartunk.
MPLAB X-nél is külön kell letölteni a fordítókat?
Tehát 10-12-16-os PIC-eknél XC8, 18-as családnál XC18 és 32-es családnál XC32?
Vagy itt egyben vannak a fordítók?

A rég megírt programok amelyeket Hi-Tech és C18-ban írtam kompatibilisek lesznek az új X fordítókkal?
Mik a tapasztalatok?
(#) Lamprologus hozzászólása Jún 6, 2016 /
 
PIC24FJ256GB106 leírását tanulmányozom ... angol tudás hiányában kicsit elkeveredtem ...

Valaki segítene, hogy az alábbi lábak mire is valók:
VBUS
VUSB
VDDCORE/VCAP
(#) icserny válasza Lamprologus hozzászólására (») Jún 6, 2016 /
 
VBUS - USB feszültség host módban (5V)
VBUSON - USB OTG módban külső törltéspumpa vezérlése
VBUSSST - USB OTG mód belső töltéspumpa visszacsatolás

VUSB - az USB irnterfész (vagy SIE) tápfeszültsége (3,3V)

VDDCORE/VCAP - ha a mag tápfeszültség (2,5 V?) belső LDO-val történik, akkor ide egy pufferkondenzátort kell kötni (a földre megy a másik láb). Ha pedig letiltjuk a belső LDO-t, akkor itt kell bevinni a mag számára a tápfeszültséget.

Magyarázat: az USB illesztő jelszintje 3,3 V (max. 3,6 V lehet a D+, D- vonalakon). Host módban (OTG vagy állandó host) azonban 5 V-ot is ki kell adni a csatlakozó eszköznek. Ez némi bonyodalommal jár...
A hozzászólás módosítva: Jún 6, 2016
(#) kissi válasza Pali79 hozzászólására (») Jún 6, 2016 /
 
Idézet:
„Egyébként csak a két egymás utáni C bit ellenőrzés piszkálja a csőrőm, de egyenlőre nem tudtam jobbat.”


Én hozzáadok tízet ( visszaadom !), mikor már nem tudta kivonni !
(#) Hp41C válasza Pali79 hozzászólására (») Jún 6, 2016 /
 
A piclist -et linkeltem be többször, de két helyiérték esetén nem érdemes áttérni.
(#) benjami válasza don_peter hozzászólására (») Jún 6, 2016 /
 
Az MPLAB X csak a keretrendszer az ASM fordítóval, ahhoz is kell külön telepíteni a C fordító(ka)t. Simán használhatod benne a régi C18, C30, C32, hitech C stb. fordítókat is. Az XC sorozatból a szám a bitszámot jelenti, tehát az XC8 lefedi az összes 8 bites családot (PIC10, 12, 16, 18), az XC16 a 16biteseket, az XC32 meg a 32biteseket. Ez értelmesebb elnevezés szerintem mint a régi sorozatnál. Az XC-t még nem próbáltam a régi MPLAB-ban, de nem zárom ki, hogy az is használható.
A sallang: amit fordít, az attól függ, milyen verziót használsz. A free sajnos az optimalizálás kihagyásán felül még büntetésből további sallangokat is tesz bele, a pro verzió bekapcsolt optimalizációval azért egész használható, ha tudod mit milyen módon írj meg.
Remélem előbb-utóbb az MC észbe fog kapni a fordítói árképzésében ha még jobban elterjed az ARM család az ingyenes C/C++ fordítóival (az ATMELT, amihez 8 bites kategóriában is jól használható ingyenes C fordító van mondjuk jól felvásárolta).
(#) don_peter válasza benjami hozzászólására (») Jún 6, 2016 /
 
Természetesen PRO módban használnám az új fordítókat is.
Kaptam egy jó ajánlatot, így lehet áttérek rá.
Csak ne legyen rosszabb mint az előzők.
(#) Lamprologus válasza icserny hozzászólására (») Jún 6, 2016 /
 
VBUSA PIC állítja elő az 5V-os feszültséget? Mekkora a terhelhetősége?

VUSB Az USB rész blokkvázlata alapján van a PIC-ben egy "USB 3,3V regulator". Ez a VUSB lábra adott tápfeszből (3,3V) csinál 3,3V-ot, vagy a VBUS lábra adott 5V-bol csinál 3,3V-ot és azt adja ki a VUSB lábon? Vagy mi célt szolgál az a regulator?
(#) Zsora válasza Lamprologus hozzászólására (») Jún 6, 2016 /
 
A VBUS feszültséget nem (egy)maga a PIC állítja elő, hanem külső tápot vagy kapcsolóelemeket vezérel (PWM jellel).
A PIC-en a VBUS láb az bemenet, tehát csak detektálásra, összehasonlításra van.
Nézd meg az adatlap 210. oldalán a 18-6 és 18-7 ábrákat!
A hozzászólás módosítva: Jún 6, 2016
(#) cross51 válasza Lamprologus hozzászólására (») Jún 6, 2016 /
 
A VUSB láb a belső 3.3V LDO kivezetése a configban általában van egy ENVREG bit (vagy ilyesmi), ami engedélyezi a belső LDO-t vagy kikapcsolja, ha engedélyezve van általában egy 10μ tantál megy rá, ha ki van kapcsolva akkor külső 3.3V, ha 5V-ot kötsz rá több mint valószínű, hogy a SIE-t kinyírja és lehet a Host-al sem tesz jót.

A VBUS-t én mindig 5V-ra kötöttem nem néztem sose, hogy mit csinál a PIC, ha nincs rákötve feszültség.
(#) nagym6 hozzászólása Jún 6, 2016 /
 
Üdv.
PIC18F46K22 PWM kimenőjelet szeretnék TMR2, és pld. CCP4, de ez mindegy melyik. Nem találom, hogy hol lehet beállítani melyik portra menjen a jel, portc, vagy portd valamelyik lenne jó. Annyit találtam, hogy CCPTMRS1 regiszterben tudom a TMR2-höz hozzárendelni a CCP4-et.
Nem találok CCPxCON regisztert, gondolom más van helyette.
A program basic, de közvetlen regiszterek írásával működtetném.
Köszönöm.
(#) Pali79 válasza kissi hozzászólására (») Jún 6, 2016 /
 
Ha megnézed én is pont ezt csinálom, de csak azért nem tudtam kiküszöbölni a C bit vizsgálatát, hogy csak akkor növeljem a tízesek számát ha valóban kell is. Ha a máshova teszem a növelést akkor nem jól számol.
(#) nagym6 válasza nagym6 hozzászólására (») Jún 6, 2016 /
 
Már csak az lenne a kérdés, a kimenetet hogy tudom kiválasztani, melyik lábon legyen a PWM.
(#) Bakman válasza nagym6 hozzászólására (») Jún 6, 2016 /
 
Nem valamelyik CONFIG regiszterben van?
(#) nagym6 válasza Bakman hozzászólására (») Jún 6, 2016 /
 
Ott nincs, ha jól értelmezem. Érdekes, hogy az adatlapon van PWMxCON, 1,2,3-hoz, de semmi részletesebb ezekről a regiszterekről nincs. Más PIC típusnál leírtak szerint nincs a config reg.-ben portválasztás. Belebújok jobban az adatlapba.
Találtam mintapéldákat, ott sincs portválasztás.
Köszi.
A hozzászólás módosítva: Jún 6, 2016
(#) Pali79 válasza nagym6 hozzászólására (») Jún 6, 2016 / 1
 
Nem lehet állítani, hogy melyikre menjen, fix helye van. Adatlap 9. oldal.
(#) nagym6 válasza Pali79 hozzászólására (») Jún 6, 2016 /
 
Akkor nem csoda, hogy nem találtam.
Köszi.
(#) Pali79 hozzászólása Jún 6, 2016 /
 
Egy kicsit korán örültem. Tök jó ez a rutin, ha nem pont 10 az a szám amit szét kellene bontani. Vagyis még ezzel sincs baj, ha csak egyszer fut le a rutin amíg a szám 10. Ha többször akkor már nem jó, mert folyamatosan növeli a tízesek értékét.
(#) kissi válasza Pali79 hozzászólására (») Jún 6, 2016 / 1
 
Valóban, de én így gondoltam:
  1. Start
  2.                 movlw   .10
  3.  Start1:
  4.                subwf   szam,f
  5.                 btfss   STATUS,C
  6.                 goto    nincs_benne
  7.                 incf    tizesek
  8.                 goto    Start1
  9.  nincs_benne:
  10.                 movlw   .10       ; felesleges, mert w-ben ez van !
  11.                 addwf   szam
  12.                 movf    szam,w
  13.                 movwf   egyesek
A hozzászólás módosítva: Jún 6, 2016
(#) Pali79 válasza kissi hozzászólására (») Jún 6, 2016 /
 
A lényege ugyan az és a problémája is: ha a "szam" változó értéke 10 és többször is lefut a rutin amíg az értéke nem változik, a "tizesek" értéke folyamatosan növekszik.
(#) kissi válasza Pali79 hozzászólására (») Jún 6, 2016 /
 
Az nem lehet, mert carry csak addig van, amíg nem negatív az eredmény ( figyeltél rá, hogy btfss-et írtam ?! ) !

  1. addwf   szam
  2.                 movf    szam,w
  3.                 movwf   egyesek


ehelyett használhatod a rövidítés érdekében:
  1. addwf   szam,w
  2. movwf   egyesek
A hozzászólás módosítva: Jún 6, 2016
(#) Pali79 válasza kissi hozzászólására (») Jún 6, 2016 /
 
Ha 10-ből kivonok 10-et az még nem negatív. Ez itt a gond.
(#) kissi válasza Pali79 hozzászólására (») Jún 6, 2016 /
 
És az miért baj? 10-ben meg is van a 10 ! Kiírni is úgy kell, hogy egy '1'-es a tízesek helyénmeg egy '0' az egyesek helyén !
szerk.: előtte a tizesek-et nullázod ?!
A hozzászólás módosítva: Jún 6, 2016
(#) Pali79 válasza kissi hozzászólására (») Jún 6, 2016 /
 
Már megfejtettem: a gond az volt, hogy az "egyesek" és "tizesek" változók az aktuális értékeket tartalmazták mikor beléptek a rutinba. Ha ilyenkor a "szam" értéke még mindig 10 akkor a "tizesek" értéke növekedik 1-el. Ha újra a rutinra megyünk és az "szam" értéke még mindig 10 és a "tizesek" értéke még mindig 1 akkor mire a rutin végére érünk a "tizesek" értéke már 2 lesz. És ez így tovább.
Tehát a rutin legelején törölni kell a regisztereket és biztosítani kell, hogy az ugrással nem a legelejére menjen.
(#) kissi válasza Pali79 hozzászólására (») Jún 6, 2016 /
 
Idézet:
„szerk.: előtte a tizesek-et nullázod ?!”


Jár így az ember !
A hozzászólás módosítva: Jún 6, 2016
Következő: »»   805 / 1216
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