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   183 / 1211
(#) vicsys válasza Amjad hozzászólására (») Dec 15, 2011 /
 
Nem kell. Ha van 3 különböző nevű flag-ed, akkor a sorrend is adott már.
(#) Amjad válasza vicsys hozzászólására (») Dec 15, 2011 /
 
Ezt nem értem. Mert ha csak azt nézem, hogy jó e a szám, akkor bármilyen a sorrendben összejönnek a jó számok, akkor kinyílik. Mondjuk fizikailag némiképp kötött a sorrend a dobókocka miatt.
(#) Zoli1974 hozzászólása Dec 15, 2011 /
 
Új vagyok a digitális technikában és szeretnék tanulni.
Főleg a mikrokontrollerek érdekelnek leginkább. Milyen konkrét tananyagot ajánlotok leginkább főleg a kód c-ben való megírásához valamint a firmware beégetéséhez, gondolok itt a beégetés gyakorlati megvalósítására.
(#) icserny válasza Amjad hozzászólására (») Dec 15, 2011 /
 
Idézet:
„ha csak azt nézem, hogy jó e a szám, akkor bármilyen a sorrendben összejönnek a jó számok, akkor kinyílik.”
De ne azt nézd, hanem azt, hogy stimmel-e az első szám, majd stimmel-e a második szám, és így tovább. Mindig csak akkor mehet tovább, ha az adott fokozat sikeres volt, s minden hiba esetén vissza az elejére.

Annyit azért még meg kellene csinálni, hogy minden próbálkozást csak akkor veszünk komolyan, ha:
1. Változás történt és
2. Az új szám beállt egy bizonyos ideig (min. fél másodperc, vagy ilyesmi).
(#) potyo válasza Zoli1974 hozzászólására (») Dec 15, 2011 /
 
Rossz hírem van. Ha a digitális technikában még új vagy, akkor először abban kellene elmélyedni, és csak utána a kontrollerekhez hozzáfogni. Gondolatok a PIC kezdésről
(#) Zoli1974 válasza potyo hozzászólására (») Dec 15, 2011 /
 
Elovastam és nem idegen számomra a dolog, elektronikát tanultam
de a digitális technika akkoriban hobbyszinten elérhetetlen volt .A leírás lebeszél a C ről mint kezdőt, ezért már meg is találtam a kezdőknek való bevezető könyvet.
(#) trudnai válasza Amjad hozzászólására (») Dec 16, 2011 /
 
Idézet:
„Akkor konkrétabban az érdekelne, hogy, hogy lehet azt megvalósítani, hogy "össze-vissza" forgatja a kockát, és a jó "kód" után kinyílik. Hogyan lehet a pl. utolsó 5 forgatást összehasonlítani a letárolttal? Vagy az egyik állás a "nulla", és ha megvan az adott számú állapot változás, akkor hasonlítja össze?”


Nem tudom az illeto hogyan valositotta meg, de egy egyszeru allapot gep idealis ehhez. Tehat van 7 allapotod, egy kiindulo/start, es 6 irany. A start allapotbol akkor kerul az 1-be ha megfelelo oldalra forditottak. Onnan csak akkor kerul 2-be, ha onnan is a megfelelo oldalara forditottak, minden mas esetben vissza kerul alap/start allapotba es kezdheted a szekvenciat elolrol.

Ha elerted az utolso allapotot akkor vegrehajtod a kinyitas muveletet es ismet alap/start alapotba hozod a statusz geped... A golyo erzekelesevel tobbet fogsz bibelodni, mint ezzel a reszevel
(#) NyariG hozzászólása Dec 18, 2011 /
 
Sziasztok,

Szeretnék egy számlálót építeni, ehhez van egy enkoderem egy pic 16f877 és 2 7szegmenses kijelzőm.

Az enkoder úgy van bekötve hogy a pic lábai magason vannak és a enkoder forgatása húzza alacsony állapotba őket.

Az enkoder vizsgálata úgy történik hogy egy interrupt figyeli az A csatorna lefutó élét ha ez megvan akkor jön a megszakítás és a megszakításban márt csak azt vizsgálom hogy a b csatorna magas e vagy alacsony és ennek függvényében növelem vagy csökkentem eggyel az értéket amit azután kiíratok a kijelzőkre.

Jelenleg úgy működik a dolog hogy kezdéskor megjelenik a 00 a kijelzőn majd forgatva az enkodert változnak az értékek. De egy kattanásra nem egyet és nem is mindig olyan irányba mint kellene.

Szóval ebben kellene egy kis segítség hogy hogy vizsgáljam az enkodert és annak a mozgását.
(#) röntgen válasza NyariG hozzászólására (») Dec 18, 2011 /
 
Az encoder mechanikus volta miatt rendesen prellezik, ezért ezzel számolni kell. Én a megszakítás után csak 1-2 msec után vizsgálnám a másik jel szintjét. Így talán prell kiküszöbölhető. De ez csak egy ötlet........
(#) szitko válasza NyariG hozzászólására (») Dec 18, 2011 / 1
 
Szia.
Régebben sokat foglalkoztam az encoderekkel. Az alábbi kódrészlet nálam működött rendesen. Próbáld ki.
Sajnos hanyag voltam és nem kommenteztem, de kb. érthető.
(#) NyariG válasza szitko hozzászólására (») Dec 18, 2011 /
 
Köszi pont egy ilyen példa progira volt szükségem.

Holnap átnézem és kipróbálom.
(#) szitko válasza NyariG hozzászólására (») Dec 18, 2011 /
 
Ha kicsit visszaolvasol, nemrég csináltam Én is egy oda-vissza számlálót, igaz Én nem encoder-el. Nekem az volt a gyári encoder-el a bajom, hogy számlálónak nem igazán alkalmas, mert adott a fordulat/jel. Amit linkeltél az egy teljes fordulatra csak 24 impulzust ad. Ha pontos számlálót akarsz csinálni, erre oda kell figyelned.
(#) Amjad válasza trudnai hozzászólására (») Dec 19, 2011 /
 
Köszönöm a válaszokat!
Egy kedves munkatársnőm akarja megépíttetni a barátjával, és megkérdezte, hogy a PIC-ben tudnék e segíteni neki. Gondoltam körbejárom a témát, mielőtt bármit is válaszolok.
(#) kissi válasza szitko hozzászólására (») Dec 19, 2011 /
 
Egyszer én is próbálkoztam egy encoderrel, de az volt a problémám, hogy nem a prell volt a gond, hanem egy picit hozzáérve a tengelyhez már rögtön impulzusokat adott, magyarul bizonytalan volt a kontakt! Ha egy ilyen példányba belefutsz, akkor azt nem tudod "normálisan" prell mentesíteni!

Steve
(#) szitko válasza kissi hozzászólására (») Dec 19, 2011 /
 
Nekem nem az volt a bajom, hanem az egyedi impulzus érték. (Olyan kellett volna ami 150 impulzust ad egy teljes fordulatra)
Egyébként amit mutattam kódrészletet, (lentebb) a gyári encoderekhez jó, de egy egyedi encodertárcsához már nem, hacsak nem pontosan van kialakítva az A, B jel. Azzal a kódrészlettel már csináltam menürendszerben léptetést, ami LCD-n jelent meg és jól müködött.
(#) NyariG válasza szitko hozzászólására (») Dec 19, 2011 /
 
Hasonlóra kell nekem is. Tehát azt szeretném hogy megtekerem addig amíg a kijelző nem ir ki mondjuk 5 öt utána megteker akkor kiír 13-t majd viszább veszem 10 re stb. Szóval nem igazi számláló hanem lépegető, csak nem akarom az analóg bemenetet erre használni.
(#) NyariG válasza szitko hozzászólására (») Dec 19, 2011 /
 
Lenne egy kérdésem.

van ez a kódrészlet:
  1. sz_fel
  2. incf count,f
  3. goto iras


itt az f helyén "0" vagy "1" nek kell lenni nem?
(#) szitko válasza NyariG hozzászólására (») Dec 19, 2011 /
 
Idézet:
„itt az f helyén "0" vagy "1" nek kell lenni nem?”

Az f=fileregiszter, de lehet helyette "1" írni. A "0" a W azaz akku.
Ha belenézel az adott PIC "inc" fájlába, ot megtalaálod:
  1. ;======================================
  2. ;
  3. ;       Register Definitions
  4. ;
  5. ;======================================
  6.  
  7. W               EQU  H'0000'
  8. F                 EQU  H'0001'

Ilyen formában.
(#) morzsa15 hozzászólása Dec 19, 2011 /
 
Sziasztok!

Na most tisztázni szeretnék valamit az lenne a kérdésem hogy hova kell tenni ellenállás és milyet olyat is hallottam hogy kondenzátort is kell tenni igaz ez?
(#) potyo válasza morzsa15 hozzászólására (») Dec 19, 2011 /
 
A téma fejlécében leírtakat elolvastad?
(#) Hp41C válasza morzsa15 hozzászólására (») Dec 19, 2011 /
 
Ellenállás: Vdd és a MCLR/Vpp közé 10k.
Kondenzátor: Az összes Vdd és Vss láb közé 100nF kerámia kondenzátor. Igen, legalább annyi, ahány Vdd kivezetése van a toknak. Ha van AVdd és AVss kivezetés, azok közé is kell, annyi hahán AVdd kivezetés van.

A 24F, 30F, 32F, 33F kontrollerek további szűrést is igényelnek ld. adatlapjuk.
(#) NyariG válasza szitko hozzászólására (») Dec 19, 2011 /
 
Köszi még egyszer a mintapéldát már működik. Számol is szépen, van amikor kettőt ugrik felfele van amikor egyet sem, de többé kevésbé működik. Majd még faragom aztán vagy jobb lesz vagy roszabb.
(#) szitko válasza NyariG hozzászólására (») Dec 19, 2011 /
 
Hogy kötötted be az encodert?
(#) janikukac hozzászólása Dec 19, 2011 /
 
Sziasztok!

Van egy smd 16F628-am , amit a hét folyamán be kéne sütnöm, de egyelőre nem tudom hogyan. Arra gondoltam, hogy kéne gyors csinálni neki egy "adaptert" smd-be , mint a DIP tokhoz, csak az a gond, hogy nem tudom, hogy pontosan hogy, és nincs kedvem fotózni a panelt, időhiány miatt.

Ötletek?
(#) szitko válasza janikukac hozzászólására (») Dec 19, 2011 /
 
Forrasz a lábaira vezetéket,csak 5db kell, s ha kész forraszd le. Én is így csinálom, ha nincs benn a helyén.
(#) speedbump hozzászólása Dec 19, 2011 /
 
Sziasztok,

vegre szereztem egy pickit2-t és a hozzá tartozó 16F887-essel szerelt demo board-ot. Na ehhez sikerült megírnom életem első uC programját egy knight rider futófényt. Használom több helyen a __delay_ms függvényt aminek a paraméterét szeretném konstansként definiálni (const unsigned long varakozas = 100; ) és ezt a konstanst használni. Igen ám, de a fordító hibát dob. (gondolom ez főleg inkább C kérdés nem uC). Hogyan lehetne ezt megoldani?

köszönöm.

  1. #include (htc.h)
  2. #include (pic.h)
  3.  
  4. #define _XTAL_FREQ 4000000
  5.  
  6. __CONFIG (DEBUG_ON & LVP_OFF & FCMEN_OFF & IESO_OFF & BOREN_OFF &
  7.     CPD_OFF & CP_OFF & MCLRE_ON & WDTE_ON & FOSC_INTRC_NOCLKOUT &
  8. BOR4V_BOR21V);
  9.  
  10. void main(void)
  11. {
  12. ANSEL = 0x00; //minden port digitalis
  13. ANSELH = 0x00;
  14.  
  15. TRISD = 0x00;        // PORTD osszes lab kimenet
  16. PORTD=0x01;
  17. __delay_ms(100);
  18.  
  19. while(1)
  20. {
  21. for (int i=0; i<7; i++)
  22. {
  23. PORTD = PORTD << 1;
  24. __delay_ms(100);
  25. }
  26.  for (int i=0; i<7; i++)
  27. {
  28. PORTD = PORTD >> 1;
  29. __delay_ms(100);
  30. }
  31. }
  32. }
(#) janikukac válasza szitko hozzászólására (») Dec 19, 2011 /
 
A veszélyes... Én arra gondoltam, hogy a demopanelemen van fejlesztési terület, oda ragasztom a picet szelotéppel, és megoldom a programozást..
(#) szitko válasza janikukac hozzászólására (») Dec 19, 2011 /
 
Nem veszélyes, csak egy kis kézügyesség kell. Nekem nincsenek olyan demo bigyuláim, de ha van egy ilyen paneled amin van smd felület, azzal egyszerűbb.
(#) janikukac válasza szitko hozzászólására (») Dec 19, 2011 /
 
Ja, van, ezt kaptam a PK2-vel..
(#) icserny válasza speedbump hozzászólására (») Dec 20, 2011 / 1
 
Legegyszerűbben úgy lehet megkerülni a problémát, hogy írsz egy saját késleltető függvényt, amiben ciklust szervezel:

void delay_ms(unsigned int t) {
while(t--) __delay_us(1000);
}
Következő: »»   183 / 1211
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