Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Ez a prellezés, vagy mi?
Ezen a képen már értem, miért lenne gáz a dolog. Ők delay-t csinálnak, és úgy oldják meg. Az nekem nem jó. Ha timer-t indítanék, és megszakításkor visszaállítan egy bitet, az egy gombra jó lenne. A többit meg valahogy máshogy kezelem le. Mielőtt a keresést ajánlanátok, ok, megkeresem
Igaz.
Felengedésre gondoltam, de az se pontos. De sztem pontosabb, mint a lenyomás. Akkor marad a ciklusonként növelek egy számlálót, és ha elérte a maxot, akkor van lenyomva, majd felengedés után megint nem figyelem x ciklusig a lenyomást. Ha jól látom, végülis a 100nF-es kondit használta erre. Sztem ezt kihagyom. Viszont interruptos pullup nélkül kell a 10k-s le, vagy felhúzás.
Ne a kapcsolást nézd, hanem a hozzá írt kódot! A 100nF más miatt kell.
A belső felhúzó meg megintcsak független attól, hogy engedélyezed-e azokra a lábakra a megszakítást. Ne köss össze olyan dolgokat, amik függetlenek egymástól, csak lehet együtt is használni azokat.
Ok, nem tudtam. Az interrupt részen volt az adatlapon, és intcon2-n lehet állítani, gondoltam nézi a megszakítást.
Késő van már, kapcsolást írtál, én meg csak azt néztem gondolkodás nélkül. Köszi!
Találtam még egy csomó megoldást tárolókkal, stb, de fölöslegesnek tartom. Progiból elég lesz.
Feleslegesek, mert azért van a kontroller, hogy az megcsináljon mindent, amit csak lehet. Az én kapcsolásomban is azért kellett az RC szűrés, mert a bemenő jelek hosszú vezetéken érkeznek, és szűrés nélkül ez további problémaforrás volt. Az RC szűrő - bár csökkenti - nem szünteti meg a prellegést teljesen, tehát nem lehet RC szűrőn keresztül sem egyszerűen megszakításként kezelni a gombnyomást.
Sziasztok! Segítségeteket szeretném kérni. Hitech PICC -vel ismerkedek. A C kódban, pontosabban egy függvény belsejében elhelyeztem egy kis asm kódot.
A kérdésem az lenne, hogy a függvénynek átadott paraméterre,változóra hogyan hivatkozhatok az asm kódban?
Üdv!
Ha a kvarc nincs a pic közelében az mennyire baj? Ugyanis ott nem fér el, máshova kell tennem. kb 3cm-re tőle. Huzalvezetés milyen legyen? Maradhat "tört" nyugodtan, vagy legyen kerekek?
Természetesen NEM rögtön ide írtam a problémámat, hogy majd kezembe adjátok választ, hanem először átolvastam a manual erre vonatkozó részét. Ott azt írják, hogy az asm kódban a változó elé egy aláhúzás jel kell ( _ ). Én is úgy csináltam a függvényben, de mégsem fordul le. Csak megjegyzem, hogy a függvény, a paraméterben átadott számnak megfelelő mikroszekundumig vár 20Mhz mellett, de ez biztos egyértelmű számotokra
Szerintem az a "movlw _us" nem azt fogja csinálni, amit te akarsz!
Ez igy nem jó, mert a függvény paraméterre biztos másként kell hivatkozni. De küldök neked inkáb olyat ami működik. Én ezeket szoktam használni. Főprogramodba elég beírni hogy #include "delay.c"
Vagy próbálkozhatsz még persze : Bővebben: Link
köszönöm a segítséged, inkább tényleg azokat a függvényeket használom amit küldtél
(Bár utólag rájöttem, hogy valahogy globálisan is kellett volna definiálni azokat a változókat a kódomban, úgy lefut, de nem annyit vár, amit én beállítok. mind1is )
A legnagyobb probléma mellett pedig elmentél, biztos azért, mert az volt a legrövidebb válasz, és gondoltad az nem számít!? Nézd meg mire való a MOVLW (adatlap)!
A változó deklarálásban is van még gond biztos, de én nem használom ezt a C-t. De az szinte biztos, hogy ASM betétben csak bájtos(8bites) változókat lehet használni, vagy gondoskodni kell arról, hogy egy hosszabb változó esetében, annak melyik bájtját akarod piszkálni. Erre jók a >> << operátorok, vagy a közvetlen, vagy indirekt címzés.
Szia! Nos, tényleg elsiklottam a válasza felett, de a következő miatt. Elfelejtetem megemlíteni, hogy a függvényem csak bájt hosszúságú, max 255 értékű számot kapna. Ugyanis a várakozás függvényt 1-wire eszközöknél használnám fel, ahol a leghosszabb várakozás (480us reset impulzus) is csak 2 ilyen függvény egymás után. Mivel már foglalkoztam ASM-el, úgy gondolom, hogy a MOVLW azt a bájtot a W munka regiszterbe fogja beletenni úgy ahogy van (vagy ennél nem?)... C18 programmal minden szépen működött, de átszerettem volna írni egy 16F628-ra és egyben megtanulni egy 16F-esekhez kitalált C nyelvet. Utána olvasgattam, sok helyen a hitech picc -t ajánlják azoknak, akik inkább az assembly kódot kedvelik és csak a rengeteg gépelést akarják megspórolni maguknak. Bár még szemezek a CCS fordítóval is, esetleg te azt használod?
bocsi, utólag, de nem utolsó sorban megköszönném MPI-c -nek is, hogy foglalkozott a kérdésemmel! Ebéd után lehet nekiugrok megint a kódomnak, kitisztult fejjel Idézet: „Mivel már foglalkoztam ASM-el, úgy gondolom, hogy a MOVLW azt a bájtot a W munka regiszterbe fogja beletenni úgy ahogy van (vagy ennél nem?)” A movlw utasítás a MOVe Literal to W. A literal az állandót jelent. Gyakorlatilag most a változód címét mozgattad a W be. Amit te keresel az a MOVe File register utasítás: MOVF cím,W vagy MOVFW cím .
Én C18-at használok.
Braf elolvasta helyetted is a doksit! Jobban jártál volna, ha magad jössz rá! Szóval javaslom, ugorj neki mégegyszer! Használd az MPLAB szimulátort is, mert abból rögtön látszik, mi történik!
Köszönöm szépen mindenkinek a segítséget!
Teljesen világos, hogy mit rontottam el. Hisz a movlw egy konkrét számot tesz be a W regiszterbe, míg a movfw egy változót,regisztert. Nem is tudom, hogy nézhettem el ennyire!
Úgy látszik,másnak is eszébe jutott, hogy kellemesebb a PIC18F14K50-et használni, mint az FT232RL-t forrasztani, vagy valamelyik ATtiny-vel szoftveres USB illesztőt játszani. Az egyik japán honlapon arról számolnak be, hogy egy Arduino-kompatibilis kit-ben USB-UART átalakítóként PIC18F14K50-et építettek be.
Bővebben: Link Idézet: „Úgy látszik,másnak is eszébe jutott, hogy kellemesebb a PIC18F14K50-et használni” Meg olcsóbb is, ha jól rémlik az FT ic ára...
És ha HID Custom kerül bele, akkor ezerszer kényelmesebb is a használata. (Az USB-s topicban bővebben).
Én sokat szívtam az FT-k drivereivel. Főleg a több különböző eszközt is telepíteni kellett, mint pl, KWP2000, és Galetto1260. Nem nagyon tűrik egymást...
Szia,
Ha messzirol is jol kell latszodnia akkor nem lett volna jobb a 25 mCd-set valasztani inkabb? Amugy csatlakozom az elottem szolokhoz, rengeteg peldat lehettalalni LED kijelzo multiplexelesere, ha mar van egy probapanelen egy aramkorod es nem mukodik akkor nyilvan szivesen segit mindenki a hibakeresesben -- ha PIC firmware problema akkor nyilvan elsosorban ebben a topicban.
18F4550 gondok újra.
Portb 4-7-ig tennék rá 4 gombot. Pullupenable biteket 1-re állítottam(intcon2.7), és RBIE=0. ADCON1=0F TRISB=%11110000 LATB=0 Testbit(portb,4)=1-el vizsgálom, és nem megy. Ilyenkor hogy kell rákötni a gombot? Simán GND-re, vagy 10K-val fel kell húzni 5V-ra, és a gombot GND-re?
Idézet: „Testbit(portb,4)=1” Az = az értékadás jele. Az összehasonlítás jele az ==. Egyébként C-ben az ilyet nem így szoktuk, hanem egyszerűen if (Testbit(portb,4)) { ... }
Lehagytam: mikrobasic
A timer-es ledvillogtatás jó lett ezzel.Az meg mindegy, hogy alapban 1, vagy 0, változásnál a porta egyik ledjét változtatná, de nem teszi. Az jól van konfigolva, mert előtte mást teszteltem rajta, és az ment. Ami nem tiszta, az a pullup enable bit. Low pullupja van, vagy mi. Lehet felhúzom inkább magam 5V-re 10k-val, és kikapcsolom a pullupot.
ez egy nagyon jó link kezdőknek.
LCD, timer, interrupt, A/D converter, stb.... kapcsolásokkal. Ott van az RC tag is, meg a flip-flop is. Gomblenyomás figyelésre a progi úgy írja, hogy többször nézz rá az állapotra, és ha már többször uaz volt, akkor megcsinálod, amit kell. Ott volt az idő is. Én fordítva csinálom. Ha jön egy jel, akkor nem nézem x ciklusig(~300ms), aztán megint figyelem. Így pont abban a pillanatban fut le, amikor elkezdték megnyomni(vagy felengedni).
Itt is van egy példa, ahol a belső felhúzást használja, és simán gnd-re van kötve a kapcsoló.
A doksi azt írja, hogy ha a portb lesz egy kimenet, akkor a pullupot kikapcsolja. Csak arra az egy lábra, vagy az egész portra? Mert azon megy az I2C is. Azon meg eleve van külső pullup. Mind1, most marad a külső pullup, csak ha legközelebb használnám...
Ráforrasztottam egy iscp connectort a lapra, mert már untam a folyamatos icáttevést.
De most se megy Felhúztam 5V-ra, 10K-val, a gomb a 10k és a pic között van, és gnd-re van kötve a másik fele. Jól van bekötveSzerintem valami gond lesz. Lemértem a portb.4-et, ha nincs benyomva, ~5V, ha be van nyomva, 0V. |
Bejelentkezés
Hirdetés |