Fórum témák
» Több friss téma |
En a helyedben csinalnek negy db jelzolampat (vagy harmat, ures allasban ne vilagitson semmi) a negy allashoz kotve, a feliratokat meg folejuk irnam (ragasztanam).
Erre a feladatra felesleges PIC. Masfelol kiderult, hogy se az elektronikahoz, se a programozashoz nem konyitasz. Igy nehez komolyan venni a keresedet.
Kedves bbalázs!
Ha leddel és felirattal szeretném megcsinálni akkor azt írtam volna. Pontosabban le sem írtam volna, mert azt megtudtam volna csinálni. A konyításhoz annyit, lehet önállóan nem tudom megtervezni, de ha van egy kapcsolási rajz, azt gond nélkül eltudom készíteni. A programot a pic-be tudom égetni. És a forráskódot is tudom módosítani. Tehát nem papírcetli ragasztással akarom megoldani. És nem felesleges a PIC. Fontos az LCD kijelző. És tényleg csak ezt szeretném megjeleníteni. A hozzászólás módosítva: Feb 14, 2013
Jó napot!
Elővettem a régi projektem a 433mhz-es távirányítót. Most szuper, hogy nem kell külön pic a szervóhoz. Nagyon jól megy így is pedig 10 byte-ot küldök. A problémám az, hogy sohase fordlhasson elő szervó "rándulás". Most ez egyáltalán nem jellmező, de ha gyorsan forgatom, rázom (előidézve bármilyen zavart) akkor ritkán egy picit bemozdul. Nemtudom, hogyan lehetne ezt kiküszöbölni, mert van 2 kezdő byte, 2 záró és az információ a soros kommounikációra való tekintettel minden bit negáltját is elküldüm. De ezzel sincs kiküszöbölve a probléma mert előfordulhat, hogy a 2 első és a 2 záró byte jó. De a "hasznos" adat pl a legmagasabb bitje 0, vagy éppen 1, akkor akaratom kívül megmozdulhat. Hogyan lehetne sebességet megtartva 100% -ra kiküszöbölni ezt? Jelenleg 2400Baud a sebesség, de ez a maximum, mert a vevőm gagyi.
Szia!
Nem a mintapéldára gondoltam, hanem magának a PICKit2 forrására, ami letölthető innen: PICkit 2 Firmware Source V2.32. A hozzászólás módosítva: Feb 14, 2013
"Hogyan lehetne sebességet megtartva" szerintem így sehogy, a sebességet mindenképpen lassítja a kiküszöbölésre fordított ellenőrzés ideje ( akár egy integráló tag beállási ideje is!), viszont ki kell próbálni adott módszereket és az elérhető javulással összevetve a legjobbat választani!
Nem ismerem a régi projektedet, de pl. egy javaslat: gyors forgatás miatt bejöhet zavar --> 3-szor nézem meg mielőtt elfogadom igaz állapotként ( ha elég gyors a feldolgozás, akkor ez nem jelentkezik gondként !). Steve
Most 4x nézem. Ha 30x nézem is adódik probléma. szerintem máshol van a gond.
Opp! Figyelmetlen voltam. rossz az ellenőrzésem, mert a befutó adatok felülírják az előző tárolókat. Így az ellenőrzős nem terjed ki az egész csomagra, csak legelső íráskor, azután futópont szerű, azaz szinte "szúrópróbaszerű" az ellenőrzés. A hozzászólás módosítva: Feb 14, 2013
Oké, köszönöm. Akkor nálam van a hiba. Milyen oprendszeren használod és melyik verzió a bootloader.exe Nálad?
Szia
Köszi a választ. A relék az áramkörtől teljesen független, kis áramfelvételű dolgokat fognak kapcsolgatni. ULN2803A val hajtom őket, abban benne van a védődióda. A 100nF nálam a foglalat alatt szokott helyet kapni és feltétlenül benne van az összes kütyümben. Remélem tényleg nem lesz gond, mert megbízhatóan kell működni a cuccnak.
Szia! Nem értjük egymást, tudom milyen az encoder, pont az a gondom, hogy három encoderből csak az egyikkel működik a megszakításos progi, még pedig az egyik szakaszossal, a másikkal, és a nem szakaszossal nem megy. (3 encoder van, kettő recés, egy nem recés )
Viszont, ha nem megszakítással van megírva a program, és ugyanúgy a 0 értéket figyeli a négyszögjelben, mint a megszakításnál, akkor azzal meg tökéletes mind a három encoder. Na ennek az okát nem tudom, mondjuk oszcilloszkópom nincs, lehet hogy más négyszögjeleik vannak? A hozzászólás módosítva: Feb 14, 2013
Sziasztok!
Hogyan kell c.ben biteket definiálni? Pl portlábakat? Mert az oké, hogy: #define sw (PORTB & 1) de akkor ezt nem alkalmazhatom, hogy sw = 1; mert ez nem megfelelő.
Melyik C fordító?
C18 és XC8 esetén #define sw PORTBbits.RB1
Idézet: Melyik C-ben? Többnyire union segítségével. Nézz körül a mikrovezérlőt leíró fejléc állományban (picakárhanyas.h)!„Hogyan kell c.ben biteket definiálni?” Ha például ilyet látsz benne:
Akkor PORTAbits.RA3 = 1; (bár ez az RMW problematikailag aggályos...), vagy if(PORTAbits.RA3 ==0) a lehetséges hivatkozási mód. A hozzászólás módosítva: Feb 14, 2013
Én úgy használom, hogy be van dugva az USB kábel a panelba és a gépbe. Be van töltve az USB HID program. Lenyomva tartom a Boot gombot és megnyomom a Reset gombot. Ekkor ismeri fel. Ezután beolvastatom a HEX-et a programmal, letöltés, majd Reset.
Itt a panel. A hozzászólás módosítva: Feb 14, 2013
Hi-tech c. 10f12f16f. De jó lett. Köszi.
Találkoztam ezzel is már. De amit potyo mondott úgy jó. Majd jobban beleásom magam pontosan miért is jó amiről te beszélsz. Még nem nagyon használtam a stcuct szócskát. Elég assemblys a program megvalósításom csak c.-ben.
Idézet: Nem is neked kell megírni, hiszen gyárilag készen van, csak hivatkoznod kell rá (ahogy Potyo is mondta)!„Még nem nagyon használtam a struct szócskát.” Én csak ezért idéztem be, hogy érthető legyen a dolog.
Tegyel rajuk 2 ledet, azon tudod majd ellenorizni, hogy mit ad ki.
A megszakitasnal be kell adni, hogy milyen szintre adjon interruptot. Pedig az lehet 0-1 vagy akar 1-0 iranyban is. Egyaltalan nem mukodik vagy hibazik?
Értem értem. Köszi!
Igen úgy csináltam a megszakítást, de csak az egyik szakaszos encoderrel tökéletes, a másik kettő akadozik, ugrál, ha gyorsan tekerem megy úgy ahogy. Ezért nem értem, mert az egyikkel tökéletes. Viszont ha nem megszakításban van megírva a progi akkor tökéletes mind a hárommal.
Lehet hogy hülyeség, de nem lehet az , hogy nem megfelelő a 3. logikai szintje? Lehet, hogy sérült az encoder kimenete és lehet nem elég magas a magas.
Valoszinuleg kontakthibas a masik ketto. A megszakitas minden prellnel beindul.
Probald meg ugy a megszakitast, hogy inditasz egy timert es x idon belul beuto ujabb megszakitast ignoralod.
Viszont ha kontakthibásak, akkor miért működnek tökéletesen a nem megszakítást használó
programmal? Tekerhetem lassan, vagy bármilyen gyorsan hibátlanok. A hozzászólás módosítva: Feb 15, 2013
Csak általánosságban, nem néztem a programodat: a megszakítás valószínűleg hardveresen nézi a változást ( pl. PORTB változása ), ami "nagyon figyelmes" és mindig észreveszi a változást, míg programból, szoftveresen csak "pollingozni" tudod, ami, ha nem a megfelelő helyen van a program a prell alatt, akkor nem veszi észre !
Steve
Köszi a választ, ezt nem igazán értem még, a megszakításnál nálam a protb0-át szakítja, és olyankor megnézi portb1 állapotát, míg a másik programom a portb0 és 1( 0-0 ) helyzetét figyeli, és ezután ha az új érték (1-0) a két porton akkor jobbra tekerés volt, ha (0-1) akkor balra.
Tettem rá kondit, és egész jó lett most. A megszakítás nélküli proginál miért nem kell rá, amit az előbb írtál a "pollingozni" dolgot kifejtenéd?
A "polling" azt jelenti, hogy időnként megnézed az adott láb állapotát ( pl. BTFSC ) és ha aktív szinten van, akkor intézi a szükséges feladatokat ( megnövel egy változót, kiír értékeket, stb. ). Mire ezekkel készen van, addigra nagy valószínűséggel lezajlik a kapcsoló "prell"-je és így már egy stabil inaktív szintet talál a következő láb ellenőrzéskor.
A megszakítás ( ha nem jól van megoldva ), akkor érzékeli a hibát, törlöd a jelzőbitet, de ha ez túl gyorsan történik, akkor simán érzékelheti a prell-t ( ez a pollingnál nagy valószínűséggel nem fordul elő, mert ott a kiszolgálást elvégzed, míg a megszakításban a kiszolgálást nem szoktuk elvégezni, csak jelezni az ilyen irányú kérést a főprogramnak!)! Ezeket anélkül írtam, hogy láttam volna a programodat. Remélem érthető voltam?! Steve szerk.: a kondi csökkenti / megszünteti a prell-t! A hozzászólás módosítva: Feb 15, 2013
Oké, érthető, köszönöm!
Akkor nekem egyenlőre tökéletes a "polling" . Üdv! |
Bejelentkezés
Hirdetés |