Fórum témák
» Több friss téma |
Sziasztok!
Végre elkészült teljesen a Pickit2 klónom. "Pöccre" indult is, és a Testekben sem volt hiba. A VDD n magas szinten 5v helyett 4.88 at tudtam mérni, ez nem tudom, hogy megfelelő-e..!? Valamint mikor csatlakoztattam , nem csak azt írta a progi ki, hogy: Pickit2 connected. hanem ezt is: "ID = OIHoss" ! Nos ez valójában nem tudom , hogy mit jelent de remélem semmi rosszat. Egyébként a szilva félét építettem után..
Sziasztok!
Már egy hete boldog tulajdonosa vagyok egy PICkit2 Debug Express-nek,melyhez ugye egy PIC16F887 tartozik.Mivel az assemblerrel is csak azóta kezdtem el foglalkozni,nagy igényeim egyelőre nincsenek.Egy nyomorult led-et szeretnék bekapcsolni gombnyomásra. A led az RD0-ás lábon,a nyomógomb az RB0-án van. Eddig ezt a programot sikerült össze szenvedni,de persze nem működik.. Igaz az MPLAB tesztjén át megy: #include __CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT __CONFIG _CONFIG2, _WRT_OFF & _BOR21V ORG 0000 GOTO Beallitasok Beallitasok BANKSEL TRISB BSF TRISB,0 BCF TRISD,0 BANKSEL PORTB Main BTFSS PORTB,0 GOTO Main IDE1 BTFSC PORTB,0 GOTO IDE1 BSF PORTD,0 IDE2 BTFSS PORTB,0 GOTO IDE2 IDE3 BTFSC PORTB,0 GOTO IDE3 BCF PORTD,0 GOTO Main END Szóval,ha esetleg valaki rá tudna nézni,mert már vörösek a szemeim.. Előre is köszönöm! PZ
Valóban több sebből vérzik.
Gondolom a LIST P=16F887 #INCLUDE 'P16F887.INC' ;ezt lehet, hogy a fórum motorja vette ki. sorok megvannak, mert a listádban nem látom. A portokat a program elején töröld. A PORTB alaphelyzetben analóg bemenet, azt át kell állítanod digitálisra az ANSELH állításával. A TRIS állítása nem szerencsés bitenként, inkább az egészet állítsad egyszerre (b'00000001') Ami viszont az egészet meglövi, hogy sehova nem tettél egy várakozó ciklust, tehát lehet, hogy működik, csak te nem látod.
A próbapanelemben 20 megás van. ASM-ben próbálkoznék.
Egyelőre nem számít a fogyasztás, a lényeg, hogy működjön nekem. Tesztpanelen dugaszról fog menni.
Gondoltam rá, hogy a legjobb a 32768-as kő lenne, de nem akarnám kicserélni a benne levő 20 megásat ezért. A cél csak az óra lenne, majd ha sikeresen megírtam, akkor már lehet cicomázni a dolgot. Azért választottam ezt, mert úgy gondolom, az időzítő használatát ezen tudnám elsajátítani legjobban. nekem bármelyik jó a 3-ból. Az említetteket átnézem, de most azért kértem csak egy irányvonalat, hogy más forrás átírása nélkül, saját fejből csináljam.
Köszönöm,kár,hogy ez még nagyon kínai nekem.
Persze próbálkozok,az időzítést még figyelmen kívül hagyom akkor,csak elméletben működjön..
Ha ragaszkodsz a 20MHz-hez, akkor a korábbi ajánlások szerint készítesz egy órajelet, amiből ki tudsz indulni, bár a Timer2-vel nem lehet kerek értékre osztani: (20MHz/4/16/195/16=100,1602564Hz).
Más Timerekkel pedig bonyolultabb a korrekt időzítést megoldani. Ha neked csak az óra elvének megértése a fontos, akkor ez is jó. Ha az órajel megvan, már csak náhány számlálót kell készítened regiszterekből. Először a másodperceket kell előállítani a Timer megszakításokban növelt számlálóval. Ha a másodperc ütemjel megvan, akkor már csak az óra számlálóit kell létrehoznod, ezek 60, 60, 24 értékeknél fognak nullázódni, illetve neked kell nulláznod őket és a következő helyiértéket növelned stb. A kijelzés külön történet, mert nem írtad mivel akarod. pl. LCD, LED, soros port a PC-re stb. Tehát nézegesd a Timer 2-t és tedd fel a kérdéseket, ha megfogalmazódtak.
Semmiképp se hagyd ki a várakoztatást. Az egyik leggyakrabban használt rutin. Enélkül sosem látod, hogy mit csinálsz. Oda a sikerélmény.
Itt:piclist.com/techref/piclist/codegen/delay.htm A beállított adatokkal csinál neked egy ciklust, amit a programod végére másolsz, és CALL-al meghívod amikor kell. Előtte a program elején deklarálod a változókat cblock 0x20 t1 t2 t3 endc Az ANSELH a 3-as bankban van. bsf status, rp0 bsf status, rp1 clrf ANSELH bcf status, rp0 bcf status, rp1 Olvassad az adatlapot, ott is sok példa van az alkalmazásra.
Én máskép osztanám le: (20MHz/4/4/250/1= 5kHz ~ 200uS) avagy (20MHz/4/4/250/5= 1kHz ~ 1mS) avagy (20MHz/16/4/250/5= 250Hz ~ 4mS) és máris kerek a frekvencia...
Úgy látszik, máris gondom van az osztóval.
A beállításoknál leírt állapotok összegezhetők? Úgy értem, ha több osztó bitet beállítok, akkor hogyan is jön össze? Mert mindjárt szemet szúrt a te sorodban a 195 ami ugye nem 2 hatványa.
Szia!
A pic járhat 20MHz -ről, ha a timer1 a saját oszcilátoráról megy mondjuk 32.768 kHz -es frekvenciáról. Külső órajelet, aszinkron számlálót kell konfigurálni. Figyelembe kell venni a timer 1 errata előírásait...
A timer2 módusa a PR2 regiszter értékével (8 bit) állítható...
Idézet: Nem kell kicserélni. A 32 kHz-es kvarcot a Timer1-re kell kötni (másodlagos oszcillátor). „Gondoltam rá, hogy a legjobb a 32768-as kő lenne, de nem akarnám kicserélni a benne levő 20 megásat ezért.”
LCD kijezőt szeretnék működésre bírni de sajna nem ír ki semmit és sejtelmem sincs miért.
1 pin: GND 2 pin: 5V RS: RB4 R/W: GND E: RB5 D0: GND D1: GND D2: GND D3: GND D4: RB0 D5: RB1 D6: RB2 D7: RB3 LED+: 5V LED-: GND A forrás pedig a követklező ami 16F818 ba van égetve
Remélem valaki tud segíteni!
Köszönöm a türelmedet..
Egy kicsit már át is alakítottam: LIST P=16F887 #include __CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT __CONFIG _CONFIG2, _WRT_OFF & _BOR21V cblock 0x20 t1 t2 t3 endc org 0 Beallitasok BSF STATUS,RP0 BCF STATUS,RP1 CLRF ANSELH MOVLWB'00000001' MOVWF TRISB Main BTFSS PORTB,0 GOTO Main IDE1 BTFSC PORTB,0 GOTO IDE1 BSF PORTD,0 IDE2 BTFSS PORTB,0 GOTO IDE2 IDE3 BTFSC PORTB,0 GOTO IDE3 BCF PORTD,0 CALL DELAY GOTO Main DELAY MOVLWd'100' MOVWFT1 DEL MOVLWd'255' MOVWFT2 DEL1 MOVLWd'20' MOVWFT3 DEL2 NOP NOP NOP NOP NOP NOP DECFSZT3,f GOTODEL2 DECFSZT2,f GOTODEL1 DECFSZT1,f GOTODEL RETURN END
Alakul.
Ez a teljes program? Mert akkor van még mit javítani. Mint mondtam, az ANSELH a 3. bankban van. (alaphelyzet a 0.) Ennek megfelelően a STATUS regiszter RP0, ÉS RP1 bitjét is be kell állítani (adatlap 24-es oldal) Utána visszalépsz a TRIS bankjába, ami az 1.bankban van. Ezt elég úgy is, ha törlöd az RP1-et. Alaphelyzetben minden port input, tehát a D-t is át kell állítanod. Ezt törölted belőle? A késleltetést mindig meg kell hívnod, amikor a led állapota változik. Bekapcsolod, vársz, hogy megpillanthasd, kikapcsolod, vársz, hogy lásd elaludni. Ha ez megvan, akkor már csak arról kell gondoskodnod, hogy a nyomógomb érintkezői ne pattogjanak egymáson, ki-be kapcsolva. Nyugalom, én is így kezdtem nemrég.
Háát,közben már dobtam egy Hubit,mert ezt nehéz idegekkel bírni...
Így már ahhoz is lett elég bátorságom,hogy eláruljam,fogalmam sincs,hogy mit jelent az,hogy "3.bank".Nekem csak két hitelem van.. Igaz,csak egy hete foglalkozom az egésszel,de arra jutottam,hogy egy kisebb összeget megérne,ha valaki egy gyorstalpalót tartana nekem... Mert persze van már több száz oldal kinyomtatott jegyzetem,de az alap kérdéseimre szeretnék választ kapni...Még szerencse,hogy a kitartásom legendás...
Nem kell tudnod fejből a bankokat (ha van elég hely még a programtárban)... A banksel makró segít neked... Azt azért kell tudni, mikor kell beírni. A memória kiosztás felyezetben szokott lenni egy táblázat a SFR -erköl..
Ha az ANSEL regiszterbe akarsz írni 0 -t:
Ebben az esetben azt mondanám, ne írj még programot.
Tanulmányozd a hozzá adott mintákat. Ezen a fórumon segítünk, nem leckét adunk. Ajánlom a http://www.freeweb.hu/t-t/elokep/pic/felhkk.htm oldalt, itt nagyon részletesen le vannak írva az alapok. Ha van némi számítástechnikai alapod, akkor pár fejezetet át is ugorhatsz. Az alapok nélkül viszont semmire nem fogsz jutni. Az adatlapod megvan a PIC-hez?
Igen,igen,meg van.
És már meg is néztem a fent említett 24.oldalt. Már kezd derengeni,hogy miről is beszéltetek... Kár,hogy mi még csak érintettük a Z80-as processzort a suliban.Már több mint 20 éve végeztem elektronikai műszerészként,de igen lelkes vagyok... A CHIPCAD-hez szeretnék elmenni majd tanfolyamra. Csak sajnos tudom,hogy sokszor sokkal többet ér a gyakorlat,és egy hozzá értő ember életszagúbb magyarázata...
Szia! Megnéznéd,hogy ez már hasonlít-e egy működőképes megoldáshoz?
És már bújom az adatlapot.. LIST P=16F887 #include __CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT __CONFIG _CONFIG2, _WRT_OFF & _BOR21V cblock 0x20 d1 d2 d3 endc org 0 start Beallitasok bsf STATUS,RP0 bcf STATUS,RP1 banksel ANSELH clrf ANSELH banksel PORTD movlw B'00011111' movwf PORTD bcf STATUS,RP1 Main bsf TRISB,0 btfss PORTB,B'00000000' goto Main bcf PORTD,0 call Delay goto Main Delay movlw0x23 movwfd1 movlw0xB9 movwfd2 movlw0x09 movwfd3 Delay_0 decfszd1, f goto$+2 decfszd2, f goto$+2 decfszd3, f gotoDelay_0 goto$+1 goto$+1 goto$+1 return END Előre is köszönöm!
Sziasztok,
Szembekerültem egy 18F25K80 -as PIC-kel. Keresek olyan embert, aki Sz.fehérváron vagy a közvetlen környéken vállalna program beégetést. Csak 1 darabról lenne szó. Sajna későn néztem, h a PICKIT2 nem kezeli... Egyúttal kíváncsi lennék arra is, h ez a típus az eltérő égetőfeszültség miatt nem kompatibilis a "régiekkel"? Ha jól tudom, ennek csak 9V kell.
Holnap délelőtt felmegyek Budapestre, kedd délutántól megint Agárdon vagyok.
Sziasztok, van egy numerikus kontrollom ami egy 3X4 mátrix és van rajta 7 db kivezetés. PL. ha az egyes gombot lenyomom akkor a (2, 5) láb van zárva és így tovább. Sejtelmem sincs hogy ezt hogy lehetne a PIC lábaira rákötni bemenetként. Ha valaki csinált már ilyet akkor kérném a segítségét.
Ez a mátrix billentyűzet... az a lényege, hogy Neked van 3 sorod és 4 oszlopod. Az első sorra adsz pl. egy '0' szintet és megnézed, hogy melyik oszlopon jön vissza ( természetesen csak akkor jön vissza, ha lenyomtak egy gombot! ). Egy sornak és egy oszlopnak csak egy közös pontja van, ezért lehet tudni. hogy az ott lévő gombot nyomtad le, amit ezután lekezelsz a szoftverből. Ha ezt folyamatosan kezeled a három sorra vonatkozóan, akkor tudod érzékelni a gomb lenyomását!
Ez természetesen terheli a processzort, ezért vagy megszakítással kell elkészíteni vagy a lekérdezést kell megfelelően időzíteni. Ha átolvadod, akkor látod, hogy a sorokat kimenetként kezeled, az oszlopokat meg bemenetként! Steve
Sziasztok, vettem egy dallas 18b20 hőmérséklet érzékelőt . Ezzel szeretnék egy ventillátort kapcsolni bizonyos hőmérséklet felett. A baj hogy meg sem mozdul.
A bekötése 1: = GND 2: = DQ plusz vcc-re ráhozva 1k ellenállással. 3: = VCC
Köszi a gyors választ megnézem amiket mondtál
Megnéztem de sajna így sem megy egyébként tényleg 750 ms a kiolvasás!
De azt nem értem hogy miért nem kapcsol be a ventillátor mikor a két if feltétel lehetővé teszi hogy ha nagyobb a temp változó ha kisebb mint 12 akkor így is úgy is be kellene kapcsolnia vagy nem?
|
Bejelentkezés
Hirdetés |