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   458 / 1211
(#) Beles válasza brenato hozzászólására (») Nov 8, 2013 /
 
De alapvetően az a baj, hogy nem is a változók címét kapja meg a függvény!
Míg az rl, gl, bl a 807,808,809 címet kapja, addig az r,g,b a 810, 812, 814 címet.
A képet összevágtam:
A hozzászólás módosítva: Nov 8, 2013

Névtelen.jpg
    
(#) brenato válasza Beles hozzászólására (») Nov 8, 2013 /
 
Ha úgyis mindegyik változó értékét növelni kell akkor felesleges átadni a függvénynek, hiszen globális változókról van szó. Csak akkor kell átadni ha növelősdi funkciót akarsz létrehozni.
Char esetében pedig pedig felesleges nézni a túlcsordulást mert úgyis 0ba tér vissza.
(#) TakiG válasza Beles hozzászólására (») Nov 8, 2013 /
 
Hívni szerintem a címe operátorral kell, ahogy a hozzászólás szövegében írtad: novel(&rl, &gl, &bl);
A precedencia vajon jó ezeknél a kifejezéseknél: *r++ ? Nem lehet hogy először pointert növel, és aztán történik az értékre hivatkozás? Én megpróbálnám zárójelezve is: (*r)++;
Szerk: Ez az oldal szerint egy szinten vannak és jobbról balra lesznek kiértékelve, tehát kell a zárójel.
A hozzászólás módosítva: Nov 8, 2013
(#) Hp41C válasza Beles hozzászólására (») Nov 8, 2013 /
 
A csillagokat hagyd békén, kellenek.
novel(&rl, &gl, &bl); // így a változók címét adja át.
(#) Beles válasza Hp41C hozzászólására (») Nov 8, 2013 /
 
Idézet:
„Ha úgyis mindegyik változó értékét növelni kell akkor felesleges átadni a függvénynek, hiszen globális változókról van szó.”

Csak megírtam ezt a kis programot, mert a "Nagy" programban sem működött, természetesen ott nem globális változót használnék.
Idézet:
„A csillagokat hagyd békén, kellenek.
novel(&rl, &gl, &bl); // így a változók címét adja át.”

Sajnos így sem a változó címét kapja meg, az a felállás marad, amit az előbb képen mutattam

Az r++ és *r++-nak ugyan az a hatása!
(#) TakiG válasza Beles hozzászólására (») Nov 8, 2013 /
 
Idézet:
„Sajnos így sem a változó címét kapja meg, az a felállás marad, amit az előbb képen mutattam
Az r++ és *r++-nak ugyan az a hatása!”

Próbáld ki amit írtam, jónak kell lennie. Annyit pontosítanék, hogy nem is egy szinten vannak a precedencia táblázatban, mert a prefix increment -et néztem a suffix helyett ami még magasabb precedenciájú. De ez a lényegen nem változtat, ez a hiba a programodban szerintem.
(#) Beles válasza TakiG hozzászólására (») Nov 8, 2013 /
 
Megpróbáltam zárójellel is! Úgy nem növel semmit.
(#) icserny válasza Beles hozzászólására (») Nov 8, 2013 /
 
novel(&rl, &gl, &bl);
Idézet:
„[quote]novel(&rl, &gl, &bl);”

Sajnos így sem a változó címét kapja meg.[/quote]
Valamit félrenéztél, mert nálam működik!

pointerek.jpg
    
(#) TakiG válasza Beles hozzászólására (») Nov 8, 2013 /
 
C30 fordítóm most nincs, de ezt kipróbáltam AtmelStudio-ban és működik:
  1. int main()
  2. {
  3.         unsigned char rl;
  4.         unsigned char gl;
  5.         unsigned char bl;
  6.         unsigned char i;
  7.         while(1)
  8.         {
  9.                 rl = 0;
  10.                 gl = 0;
  11.                 bl = 0;
  12.                 for (i = 0; i< 1000; i++)
  13.                 {
  14.                         novel(&rl, &gl, &bl);
  15.                 }
  16.                
  17.         }
  18.         return 1;
  19. }
  20.  
  21. void novel(unsigned char* r,unsigned char* g,unsigned char* b)
  22. {
  23.         (*r)++;
  24.         if(*r == 255)
  25.         {
  26.                 *r = 0;
  27.                 (*g)++;
  28.         }
  29.         if (*g == 255)
  30.         {
  31.                 *g = 0;
  32.                 (*b)++;
  33.         }
  34.         if (*b == 255)
  35.         {
  36.                 *b = 0;
  37.         }
  38. }

De szerintem ez annyira alap c, hogy minden fordítóval ugyanúgy kell mennie.
Ha végképp nem megy, akkor próbáld ki a *p = *p +1 -el
(#) efiscp válasza TakiG hozzászólására (») Nov 8, 2013 /
 
Sima gcc-vel is rendben van (pc-n).

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void novel(unsigned char* r,unsigned char* g,unsigned char* b)
  5. {
  6.         (*r)++;
  7.         if(*r == 255)
  8.         {
  9.             *r = 0;
  10.             (*g)++;
  11.         }
  12.         if (*g == 255)
  13.         {
  14.             *g = 0;
  15.             (*b)++;
  16.         }
  17.         if (*b == 255)
  18.             *b = 0;
  19.        printf("r=%d, g=%d, b=%d,*r=%d, *g=%d, *b=%d",r,g,b,*r,*g,*b);
  20.        printf("\n");
  21.  
  22. }
  23.  
  24. int main()
  25. {
  26.  
  27.     unsigned char rl=0;
  28.     unsigned char gl=0;
  29.     unsigned char bl=0;
  30.     int i;
  31.  
  32.     for (i = 0; i< 500; i++)
  33.             novel(&rl, &gl, &bl);
  34.  
  35.     return 0;
  36. }
A hozzászólás módosítva: Nov 8, 2013

gcc.jpg
    
(#) Beles válasza efiscp hozzászólására (») Nov 8, 2013 /
 
Köszönöm mindenkinek! Valamit elnéztem! Tényleg az (*r)++; a helyes megoldás!
(#) lionsec hozzászólása Nov 8, 2013 /
 
Üdvözlet mindenkinek!

Ha esetleg valakit érdekel és szeretne PC égetőt csinálni nyomtató portra akkor szerintem érdemes ezt a kapcsolást megépíteni. Én most fogok neki az építésnek épp ma jöttek meg az alkatrészek.Annyiban változott a kapcsolás,hogy az eredeti nyák számomra nagynak bizonyult ezért átterveztem kisebbre ill a PIC ek-számára terveztem adapter kártyákat.
Sok sikert az után-építéshez!!!
(#) usane hozzászólása Nov 8, 2013 /
 
Üdv.
Nap kérdése.
Adott egy pic16f628a, ami LCD-t vezérel meg 2 tranyón keresztül relét meg piezzo zümmert.
Ez kvarc oszciról megy. 4MHz.
Adott egy 16f690is. ez ULN2803-at hajt meg, ez belső rc-ről megy.
Feszt egy 7805 stab látja el.
Mi az oka annak, hogy ha bekapcsolok az áramkörben egyszerre 9 relét meg 4 pc ventit, akkor a 628 mindíg kiresetelődik a 690 meg egyszer sem. Még egy 2200µF-os kondi sem segített közvetlenül a táp lábán.Még esetleg egy diódát tudok betenni a táplábhoz a kondi leszívását védendő, de már kész az áramkör nem tudom, hogy tudnám beleeszkábálni.
A hozzászólás módosítva: Nov 8, 2013
(#) vicsys válasza usane hozzászólására (») Nov 8, 2013 /
 
Hibás vonalvezetés, a 100nF-os hidegítő hiánya, antiparallel dióda hiánya, gyenge táp, tranziens szűrés hiánya (a nyagy puffer nem az!), stb...
(#) ativagyok válasza vicsys hozzászólására (») Nov 8, 2013 /
 
Sziasztok!
Programozni szeretnék egy PIC32MX150F128B mikrovezérlőt, sajnos sikertelenül. A PicKit 2 más típusúnak ismeri fel, így nem tud bele írni. Attól tartok, nem is lehetséges. Valakinek sikerült ilyen PIC-et programozni PicKit 2 programozóval?
(#) SzT3 hozzászólása Nov 9, 2013 /
 
Sziasztok!
Tudnátok javasolni 33 vagy 36 I/O poprtos PIC-et?
Semmi extrát nem kell tudnia Csak ledeket villogtat, kettő "be" a többi "ki" port MAx a program mérete lesz egy kicsit nagy! ( Ha sikerül a PWM-et megszülnöm )
Előre is köszönöm!
(#) icserny válasza SzT3 hozzászólására (») Nov 9, 2013 /
 
Sok LED vezérlését multiplexeléssel szokás megoldani (lásd LED cube projektek). Sok I/O kivezetés igénye esetén portbővítőket (pl. MCP23017, MCP23S17), vagy shift regisztereket (74HCT595) is lehet használni. Vannak speciálisan LED-ek vezérlésére készített IC-k is, amelyek beépített PWM-mel a fényerő (pontosabban a LED teljesítmény) szabályozását is lehetővé teszik.
(#) icserny válasza ativagyok hozzászólására (») Nov 9, 2013 /
 
HP41C fórumtársunk dolgozik a PICkit2 továbbfejlesztésén.
(#) vicsys válasza icserny hozzászólására (») Nov 9, 2013 /
 
Idézet:
„Vannak speciálisan LED-ek vezérlésére készített IC-k is, amelyek beépített PWM-mel a fényerő (pontosabban a LED teljesítmény) szabályozását is lehetővé teszik.”
Erről kérhetnék valami konkrét infót? Olyasmit keresek ami többcsatornás és buszon (1wire, I2C, stb..) vezérelhető.
(#) Hp41C válasza ativagyok hozzászólására (») Nov 9, 2013 /
 
Pickit3 -mal megy. Nekem sikerült módosított PICKit2 -vel is.
(#) vladcepes hozzászólása Nov 9, 2013 /
 
Sziasztok! HEX ügyben szeretnék érdeklődni (mert én egyáltalán nem értek hozzá), erről lenne szó:Bővebben: Link és megépítettem, itt Bővebben: Link felraktam a kérdést a megépítéssel kapcsolatosan,minden lehetőséget már kipróbáltam mint amit le is írtam ott (újraforrasztás,próba más táppal stb) most már csak a HEX-re gyanakodom ezért is írtam ide hátha valaki meg tudná nézni nem e abba van valami probléma. A válaszokat előre is köszönöm!
(#) usane válasza vicsys hozzászólására (») Nov 9, 2013 /
 
Hidegítő megvan, antiparallel megvan, táp elég erős, vonalvezetéssel nem tudok sok mindent kezdeni, a hely sajnos adva van ahová be kell férnie, és ezen belül elég sok vonalnak kell elférnie,tranzienssel még tudok kezdeni valamit de miért csak a 628 resetelődik? A 690 jobban körbe van fonva áramkörökkel és meg sem kottyan neki a lökés. Külső/belső oszcinak lehet szerepe? Esetleg BOR? A 690-et én progiztam fel a 628-ba innen letöltött hex-et töltöttem be.
(#) usane válasza (Felhasználó 15355) hozzászólására (») Nov 9, 2013 /
 
Ez szuper. Ilyesmit már én is kerestem.
(#) icserny válasza vicsys hozzászólására (») Nov 9, 2013 /
 
Texas Instruments TLC5940/TLC5941/TLC5942/TLC5943

Maxim: konkrát típus helyett itt a választék: Bővebben: Link
(#) SzT3 válasza icserny hozzászólására (») Nov 9, 2013 /
 
Szia!

Igen tudom hogy olyannal szokás de sajnos nem értek annyira a programozáshoz hogy egy mátrix vezérlést meg tudjak írni, így sajnos marad a sok pines PIC!
Ahogy a projektet elnéztem a mit szeretnék másolni marad a szoftveres PWM ( persze csak ha rájövök hogy kell )
Amúgy erről lenne szó
(#) SzT3 válasza (Felhasználó 15355) hozzászólására (») Nov 9, 2013 /
 
Jól sejtem hogy ezt címzéssel lehet vezérelni ? Esetleg tudnál nekem erről egy kicsit írni?

Köszönöm!
(#) icserny válasza SzT3 hozzászólására (») Nov 9, 2013 /
 
Nem kell megijedni, a multiplexelt megjelenítés csak annyit jelent, hogy csoportokba osztod a LED-eket (pl. 8 LED egy csoport), s ha a port kimenet a LED-ek anódját vezérli, akkor egy-egy külön vonallal (és tranzisztorral) csak az aktuális csopor LED-jeinek összekötött katódját húzod le a földre. A LED cube projektekben is láthatsz erre példákat.
(#) jonatani01 hozzászólása Nov 9, 2013 /
 
Sziasztok!
Vettem két PIC16F716-os mikrovezérlőt, és tanácstalan vagyok, mert még a portjaira sem tudok feszültséget adni... 16F690-nel nincs ilyen probléma, ott megjelenik a feszültség, de ennél 0V-ot mérek mindig.

A kód itt van:

  1. PROCESSOR 16F716
  2.         #INCLUDE <P16F716.INC>
  3.  
  4.         __CONFIG        _WDTE_OFF & _PWRTE_ON
  5.  
  6.         ORG 0
  7.         GOTO            MAIN
  8.  
  9.         ORG 4
  10.         RETFIE
  11.  
  12. MAIN
  13.         BANKSEL         ADCON1
  14.         MOVLW           0XFF
  15.         MOVWF           ADCON1
  16.         BANKSEL         TRISB
  17.         CLRF            TRISB
  18.         CLRF            TRISA
  19.         BANKSEL         PORTB
  20.         MOVLW           0XFF
  21.         MOVWF           PORTB
  22.         MOVWF           PORTA
  23.  
  24. LOOP
  25.         GOTO            LOOP
  26.  
  27.         END


Ugyan ezt a kódot töltöttem a 690-esre is (persze az elején kijavítva 716-okat 690-re)
és azon minden rendben volt.

Data sheet-ben sem találtam semmit hogy mi lehet az oka
Bővebben: Link
(#) jonatani01 válasza jonatani01 hozzászólására (») Nov 9, 2013 /
 
Ja és mindkettő uC-rel kipróbáltam, egyik sem szólal meg.
(#) Barkacs27 hozzászólása Nov 9, 2013 /
 
Sziasztok!
Most szeretnék pickkel foglalkozni először.
Pickit2 clonom már van.
Valami ilyesmit szeretnék létre hozni. :
http://www.elektronika.ba/687/triac-regulation/
Az a lényeg hogy lépésekkel tudjam növelni az értékét.
Fel felé és lefelé is.
Újabb elérhető Picbe be lehet a mellékelt hexet tölteni??????
Vagy tudtok valami hasonlót amit letudnák én is tölteni a vezérlőbe?
Köszönöm a segítségeteket.

Üdv.
Következő: »»   458 / 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