Fórum témák
» Több friss téma |
Köszönöm ha ismét elküldöm a kódomat persze módositva akkor le elleörzöd nekem??
Igen, egy trimmer kondival bizonyos határokon belül hangolható, de az is türelemjáték, míg pontosra beállítod.
A főprogramban levő késleltetések nem szólnak bele a pontosságba, az IT azonos időközönként fog jelentkezni. Idézet: „A főprogramban levő késleltetések nem szólnak bele a pontosságba, az IT azonos időközönként fog jelentkezni.” Pontosítani kell: - A megszakítás nem lehet jelentős ideig tiltva. Ugyanis, ha van olyan részlet a főprogramban, ami jelentős időre kizárja a megszakítás érvényrejutását, megtörténhet hogy nem szolgál ki egy kérést időben és a következő kérés beérkezése előbb történik, mint a kiszolgálás. Ebben az esetben "elvész" egy kérés. - A megszakítási rutin nem tarthat sokáig. Ha hosszú időt vesz igénybe a kiszolgálás, a megszakítás kiszolgálásának ideje alatt beérkezhet az a bizonyos második kérés.
Üdvözletem! Tudnátok segíteni? Találtam egy lövedék sebességmérőt, magát a nyákot és a beültetést eltudnám készíteni, de valamit bele kellene égetni (ha jól sejtem). Erre irányulna a kérdésem.
Igen. A PIC16F630 egy mikrokontroller, ami beégetett program nélkül semmit csinál. (NOP)
Most komolyan, keressük meg a kép alapján a forrást? A hozzászólás módosítva: Márc 15, 2017
A Gooooogle csodákra képes: "pic16F630 a363sr" kérdésre az Első találat ép jó lesz.
A kép alatt található az 50, 64, 100, 150 mm -es érzékelő távolsághoz való hex állományok (rar -ba tömörítve). A hozzászólás módosítva: Márc 15, 2017
Nagyon szépen köszönöm a segítséget! Miután számomra ez teljesen idegen terep, elvállalnátok a PIC beprogramozását?
Sziasztok!
Érdeklődnék, használt már valaki SHT-15 szenzort? Kiküldöm a start jelet aztán a mérést, ahogy az adatlapján van, azután bemenetre állítom az adatvonal portját, de nem húzza le mérés után, pedig elvileg le kellene.. Az zavar egyébként, hogy ha lehúzom földre az adat lábat akkor nem 0V, hanem 750mV. Az adat láb fel van húzva VDD-re 5K-val, de akkor simán lehúzza 0V-ra, viszont amint ráakasztom a szenzort is, már csak 750mV-ig húzza le. Van egy teszt hex file, ha azt használom akkor az rendesen lehúzza az adatvonalat 0ra. Na ez megint magas nekem... Egy ilyen alap programnál 750mV-ig húzza csak le, ez hogy lehet? -------------------------------------------------------------------------------------------- #include <16f88.h> #FUSES NOWDT, INTRC, NOPUT, NOPROTECT, NOBROWNOUT, NOCPD, #use delay(clock=4000000) #define data pin_b7 #define sck pin_b6 void main() { output_low(data); } ----------------------------------------------------------------------------------------------- Köszönöm!!
Tedd fel légyszi az ebből fordított hex-et!
Javítva felraktam az óra kódját txtbe akinek van ideje kérem nézze meg hogy jól csináltam hogy folyamatos lesz e a whilem és igy nem fog késni az óra .
Parancsolj! Csatoltam a proteusos tesztet is.
Felteszem a szkóp képet is, amint látjátok 750mV az L szint az adatvonalon, az órajelnél rendesen 0.
Lehet, h ez zavarja?
Ez a kód nem állítja kimenetre az alapértelmezésben bemenetként definiált lábakat. Ez biztos hiba...
SET_TRIS_B(0b00000000) már biztos átállítaná, de semmi változás.
Eddig még amit akartam sikerült megoldanom ebbe a pices témába, de most kicsit izzadok ![]()
Váltottam 16F685-re, azzal megy... Érdekes.
Dobd már fel légyszi mindkét hex-et! Kíváncsi vagyok van-e benne eltérés!
A teszt, amit letöltöttem a netről és a saját.
16F88, annyi az eltérés h az adat és az órajel lábak fel vannak cserélve.
A hozzászólás módosítva: Márc 16, 2017
Hát nem csak annyi az eltérés, elég a fájlok méretét megnézni. A minta fájl a program memóriában több mint 500 utasítás, a saját csak 23 utasítás és még mindig nincs benne a TRIS regiszterek állítása.
Természetesen az egy kész program, én csak az adat lábat akartam 0ra lehúzni, de amint a szkópon is láttad, nem sikerült, nem értem miért.
Beraktam a 16F685-öt, ugyan azzal az egy paranccsal nem 750mV lett hanem 0. Beirtam a start ciklust és a mérést és már működött is az SHT15..
------------------------------
#include <16f685.h> #FUSES NOWDT, XT, NOPUT, NOPROTECT, BROWNOUT, NOCPD #use delay(clock=4000000) #define data pin_c7 void main() { output_low(data); } -------------------------------------------------------------- Ennyi, de ez a 16F88-nál nem működött..
Sziasztok
![]() 14 42 kor indítottam el az órámat (nem nyúltam hozzá) és fél percet már késik kb. 22pf cseréljem 33pf ra ??? Már nem tudom miért kési pedig egyetlen egy delay nincs a kódba. A program kód csatolva.
A megszakítási rutinod rettentő hosszú.
Nem lehet, hogy mire kilép a rutinból és ujra engedélyezi a megszakítást, addigra kimarad néhány feldolgozatla megszakítás? Valaki itt már korábban írta neked, hogy a megszakítás minimális hossz legyen. Le ellenörzöd mi okozta, ennek függvényében beállítassz mondjuk változókat. pl melyik gombot nyomták meg, számláló tulcsordult. stb.És már ki is lépsz a megszakításból ujra engedélyezve azt. Az eseményeket meg a beállított változók alapján a megszakításon kívül feldolgozod. A hozzászólás módosítva: Márc 17, 2017
Ha minden igaz és jól értelmeztem így csináltam.... Változtatás még annyit stab icére tettem hűtőbordát hát ha a melegedés a baj.
Hát nem.
Az idoszamol() függvényed mit keres ott? Annak a teljes tartalma bekerül a megszakítási rutinodba.Azonkívül még portot is kapcsolgatsz onnan. És láttam ott egyéb érdekességeket is. A rutinod csak annyból áljon, hogy lekérdezed a használt interrupt flag eket, és simán ezeknek az értékeit változóba teszed. Max 3-4 rövid utasítás, és kilépsz a megszakításból. Utána akár while ciklussal is ellenőrizheted a változókat amik tükrözik az utolsó megszakítás álapotát.
Vagy is túl van terhelve az interupom. Rendben javítom azt írok holnap.
|
Bejelentkezés
Hirdetés |