Fórum témák
» Több friss téma |
ü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 .
üdv : megpróbálom még egyszer a képeket feltenni
(vagyis bekapcsolni a monitort)
Szia!
Az általad használt égetőnek van egy 7407-es puffert használó változata. Próbáld meg azzal. Gyula
é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 !
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
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.
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!
Á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.
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. 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.
ü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 ....
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
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)
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. 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.
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.
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! Idézet: „ha nekem a BANK3-as kellene akkor így nézne ki: BSF STATUS,RP0,RP1” Nem. Úgy nézne ki, hogy:
De bölcsebb (és áttekinthetőbb) a banksel makró használata.
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
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.
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.
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.
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!
Nem nagyon! :nevetes1:
B.Ú.É.K. szerk.: mondjuk mindketten ugyanazt a kódot olvastuk!
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?
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.
Milyen PIC-re, milyen C fordítóval írt programról van szó?
|
Bejelentkezés
Hirdetés |