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   36 / 1207
(#) kiskorutiti válasza vgyre hozzászólására (») Dec 29, 2009 /
 
üdv : köszönöm a választ megpróbáltam az rb4/pgm negatívra tettem egy 1kohm ell..
de sajna nem jó , ugyan azt csinálja .
(#) kiskorutiti válasza (») Dec 29, 2009 /
 
üdv : megpróbálom még egyszer a képeket feltenni
(vagyis bekapcsolni a monitort)
(#) vgyre válasza kiskorutiti hozzászólására (») Dec 29, 2009 /
 
Szia!
Az általad használt égetőnek van egy 7407-es puffert használó változata. Próbáld meg azzal.
Gyula
(#) kiskorutiti válasza vgyre hozzászólására (») Dec 29, 2009 /
 
építsek egy másik égetőt !
ok
van egy 74ls04 az jó hozzá ?
(akkor megcsinálom ha jó)
csak nem tudom , hogy mit hova kössek !
(#) Amjad hozzászólása Dec 29, 2009 /
 
Helo.
Nekem egy más számára nagyon egyszerű problémám lenne. Az alábbi kis asm-ben nem értem, hogy a PORTB-nek miért csak az első két bitje válltozik!? Mindnek kéne, de Mplab Watch ablakban lesve a PORTB csak 11000000 és 00000000 értéket váltogatja. Kezdő vagyok, és sehogy sem jövök rá a hibára. Megköszönném, ha valaki felvilágosítana.


LIST P=16F887 ; XXX
#INCLUDE "P16F887.INC" ; YYY

__CONFIG _CONFIG1, _CP_OFF & _WDT_OFF & _BOR_ON & _PWRTE_ON & _LVP_OFF & _PWRTE_ON & _MCLRE_ON & _CPD_OFF & _FCMEN_ON & _IESO_ON & _DEBUG_OFF

;
cblock 0x20
counter1
endc


org 0x0000

banksel OSCCON

bcf OSCCON,6
bcf OSCCON,5
bcf OSCCON,4
bsf OSCCON,0

banksel TRISB
clrf TRISB
banksel PORTB

loop
movlw B'11111111'
movwf PORTB
movlw h'5'
movwf counter1

loop1
decfsz counter1
goto loop1


movlw B'00000000'
movwf PORTB
movlw h'5'
movwf counter1

loop2
decfsz counter1
goto loop2


goto loop

End
(#) El_Pinyo válasza Amjad hozzászólására (») Dec 29, 2009 /
 
Szia!
A helyzet az, hogy a B port 0-5 lába alapból analógként van konfigurálva a reset hatására! A port inicializálásakor törölni kell az ANSELH regisztert, ekkor az említett lábak digitálisak lesznek. Bővebben lásd: adatlap
Üdv.
(#) Amjad válasza El_Pinyo hozzászólására (») Dec 29, 2009 /
 
Helo.
Köszönöm, sikerült. Nem megy még igazán az adatlap olvasás (értelmezés), de valahol el kell kezdeni.
Még egyszer kösz!
(#) pajti2 hozzászólása Dec 29, 2009 /
 
Általános dolog pic-eknél (mindegyiknél, nem csak a 16f887-nél), hogy az A/D modul tipikusan be van kapcsolva reset utáni initnél, és a hozzárendelt vezetékezése analógra van konfigurálva (külön át kell őket állítani digitálisra, ha inkább arra van szükséged). Úgy sejtem, ennek történeti okai lehetnek. Csak ez az egy ilyen modul típus van. A többi beintegrált modul alapból kikapcsolva szokott lenni / lábak digit bemenetnek állítva.
(#) potyo válasza pajti2 hozzászólására (») Dec 29, 2009 / 4
 
Nem történelmi, hanem elektronikai. Digitális lábra ha féltáp körüli analóg feszültséget kapcsolsz, akkor a bemeneti pufferen áram folyik, ami akár tönkre is teheti a melegedés miatt, de felesleges fogyasztást biztosan okoz. Ezért ahol analóg mennyiség megjelenhet, azok a lábak analóg módban indulnak, a digitális puffer így le van választva, és nullára van húzva. A láb így belülről le van választva, csak a két védődióda fogja meg, hogy ne kószáljon el a tápokon túlra. Digitális lábon meg ugye nemnagyon várható analóg jelszint, mert nincs értelme olyan áramkörnek.

Maga az AD átalakító (vagy modul) nincs bekapcsolva, csak a bemeneti digitális puffer van leválasztva reset után.

De az oka neked miért új információ? Heti-kétheti rendszerességgel el van mondva a PIC-es témákban, hogy miért analógként indulnak a lábak.
(#) watt válasza potyo hozzászólására (») Dec 30, 2009 / 1
 
Idézet:
„Heti-kétheti rendszerességgel el van mondva a PIC-es témákban, hogy miért analógként indulnak a lábak.”

Tanusíthatom.
(#) kiskorutiti hozzászólása Dec 30, 2009 /
 
üdv : a 74ls04 jó pic égetőhöz 7407 helyett ?
már csináltam kettőt de egyik se jó !
felismeri de beírni nem lehet vele mi lehet a baj ?
az MCLR lábon van 13.01 V mégse jó már a
RB4/PGM lábat is rátettem a VSS-re egy 1 kohm ell...
és SEMMI
Tudna valaki ebbe segiteni
előre is köszike ....
(#) vgyre válasza kiskorutiti hozzászólására (») Dec 30, 2009 /
 
Szia!
Tudtommal nem jó. Használhatsz a 7407 helyett esetleg 7405 vagy7406-ost. Azonban ez esetben módosítani kell a programban a port beállításait, mivel a 05 és a06 invertáló. Amúgy a itt kapcsolások között megtalálod a módosított égetőnek a rajzát.
Üdv Gyula
(#) Ktulu válasza vgyre hozzászólására (») Dec 30, 2009 /
 
7405 -ot nem hasznalhatsz, mivel a kimenete max 5.5V -ot toleral.
(LS szeriaval is mukodik)
Valoszinu, hogy mas ott a baj. Oshon az egeto?
Probald meg WinPIC800-al, valaszd ki a Propic2 -t, es pipald ki: Use VDD.
Ugyszinten invertald a VDD es VPP-t. (7407 eseten)
(#) edison14 hozzászólása Dec 30, 2009 /
 
HELLO !

Most kezdtem el PICezni és van egy két dolog amit nem értek.

Az első, hogy a PIC-nak a dokumentációjában hol találom meg azt a részt ahol fel van tüntetve, hogy milyen memóriarészekkel rendelkezik az adott processzorom.
A második, az hogy mit jelentenek a következő sorok :

CBLOCK 0x20 - ez a szabad memóriarész
T1
T2
T3
ENDC

ORG 0

és mit jelentenek a következő sorok:

START

BSF STATUS,RP0
MOVLW 0X06
MOVWF ADCON1
MOVLW B'00011111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISC
BCF STATUS,RP0

Ezidáig csak ennyit nem értek a többit már belevéstem a fejembe. Elolvastam a nulláról a robotokig c. cikkeket és egy csomó szakirodalmat a picekről. Nem nehéz felfogni csak meg kell érteni. Szeretnék először egy kis futófényt építeni PIC16F628A-val hogy még jobban megértsem a programozást.

A segítséget előre is köszönöm.
(#) icserny válasza edison14 hozzászólására (») Dec 30, 2009 /
 
Idézet:
„hol találom meg azt a részt ahol fel van tüntetve, hogy milyen memóriarészekkel rendelkezik az adott processzorom?”

Az elején: Memory Organization

CBLOCK cím és ENDC között az adattárból (RAM) lefoglalt memóriarekeszeket azonosítod egy-egy címkével. Ezek lesznek a változók.

ORG cím után jönnek a címkék (sor elején) és az utasítások (bekezdéssel).

A program elején még be kell csatolni a definíciós állományt (p16f628a.inc) és célszerű beállítani a konfigurációs biteket.
(#) edison14 hozzászólása Dec 30, 2009 /
 
Nos mér a legeleje megvan.
Viszont ezt a részt még mindig nem értem:

1 START

2 BSF STATUS,RP0
3 MOVLW 0X06
4 MOVWF ADCON1
5 MOVLW B'00011111'
6 MOVWF TRISA
7 MOVLW B'00000000'
8 MOVWF TRISC
9 BCF STATUS,RP0

Én annyit szedtem ki belőle, hogy van a BANK1 aminek az értéke az RP0-nál 1-es a PIC dokumentációjában tehát ha nekem a BANK3-as kellene akkor így nézne ki:

BSF STATUS,RP0,RP1

A MOVLW 0x06 mit jelent? Mindegy hogy ide mit írok?

Annyit tudok hogy az 5. és 7. sorban ahol egyes van az bemenet ahol 0-ás van az kimenet. Még annyit, hogy a 6. sorban a PORTA-t állítjuk be a 8. sorban pedig a PORTC-t. Közben elkészültem a ledvillogtató programmal ami PROTEUSBAN szimulálva jól működik de próbapanelon már nem. Esetleg meg tudnátok mondani, hogy mi a hiba.
(#) El_Pinyo válasza edison14 hozzászólására (») Dec 30, 2009 /
 
Szervusz!
Az a rész az inicializálás. Be kell állítani a megfelelő regiszterértékeket. Az adatlap minden feltett kérdésedre tartalmazza a választ, javaslom ismerkedj meg vele!
Egyáltalán nem mindegy mit irkálunk a regiszterekbe, hiszen a működés a regiszterek értékétől függ.
A movlw utasítás a w regiszterbe tesz hexadecimális 0x06 értéket, majd ezt az értéket az ADCON1 nevű regiszterbe másolja, hogy megfelelően legyen beállítva az AD modul. (mondjuk ez a kód biztosan nem 628A- ra íródott, mert abban nincs ADCON1 regiszter).
A STATUS regiszter RP0 és RP1 bitjei helyett célszerű a BANKSEL makrót használni, a jobb átláthatóság kedvéért. Erről ha beírod a keresőbe, kismillió leírást találhatsz az oldalon.
Egyébként valószínű, ha a programod szimulátorban működik, de megépítve nem, akkor valamilyen hardver hiba van, pl. 100n kerámia kondi hiányzik a táplábak közül, rossz bekötés, stb.

Szerk.: A start címkénél a MOVLW 0X06 utasításra nincs szükség!
(#) icserny válasza edison14 hozzászólására (») Dec 30, 2009 /
 
Idézet:
„ha nekem a BANK3-as kellene akkor így nézne ki: BSF STATUS,RP0,RP1”

Nem. Úgy nézne ki, hogy:
  1. BSF STATUS,RP0
  2.     BSF STATUS,RP1


De bölcsebb (és áttekinthetőbb) a banksel makró használata.

(#) tothviktor1995 hozzászólása Dec 31, 2009 /
 
Helló!
Tudtok mondani olyan oldalt ahonnan a Vörös Tamás PIC kezdőknek könyvnek a tartalmát meg tudom nézni, mert a googlén már egy órája keresem de nem találom
Köszi a segítséget.
Üdv: Viktor
(#) MPi-c válasza tothviktor1995 hozzászólására (») Dec 31, 2009 /
 
(#) edison14 hozzászólása Dec 31, 2009 /
 
Hát ez nem igaz. A PIC inicializálását nem tudom elkészíteni. Átnéztem a PIC16F628A teljes adatlapját de nem találtam semmit sem a PIC inicializálásáról.
Valaki tudna segíteni mert én már totál kész vagyok.

B.Ú.É.K.
(#) brato válasza edison14 hozzászólására (») Dec 31, 2009 /
 
Ezen elindulhatsz.

alap.ASM
    
(#) edison14 hozzászólása Jan 1, 2010 /
 
A villogó még mindig nem megy és mostmár a szimulációban is csak 4db led világít a PORTB-n. Csatolom a programot és a proteus kapcsolást. Akinek van proteusa az meg tudja nyitni és ki tudja próbálni.

(#) El_Pinyo válasza edison14 hozzászólására (») Jan 1, 2010 /
 
Ha a 0. Bankban levő PORTB regisztert akarod birizgálni, talán nem ártana a VILLOGO címkénél visszaváltani az 1. Bankból a 0- ba. Egyébként, ha nem tiltottad le az MCLR funkciót szoftverből, a hardverben van felhúzó ellenállás?
A DELAY szubrutinod is nagyon rövid, így túl gyorsan fognak a ledek ki-be kapcsolni, amit a szemünk folytonos fénynek fog látni.
(#) watt válasza edison14 hozzászólására (») Jan 1, 2010 /
 
Nem váltasz vissza bankot a PORTB kezelése előtt, valamint az várakozó rutinod, ha 4MHz-es a kristályod, 1mS-es kb. ami azt jelenti, hogy 500x fog villogni a LED-ed másodpercenként. Ez a szemnek kb. fél fényerőt jelent, műszerrel 2,5V-ot mérhetsz kb.

BUÉK!
(#) watt válasza El_Pinyo hozzászólására (») Jan 1, 2010 /
 
Pedig nem beszélhettünk össze!
(#) El_Pinyo válasza watt hozzászólására (») Jan 1, 2010 /
 
Nem nagyon! :nevetes1:
B.Ú.É.K.

szerk.: mondjuk mindketten ugyanazt a kódot olvastuk!
(#) pajti2 válasza potyo hozzászólására (») Jan 2, 2010 /
 
Buék



Pic init:

Egy kissé hiányosnak érzem az indoklást.

A mai újabb PIC-ek bemenetein (pld dsPIC-ek / PIC32) már mind Schmitt triggerek vannak. Annak aztán nyomhatsz amilyen analóg jelet csak akarsz, esze ágában sem lesz sem tönkremennie, sem többletfogyasztást generálnia, de még csak "lifegni" sem. Ennek ellenére az analóg alapinit megmaradt. Mit felejtettem ki?





Kapcsoló mechanikák:

Volt téma nem olyan régen a kapcsoló prellmentesítés. Nos, pechemre mégiscsak belekerültem egy olyan szituba, amikor jó lenne tudni, hogy egy lenyomott / felengedett kapcsolónál mennyi idő lehet a "beszikrázás" ? Pld ha emberi reflexekkel megnyomok egy mikrokapcsolót, mennyi idő telhet el a stabil szakadás, és a stabil zárás között?

Megcsinálhatnám persze, hogy szimpla rutinnal 20-30mSec-re beállok, de most alacsonyabb rutin idővel kellene dolgoznom. Valahol a 8mSec már a legvégső határ. Inkább 5-6mSec kellene olvasási ciklus időnek. Vagy teljesen más megoldás, ha ennyiből nem tud stabilra beállni a kapcsoló.

Ha akad valakinél egy tárolós szkóp, nézzen rá a kedvemért legyen szíves: GND-re kötött ellenállásra sima nyomógombbal ráereszteni pld 5V-ot, felfutó élre triggerelni, az első 10mSec időt pld 0.1mSec mintavételezéssel (100 ponton) feljegyezni. Mit mutat az eredmény?
(#) frecsko hozzászólása Jan 4, 2010 /
 
Sziasztok.
BUÉK mindenkinek.

Egy C nyelven írt programot, hogy lehet mplabbal lefordítani? Kell hozzá kiegészítő program? 8.00 verzióm van.
(#) watt válasza frecsko hozzászólására (») Jan 4, 2010 /
 
Milyen PIC-re, milyen C fordítóval írt programról van szó?
Következő: »»   36 / 1207
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