Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Így most mind külön is megkapja. Ezáltal mehet csak a vpp jumperek áthelyezésével a programozás egymás után?
Még egy-egy 100nF-ot azért tegyél a nyák elejére és a végére a Vss, Vdd közé a biztonság kedvéért! Egyébként úgy látom rendben lesz.
oké köszi akkor megcsinálom szépen és egy 50 darabot befogadó panelra.
Szép napot!
Egy ilyen adapter nem oldaná meg a problémát... Még forrasztani sem kellene, ha a panel felületén jó minőségű bevonatot alkalmaznál a sot23 kivezetéseinél...
Akkor oda több 100n fog kelleni! Mondjuk 10-enként egy.
Ez az adapter, már került a figyelmembe, de nemtudom hol lehetne kapni?
Ez egy házi készítésű adapter, amit könnyű elkészíteni és benne könnyen cserélhető - forrasztás nélkül - a kontroller. Ha a csavaros rögzítést rugósra cseréled, akkor még gyorsabb is lehet a csere...
Persze venni is lehet sot23 - dip8 adaptereket..
Használt itt már valaki RFM01 és RFM02 rádiós modulokat? Egy PIC-ből a másikba kellene elküldenem két bájtot. Ebben, ennek hardveres és szoftveres megvalósításában kérném a segítségeteket. Sajnos most nincs időm és nagyon energiám se hogy utánaolvassak, viszont nagyon sürgős a dolog. Ezért ha elfogadja valaki akkor némi készpénzzel honorálnám a segítséget...
Egy hozzászólás egy helyre... Tudom, most én vagyok a genyó, mert meg mertem jegyezni...
Innen lehet is törölni ha erre jár egy moderátor mert már tárgytalan a dolog. Inkább más modulokkal oldom meg.
Egy olyan kérdésem lenne, hogy már régebb óta megvan egy 18F4550-es kontrollerem, és mostanában azt csinálja, hogy ha pickit2-re dugom, nem indul el hanem folyamatosan POR-ban tarja magát, hacsak nem érek hozzá az összedugdosott áramkörhöz a breadboardon. A PicKit2 szerintem nem lehet hibás, mert a Debug Express lapkával tökéletesen működik. Szerintetek mi okozhatja?
Van, de rengetegszer használtam anélkül is, és akkor is hibátlanul működött.
Szép estét!
Valaki tudja hogy a pic 10f200-ban ugyan van tmr0, de az mire jó ha nem okoz megszakítást. Mert nincs is olyan regiszter ami ezt le kezelné. Akkor tulajdonképpen hogyan kell ezt alkalmazni?
A Timer és a megszakítás az minden picben két független dolog. Annyi a kapcsolat, hogy ha a timer túlcsordul, akkor beállítható, hogy okozzon megszakítást, de nem kötelező vele megszakítást okoztatni.
A 10F-ben nemis lehet megszakítást csináltatni vele, hanem ehelyett a főprogramban figyeled a túlcsordulását, és ha túlcsordult, akkor csináltatsz vele valamit. Kicsit fapados, de nemis atomerőmű vezérlésre van kitalálva
köszi tehát olvasgatom és aztán 255-öt vonok ki és nézem a status,z-t ?
Én inkább minden körbejárásban megnézném a legfelső bitet, és amikor nullára váltott, akkor csordult túl. De majd erre ír valami jobb módszert trudnai, ő foglalkozott ezekkel, én csak az adatlapot futottam át egyszer-kétszer.
köszi igen de a legfelső bit az csak 128 decimálisan.
És mikor lesz nulla?
Kérlek, ne spórold le azt az egy bit-et, amitől a mondateleji kezdőbetűk nagyok lesznek. Ennek a bitnek a regisztere a keyboardon a SHIFT. Köszi!
Feltételezem ha minden bit 1 azaz 0xff a regiszter értéke. A kövtkező lépésben gondolom 0 lesz. Vagyis ha teszek egy 255-ös kivonást a tmr-0ra és az eredmény a status,z-n 1 akkor túlcsordult. Igazából egy elven próbálkozom. Ha valakinek van egy l/O kimenet takarékos kapacitív szenzor elképzelése, ami nem is bonyolult akkor azt is szívesen fogadom. Annyit kellene végeredményében tudnia hogy éledjen a pic ha picike panelt a tenyerembe veszem. És nem érek rézfelülethez sem, csak maximum lakkozáson keresztül.
Idézet: „Igazából egy elven próbálkozom.” Nem. A te elvedben van egy kivonás és előállítasz egy olyan jelzőt, ami valójában létezik, a másik módszerben nincs kivonás, csak egy létező bit figyelése, mikor magasból alacsonyra vált. Igaz itt azt is le kell kezelni, hogy csak akkor értelmezzük a 0-t a 7. biten, ha az 1 volt. Ez egy újabb elágazás és +egy jelző. Viszont így a program gyorsabb.
Sziasztok
ismét itt vagyok Apró gondnak tűnik de nem értem a miértjét, remélem tudtok segíteni. Szóval egy programban van egy olyan rész hogy mostantól aktív a timer interrupt, számláló kezdőértékek beírva a TMRxH és TMRxL regiszterbe(pl 500ms-es megszakításokkal) ->megszakitás meghív egy rutint (pl egy portot ki/be kapcsol megszakításonként). A jelenség : amint megkapja ezt a TMR interrupt engedélyező parancsot kis ideig nem történik semmi.. ha van türelmem kivárni akkor fél perc vagy akár 2-3 perc után de elindul a timer, és jönnek is szépen a megszakítások. Ha az a parancs jön hogy a álljon le ez akkor természetesen az interrupt engedélyezés és a timerON is kikapcsolt állapotba megy, ez is jól működik, majd ha újra engedélyezem akkor meg első pillanattól kezdve jól számol és jól jönnek a megszakítások.Kérdésem hogy első alkalommal mitől lehet ez a nagy késés? Zoli
Szerintem valahogy nem jol inicializalod a timert, es emiatt nem kovetkezik be a megszakitas, es 2-3 perc mulva valami mas kivaltja a megszakitast ahol a hianyzo lancszem az inicializalasbol megvan.
De ez csak egy talalgatas, mivel nem mutattal kodot...
Hát a kódot teljesen nem fogom bemásolni de az inicializáló meg a hozzá tartozó rész itt van :
init() -egy része: #if defined(USE_INTERRUPT) RCONbits.IPEN=1; INTCONbits.GIEH=1; INTCONbits.GIEL=1; T1CONbits.RD16=0; T1CONbits.T1CKPS0=1; T1CONbits.T1CKPS1=1; T1CONbits.T1OSCEN=1; T1CONbits.T1RUN=1; T1CONbits.T1SYNC=1; T1CONbits.TMR1CS=0; T1CONbits.TMR1ON=0; TMR1H=0x0F; TMR1L=0xFF; IPR1bits.TMR1IP=1; PIR1bits.TMR1IF=0; #endif ------------------------------------------------- void hi_int_kezelo(void) { if (PIR1bits.TMR1IF) { PIR1bits.TMR1IF=0; TMR1H=0x0F; TMR1L=0xFF; timer1++; if(timer1>9) { if(LATCbits.LATC0==1) { LATCbits.LATC0=0; } else {LATCbits.LATC0=1;} timer1=0; } } } ----------------------------- Az számláló indító kód pedig : if ( ( data2 & 0x80 ) == 0x80 ) { INTCONbits.GIEH=1; PIE1bits.TMR1IE=1; T1CONbits.TMR1ON=1; } else {PIR1bits.TMR1IF=0;T1CONbits.TMR1ON=0;PIE1bits.TMR1IE=0;INTCONbits.GIEH=0;disp_on();} Sehol máshol nincs utalás ezekre a regiszterekre, se a high interruptokra, se a tmr1-re. Viszont tényleg amint egyszer beindul utána tökéletes. "data2" egy usarton érkező parancsbájt, ugye csak a 8.bitje érdekel, ha 1es akkor ugráltatja a kimenetet(villog a kijelző) ha 0 akkor folyamatosan ég a kijelző (disp_on(); ); Az hogy kivárom amíg el kezd villogni végre az úgy néz ki hogy semmiféle adatmozgás nincsen a soros porton, magyarán nem kaphat olyan kósza adatot ami beinditja... Szóval valami tipp még ? Bármit szívesen fogadok
Hat igy ebbol arra tudok csak kovetkeztetni, hogy az a data2 az nem 0x80es ezert a timer interruptot is tiltod meg a magasz szintu megszakitast is ugy globalisan...
Ha van debuggered pl PicKit2 akkor probaldd meg azzal megnezni mi tortenik, ha nincs akkor LED-eket kotogess szabad portokra es pl. gyujtsd ki mikor a GIEH magasba all, masik mikor bekovetkezik az interrupt, stb stb stb, szoval azokkal deritsd ki logikailag mi a hiba.
Helló
Lehet hülyeséget fogok kérni de nekem szükségem lenne ilyen egyszerűbb assemblerben megírt programokra hogyha van valakinek ilyesmi. Ilyen led villogtatás, futófény meg ilyesmi. Most tanulgatom a pic programozást és én úgy jobban és gyorsabban megértem hogyha látom hogy is néz ki programban. Előre is köszönöm
Szia ! Szerintem töltsd le a PICdemo-kat, vagy valami hasonló a neve, és a demoboardodon a ledeket vezérli a különböző program, aminek hex-je, forrása, meg mindene megvan + leírással, hogy mi mit jelent a programban, persze angolul.
Ok. Rákeresek aztán csak meg lesz. Kösz segítséget
Mondjuk csak egyet kellett volna visszafele lapozni ebben a topikban es talaltal volna egy linket. Meg egyszer :konyvespolc. Vannak konyvek leirasok, mintapeldak, demo panel tervek. Toldsd le mindet, es lehet kezdeni a PIC-ezest. Van 18, 20 es 40 labas demo panel terv, valamelyiket megcsinalod, es lehet jatszani.
|
Bejelentkezés
Hirdetés |