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   837 / 1210
(#) sonajkniz válasza pajti2 hozzászólására (») Aug 16, 2016 /
 
Idézet:
„Inkább a ledek mindegyikével kötögess sorba explicite egy ellenállást.”

Ez így azért elég felesleges lenne.
Mivel mindig két kimenet között, egyszerre egy LED világít, untig elég a PIC kimeneteire feltenni 1-1 ellenállást, 100-100 ohm értékben. Így bármelyik LED-en ugyanakkora áram folyik át.
(#) proli007 válasza sonajkniz hozzászólására (») Aug 16, 2016 /
 
Hello! Így bármelyik LED-en ugyanakkora áram folyik át."
Ez azért nem teljesen igaz, mert a nyitófeszültségük eltérő lehet..
(#) mizo25 hozzászólása Aug 16, 2016 /
 
Hello,

Ha áramkörtervezésnél minden PIC mellé kell 100nF kondi a táphoz, és nekem van több PIC és egyéb alkatrész is, baj ha összesen 11 darab 100nF kondi van az áramkörben a + és a 0 közt melynek az eredője 1.1micro ?

köszi.
(#) sonajkniz válasza mizo25 hozzászólására (») Aug 16, 2016 /
 
Nem baj. Nem érdekes az eredője. Zavarszűrés a szerepe. Ezek mellé a tápkörbe tehetsz te nagy kondikat is, akár 1000µF-ot. Legfeljebb még egy darabig menni fog az áramkör, miután elveszed a tápot. (Nem mellékesen, ha adatot akarsz menteni kikapcsoláskor EEPROM-ba, akkor kell is.)
(#) sonajkniz válasza proli007 hozzászólására (») Aug 16, 2016 /
 
Oké!
Felületesen fogalmaztam.
Tehát ebben az esetben mindegyik LED-en, valamint a PIC kimenetein is érvényesülni fog az ellenállások áramkorlátozó hatása, a tápfesz rángatása nélkül.
Egyértelműen (vagy hogy pajti2 kedvenc kifejezésével éljek: explicite) stabilabb működést eredményezve.
(#) Poostmaster válasza pajti2 hozzászólására (») Aug 16, 2016 /
 
Srácok!
Mielőtt teljesen átterveznénk, hadd szögezzem le, az 1 db ellenállással tökéletesen működik. Ha van egy kis instabilitás, legfeljebb újraindul. Semmi gondot nem okoz, mert csak egy dísz.
Természetesen nem akaom a hex fájlt piszkálni, újat fogok írni. Csak ez az egy dolog zavar egy kicsit, ezért kérdeztem rá. Ha nem kapok konkrét választ, legfeljebb majd kiderül a teszt üzemben.
Azért köszi, hogy agyaltok.
(#) Kapagerenda hozzászólása Aug 16, 2016 /
 
Sziasztok,
Proteus programmal szeretnék egy mikrokontrolleres kapcsolás PCB-ét megcsinálni. Az volna a kérdésem, hogy miként tudom azt megcsinálni, hogy a mikrokontroller VCC és VSS lábai a megfelelő helyre, az LM7805 feszültség szabályozó kimenetére kerüljenek? A mikrokontroller VCC és VSS lábait nem lehet látni ugye.
(#) pajti2 válasza Poostmaster hozzászólására (») Aug 16, 2016 /
 
Mármint mire nem kaptál konkrét választ?
(#) Poostmaster válasza pajti2 hozzászólására (») Aug 16, 2016 /
 
Arra, hogy miért van összekötve a két láb.
(#) cross51 válasza Poostmaster hozzászólására (») Aug 16, 2016 /
 
Idézet:
„Arra, hogy miért van összekötve a két láb.”

Azt csak a hexből fogod kideríteni, de szerintem kösd át így (kép), az áramkorlátozó ellenállás/ellenállások nincsenek benne, MCLR letilt, IOC beállít (lekezeled, hogy csak lefutóra csináljon valamit) megszakítás váltasz üzemmódot, nem tudom mennyire okoz problémát megszakításon belül menti eepromba , de gondolom nem okoz akkora hibát (itt), eepromba be az üzemmódot jelző változót induláskor betöltöd és szerintem így tudod a legegyszerűbben megoldani.

kapcs.png
    
(#) Kapagerenda hozzászólása Aug 16, 2016 /
 
Hello,

A mikrokontroller kimeneteire közvetlenül rálehet kötni a 7 szegmenses LED kijelzőt vagy kellenek hozzá azok a 300 ohm körüli ellenálások? A PORTD és PORTC kimenetek vezérelnek két darab 7 szegmenses LED kijelzőt és soknak tartom azt a 16 darab ellenálást helyszűke miatt.
(#) Pali79 válasza Kapagerenda hozzászólására (») Aug 16, 2016 /
 
Kell az ellenállás mivel LED. De hajtsd multiplexben akkor csak 7 kell és elég 1 port is. Hogy jött ki a 16?
A hozzászólás módosítva: Aug 16, 2016
(#) zenetom válasza Pali79 hozzászólására (») Aug 16, 2016 /
 
Gondolom a tizedes pontokkal együtt.
(#) Kapagerenda válasza Pali79 hozzászólására (») Aug 16, 2016 /
 
1 port vezérel egy kijelzőt ami 2 digites. Ezen belül multiplex vezérlés van a két digit között. Ugyanez igaz a második kijelzőre is.
(#) Pali79 válasza Kapagerenda hozzászólására (») Aug 17, 2016 /
 
Ennek mi az értelme? Az, hogy maga a kijelző miként van felépítve, részletkérdés. Ezeket is lehet multiplexelni. Én nemrég csináltam egy 12 digites kijelzőt 1db 28 lábú PIC-kel.
A hozzászólás módosítva: Aug 17, 2016
(#) pajti2 válasza Poostmaster hozzászólására (») Aug 17, 2016 /
 
A legvalószínűbben öntesztelési célokra volt úgy. Az illető a 3-as lábat használhatta program váltásra, de ha elszúrta a configot, és nem sikerült kikapcsolnia a reset lábat, akkor funkció váltás helyett le is resetelt. Talán ő is a 20 ledes változatra készült.

Kell neked az az ötödik láb led hajtásra, te csinálsz egy olyan áramkört, ahol azok a lábak nincsenek összekötve, a configot meg majd biztosan nem szúrod el, és a reset láb lesz a funkció váltás.
(#) Izeg. hozzászólása Aug 17, 2016 /
 
Sziasztok!
Itt egy kód, CCS C fordítóval készült. Van benne egy % ami a CCS manual szerint mudules operator. Ez mit csinál? Valamint az elején a gombnyomkodós utasításokat sem igazán értem. Eddig amiket nézegettem csak simán figyelte, hogy ha PIN_A0-n lenyomva van a gomb akkor csinál valamit. Itt meg bizonyos S-el operál. Valaki tudna ebben segíteni?
  1. #include <16F877A.h>
  2. #fuses  NOWDT, XT, NOLVP, NOPUT, NOPROTECT, BROWNOUT, NOCPD
  3. #use delay(clock=4000000)
  4.  
  5. short s;                       // Used to know button position
  6. unsigned int digit, digit1, digit10, digit100,digit1000;
  7. unsigned long i = 0;
  8. unsigned int seg(unsigned int num) {
  9.   switch (num) {
  10.     case 0 : return 0b11000000;
  11.     case 1 : return 0b11111001;
  12.     case 2 : return 0b10100100;
  13.     case 3 : return 0b10110000;
  14.     case 4 : return 0b10011001;
  15.     case 5 : return 0b10010010;
  16.     case 6 : return 0b10000010;
  17.     case 7 : return 0b11111000;
  18.     case 8 : return 0b10000000;
  19.     case 9 : return 0b10010000;
  20.     }
  21. }
  22. void main(){
  23.   while(TRUE){
  24.     if(input(PIN_A0) && input(PIN_A1))
  25.       s = 1;
  26.     if(s == 1) {
  27.       if(input(PIN_A0) == 0) {
  28.        s = 0;
  29.        i++;
  30.        if(i > 9999)
  31.          i = 0;
  32.       }
  33.       if(input(PIN_A1) == 0) {
  34.        s = 0;
  35.        if(i < 1)
  36.          i = 10000;
  37.        i--;
  38.       }
  39.     }
  40.     digit = i % 10;
  41.     digit1 = seg(digit);
  42.     output_c(0b11111111);           // Turn off all displays
  43.     output_d(digit1);         // Send ones digit
  44.     output_c(0b00000111);           // Turn on display for ones
  45.     delay_ms(5);
  46.     digit = (i / 10) % 10;
  47.     digit10 = seg(digit);
  48.     output_c(0b11111111);           // Turn off all displays
  49.     output_d(digit10);        // Send tens digit
  50.     output_c(0b00001011);           // Turn on display for tens
  51.     delay_ms(5);
  52.     digit = (i / 100) % 10;
  53.     digit100 = seg(digit);
  54.     output_c(0b11111111);           // Turn off all displays
  55.     output_d(digit100);       // Send hundreds digit
  56.     output_c(0b00001101);           // Turn on display for hundreds
  57.     delay_ms(5);
  58.     digit = (i / 1000) % 10;
  59.     digit1000 = seg(digit);
  60.     output_c(0b11111111);           // Turn off all displays
  61.     output_d(digit1000);      // Send thousands digit
  62.     output_c(0b00001110);           // Turn on display for thousands
  63.     delay_ms(5);
  64.     }
  65. }
(#) Hp41C válasza Izeg. hozzászólására (») Aug 17, 2016 /
 
Idézet:
„Van benne egy % ami a CCS manual szerint mudules operator.”

A % jel a C nyelvben a mudulo operator, azaz a maradék képzése.
A
  1. digit = i % 10;

sor a digit változóba az i változó tartalmának 10 -zel való osztásakor képződő maradékát teszi.
(#) Izeg. válasza Hp41C hozzászólására (») Aug 17, 2016 /
 
Köszönöm szépen!
Akkor már csak egy dolgot nem értek. Teszem azt az i értéke felvesz 72-t. Annak a tízes helyiértékét akarom kijelezni. Akkor ugye (72/10) % 10. Azaz 72/10=7,2 abban a 10 nincs meg egyszer sem, de a maradéka 7,2. Oké, hogy a 7-t kiírja de mit csinál a 0,2-vel?
(#) cross51 válasza Izeg. hozzászólására (») Aug 17, 2016 /
 
Ha a 72 elosztod (/) 10-el kapsz 7-et, ha a 72 modulózod (%) 10-el az osztás maradékát kapod ami a 0.2 (ezt nem tudom, hogy hívják vagy mit csinál a beépített fv., jelen esetben olyan mintha visszaszorozna 10-el) és a digit értéke 2-ő lesz.
(#) Hp41C válasza Izeg. hozzászólására (») Aug 17, 2016 /
 
Idézet:
„.... ha a 72 modulózod (%) 10-el az osztás maradékát kapod ami a 0.2”

Nem. Ha a 72 modulózod (%) 10-el az osztás maradékát kapod, ami a 2.
Ha a változók egész típusúak, az osztás is egész osztás: 72 / 10 eredménye 7.

Jobban látható a működés nagyobb számmal. A 872 % 10 eredménye 2, a (872 / 10) % 10 eredménye 7, a (872 / 100) % 10 eredménye 8.
(#) Izeg. hozzászólása Aug 17, 2016 /
 
Idézet:
„Ha a változók egész típusúak, az osztás is egész osztás”

Köszönöm!
(#) Kapagerenda hozzászólása Aug 18, 2016 /
 
Üdv,
Csináltam egy digitális órát 2 darab 2 digites 7 szegmenses kijelzővel. Az egyik digitnél lehet tapasztalni elhalványodást majd kivilágosodást és ez folyamatosan megy. Multiplex vezérléssel működnek, két tranzisztor váltogatja. A pic programon belül a két tranzisztor ki/be kapcsolgatását TMR0 időzítővel készítettem. Már nem tudom tovább gyorsítani a TMR0-át. Esetleg valamilyen tipp miként lehetne megszüntetni ezt az elhalványodást/kivilágosodát? Gondolom ez a jelenség azért van mert nem elég gyors a két tranzisztor kapcsolgatása.
Előre is kösz
(#) Pali79 válasza Kapagerenda hozzászólására (») Aug 18, 2016 /
 
Szia!
Gondolom erről volt szó a PIC kezdőknek témában is... Nálam a 12 digites kijelzőnél 10 ms késleltetéssel váltogatja a multiplex a kijelzőket. Ha jól számolom ez kb 100 Hz, ennyit a leggagyibb tranzisztor is tud. Jó lenne egy picit több infó a kapcsolásról, alkatrészekről és a timer beállításaidról.
(#) pajti2 válasza Kapagerenda hozzászólására (») Aug 18, 2016 /
 
Az elhalványodás annak a jele, hogy valamit áramosztással vezérelsz, amit idő multiplexxel szándékoztál. Ha neked nem tud leesni a tantusz, kezdésnek egy kapcsrajz kellene. Anélkül vakon tapogatózunk.
(#) ativagyok hozzászólása Aug 18, 2016 /
 
Sziasztok!
Adott egy PIC18F45k22 típusú PIC, amivel több feszültséget is mérek. Lehetséges az, hogy különböző feszültségek mérésekor már-más referenciafeszültséget állítok be az AD-nek? Ha lehetséges, nem jelent-e gondot az, hogy egy éppen nem mért feszültség nagyobb a referencia feszültségnél?
Köszönöm előre is a válaszokat.
(#) Kapagerenda hozzászólása Aug 18, 2016 /
 
A kapcsolási rajz :

A kijelzők közös anódosak.
Ellenálásokat a pic és a kijelzők közé nem raktam, mert nem szeretném túlzsúfolni a kapcsolást és nem tűnnek túlterhelteknek a ledek.

7 szeg.png
    
(#) sonajkniz válasza Kapagerenda hozzászólására (») Aug 18, 2016 /
 
Így viszont ne csodálkozz, hogy változik a fénye. Mivel a tranzisztor nyitását úgy kell beállítsad,
hogy ha csak egy 1-est jelenít meg, akkor se terhelje túl sem a PIC kimenetét, sem a ledet, ha már több led világít, (pl 3-as szám) akkor kevés lesz a ledekre jutó áram. Ne spórold ki az ellenállásokat, a tranzisztort pedig nyittasd ki maximálisan. Illetve használj PNP tranzisztort és negatívval vezéreld.
Itt egy hasonló kapcsolás:

névtelen.JPG
    
(#) Pali79 válasza Kapagerenda hozzászólására (») Aug 18, 2016 /
 
Hogy a piklibe kapcsolsz 4 kijelzőt 2 tranyóval amik még ráadásul össze is vannak kötve? Ugyan azt mutatják a kijezők?

Az elllenállások nélkülözése nem biztos, hogy a kijelzőt fogja megölni, inkább a PIC-et.
(#) cross51 válasza Kapagerenda hozzászólására (») Aug 18, 2016 /
 
Ha lehetőséged van szerintem közös katód előtét a szegmensek elé és FET-el kapcsold, de ha közös anód kell akkor raksz p-channel FET-et (csak én nem szeretem mert "invertálva" működik).


Valaki meg tudja mondani egyébként, hogy az áramkörök többségébe miért bipolárist raknak az emberek? A FET-ek nem jobbak erre/ilyen célokra? Meg szerintem egyszerűbb és korszerűbb .
Következő: »»   837 / 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