Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   369 / 1210
(#) bbalazs_ válasza Wiver hozzászólására (») Feb 14, 2013 1 /
 
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.
(#) Wiver válasza bbalazs_ hozzászólására (») Feb 14, 2013 /
 
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
(#) n_yálastrubadúr hozzászólása 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.
(#) Hp41C válasza qbit hozzászólására (») Feb 14, 2013 /
 
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
(#) pjg válasza qbit hozzászólására (») Feb 14, 2013 /
 
Naponta használom.
(#) kissi válasza n_yálastrubadúr hozzászólására (») 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
(#) n_yálastrubadúr válasza kissi hozzászólására (») Feb 14, 2013 /
 
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
(#) qbit válasza pjg hozzászólására (») 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?
(#) pjg válasza qbit hozzászólására (») Feb 14, 2013 /
 
Windows XP, USB Bootloader v.2.90a.
(#) qbit válasza Hp41C hozzászólására (») Feb 14, 2013 /
 
Köszi, megtaláltam.
(#) tomat5 válasza Barkóca hozzászólására (») Feb 14, 2013 /
 
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.
(#) Johnny0004 válasza bbalazs_ hozzászólására (») Feb 14, 2013 /
 
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
(#) n_yálastrubadúr hozzászólása 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ő.
(#) potyo válasza n_yálastrubadúr hozzászólására (») Feb 14, 2013 /
 
Melyik C fordító?

C18 és XC8 esetén #define sw PORTBbits.RB1
(#) icserny válasza n_yálastrubadúr hozzászólására (») Feb 14, 2013 /
 
Idézet:
„Hogyan kell c.ben biteket definiálni?”
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)!

Ha például ilyet látsz benne:
  1. extern volatile near union {
  2.   struct {
  3.     unsigned RA0:1;
  4.     unsigned RA1:1;
  5.     unsigned RA2:1;
  6.     unsigned RA3:1;
  7.     unsigned RA4:1;
  8.     unsigned RA5:1;
  9.     unsigned RA6:1;
  10.   };
  11. } PORTAbits;


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
(#) pjg válasza qbit hozzászólására (») 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
(#) n_yálastrubadúr válasza potyo hozzászólására (») Feb 14, 2013 /
 
Hi-tech c. 10f12f16f. De jó lett. Köszi.
(#) n_yálastrubadúr válasza icserny hozzászólására (») Feb 14, 2013 /
 
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.
(#) icserny válasza n_yálastrubadúr hozzászólására (») Feb 14, 2013 /
 
Idézet:
„Még nem nagyon használtam a struct szócskát.”
Nem is neked kell megírni, hiszen gyárilag készen van, csak hivatkoznod kell rá (ahogy Potyo is mondta)!

Én csak ezért idéztem be, hogy érthető legyen a dolog.
(#) bbalazs_ válasza Johnny0004 hozzászólására (») Feb 14, 2013 1 /
 
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?
(#) n_yálastrubadúr válasza icserny hozzászólására (») Feb 14, 2013 /
 
Értem értem. Köszi!
(#) Johnny0004 válasza bbalazs_ hozzászólására (») Feb 14, 2013 /
 
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.
(#) n_yálastrubadúr válasza Johnny0004 hozzászólására (») Feb 14, 2013 /
 
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.
(#) bbalazs_ válasza Johnny0004 hozzászólására (») Feb 15, 2013 1 /
 
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.
(#) Johnny0004 válasza bbalazs_ hozzászólására (») Feb 15, 2013 /
 
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
(#) kissi válasza Johnny0004 hozzászólására (») 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
(#) Johnny0004 válasza kissi hozzászólására (») Feb 15, 2013 /
 
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.
(#) Johnny0004 válasza kissi hozzászólására (») Feb 15, 2013 /
 
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?
(#) kissi válasza Johnny0004 hozzászólására (») Feb 15, 2013 /
 
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
(#) Johnny0004 válasza kissi hozzászólására (») Feb 15, 2013 /
 
Oké, érthető, köszönöm!
Akkor nekem egyenlőre tökéletes a "polling" .
Üdv!
Következő: »»   369 / 1210
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem