Fórum témák
» Több friss téma |
Igazából Ezt akartam volna megvalósítani úgy hogy ne keljen folyton leállítani meg újraindítani a Timert.
A beállítás szerint 1 us az időzítés, tehát jó (lenne ha látnánk a megszakítást is), ugyanis szerintem azt elfelejtetted, hogy a timer0 ha túlcsordul nem tölti be ujra automatikusan a számlálóba az értéket, azt neked kell, vagyis az első megszakítás után 0-ról kezd számolni, 16bites módban 65565-ig azaz FFFFh-ig és így már kb. 13ms lesz az időzítés, ami durván 77Hz ami jó szemmel valóban észrevehető vibrálás. Ha nagyon pontos időzítés kell akkor azt is figyelembe kell venni, hogy a TMR0 regiszter feltöltése 2 ciklust vesz igénybe amíg a számláló értéke nem növekszik. Ha pedig a villogást nem 80Hz körülinek látod akkor ott még más probléma is lesz.
Szia, igazad volt, nem töltöttem fel újra, most átálltam amúgy timer1 re az alábbi kóddal:
interruptban :
Az inicializáláskor pedig ezt használom :
Már csak annyi a kérdésem , hogy a leírásban miért ír 20mHz ? A PIC16F684 a belső oszcillátora 20mHz és nem 48mHz? A hozzászólás módosítva: Júl 31, 2015
Olyan kérdésem lenne, hogy az SSPCON2,ACKSTAT bitjét mi állítja 1-be?
Hmmm. És ha a slave-től semmi semmi sem jön vissza? Mert mondjuk nincs is slave? Arról, hogy lehet meggyőződni, hogy a slave vette az adatot?
Szerk: az nem lehet, hogy 1-be kell állítani és törlődik, ha az adás rendben volt és visszajött az ACK jel? A hozzászólás módosítva: Júl 31, 2015
Ha a slave vette az adatot az ACKSTAT bit 0 lesz ha nem vette az adatot vagy nincs slave akkor az ACKSTAT 1 lesz mert nincs ami lehúzza a vonalat a 9. órajelnél.
Ha van slave és jó a slave címe többnyire ACK-ot kell kapjál, szándékosan NACK csak a mastertől a slave felé megy mikor a slave kiolvasását befejezte a master.
Nos a Pickit2 debug szerint az adat SSPBUF-ba töltése után 1-be áll az ACKSTAT és valóban csak akkor törlődik, ha a slave elvégezte a dolgát.
Holnap éles teszt, majd meglátom, hogy valóban működik-e! Köszönöm!
Sziasztok!
PIC 16-bites port használatánál akadtam el: Azonos porton - itt a B port akarom a vezérlő jeleket ami 4 bit és az adatot ami 8 bit kiküldeni: RD RB12 WR RB13 RS RB14 CE RB15 // a vezérlő bitek B port felső 4 bitje DATA RB4 ... RB11 //DATA =x <<4 - léptetéssel helyre is teszi, de törli a port többi bitjét Hogyan tudom egymástól függetleníteni a port bitjeit?
Tegnap este jól ment minden, kikapcsoltam, most meg be és már nem működik. A Pickit2 debug szerint sem az SSPSTAT regiszter nem változik semmit, sem a PIR1.
Akármi legyek, ha értem....
LATB =(x << 4) | (LATB & 0x0F);
avagy LATB ^= ((x << 4) ^ LATB) & 0xFF0;
Most erre mit mondjak? Az aki nem tud rendes egy leírást szerkeszteni az ne publikáljon, vagy lője főbe magát? A hozzá nem értő után építők meg csodálkoznak ha valami nem megy.
Nos a kérdésre válaszolva a 16F684-nek 8MHz belső oszcillátora van, a programban szereplő 16F690-nek is, a kapcsolási rajzon szereplőnek meg csak 4MHz. Kicsit megtévesztő nem? A kapcsolási rajz nem passzol a programhoz, de még a szöveg sem egyikhez sem.Hozzáteszem, valószínűleg a 684 és a 690 konfigja hasonló, nem néztem meg Azért van 20MHz írva mert a "szaki" 20MHz-es kvarchoz írta meg a programot.Gondolom, csak a prototipus ment belső oszcival, de lehet, hogy a 8MHz kevés volt neki, vagy nem tudta vele a megfelelő időzítéseket létrehozni, nem tudom. A config-ban látszik, hogy nem belső oszcillátorra van konfigurálva (FOSC_HS). Ennyi.
Köszönöm!
Ez lett a jó: LATB ^= ((x << 4) ^ LATB) & 0xFF0; Így nem írja át a port vezérlő biteket. Viszont ez nullázza őket: LATB =(x << 4) | (LATB & 0x0F);
Elírtam:
LATB =(x << 4) | (LATB & 0x0F); helyett LATB =(x << 4) | (LATB & 0xF00F); kellett volna. A hozzászólás módosítva: Aug 1, 2015
Már válogatni is tudok. Jó lett ez is.
Köszönöm!
Ma használtam a pickit3-at és már estére nem volt hajlandó programozni.
2 órán át próbáltam működésre bírni de nem ment. Most nagyon fontos lenne, hogy tudjam használni. Ezeket írja ki mlab(képek): ennek is, meg pont most
Valószínűsíthető, hogy a PICkit szeretne programozni, de a PIC nem hagyja magát. Ennek oka az lehet, hogy nem kap elegendő tápfeszültséget, vagy a programozó lábakat kimenetként használod, és nincs elég ideje a PICkitnek programozás módba állítani a kontrollert. Van késleltetés a program elején?
Ennek az az oka, nem olyan PIC van beállítva, mint amilyet programozni szeretnél. Vagy nem tudja kiolvasni a PIC azonosítóját, amit csupa 0-nak olvas, ami nem valószínű. Biztos, hogy jó az IC?
Honnan kapja a programozandó PIC a tápot?
Az első képen olvasható hibajelzést is elolvasnám: Idézet: „This version of MpLab C18 does not support the Extended mode....”
Már próbáltam a tápot is cserélni( pickit3,elem,szűrt táp) de úgy se jó, ezt most "csak" a demó kártyával csinálja (18f45k20).
ja nem tudok angolul,- szinte semmit A hozzászólás módosítva: Aug 2, 2015
Úgy tűnik, hogy nálam van a az elektronikai mumus, mert 18f4620-amra van egy egyszerű ledes programom és ahogy hozzáérek a fa íróasztalomhoz (azon van összerakva próbapanelon) úgy változik a led/ek fényreje. Ja meg ha megemelem a próbapanelt és visszaengedem elhalványul kb. 1 másodpercre.
tegnap egy lcd kijelzőt próbáltam hozzárakni sikertelenül, de egy ledes program se menjen A hozzászólás módosítva: Aug 2, 2015
A topik sárga részében leírtak betartása, különösen a táplábak bekötése, a szűrőkondenzátorok beépítésa és a MCLR láb felhúzása fontos.
Biztos, hogy a demokártya ehhez a PIC-hez való?
Biztos ezzel együtt kaptam (vettem), eddig jól működött, már jó párszor felprogramoztam az elmúlt fél évben de tegnaptól nem megy.
Ha 4620-at tudod programozni, ezt pedig nem, akkor meghalt az IC, előfordul.
Sziasztok ebbe a kapcsolásba :
Kapcsolás 4mhz kristály helyet használhatok 12mhzet??? Picket attól még nem kell át programozni??
Már hogyne kellene, minden működési részlete az órajelhez van kötve, szerencsétlen esetben akár el sem indul, jó esetben is sietni fog 3x-os idővel !
A hozzászólás módosítva: Aug 3, 2015
Használhatsz, de át kell írni az egész programot, mert az időt a 4 MHz-el számolja. Egy 12 MHz-el háromszor olyan gyorsan megy.
|
Bejelentkezés
Hirdetés |