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   165 / 1210
(#) MPi-c válasza bazsi84 hozzászólására (») Nov 7, 2011 /
 
Megint az a dióda (D1)! Tegnap volt róla szó, hogy nem kell. Olvass egy kicsit vissza!
(#) vilmosd válasza bazsi84 hozzászólására (») Nov 7, 2011 / 1
 
Biztosan ezt csinaltad meg? Ugye egy tranzisztor B-E feszultsege altalaban 0,6 V. Te erre rakotod a 12 voltot. Az elso bekapcsolaskor elszall a tranyo. Kellene a bazisba egy 4k7 ellenallas sorosan es egy 2k2 a GND fele. Ez nem PIC kerdes, hanem alap elektro.
(#) röntgen válasza bazsi84 hozzászólására (») Nov 7, 2011 / 1
 
Azért illene a szerencsétlen tranyó bázis áramát korlátozni egy ellenállással. Pl. 10KOhm sorba.

Habár, már előttem leírták a lényeget.......
(#) icserny válasza bazsi84 hozzászólására (») Nov 7, 2011 /
 
Kicsit sánta ez a mikrovezérlő a 38 lábával! Lehagytál két tápellátással kapcsolatos lábat - gondolom be sincsenek kötve. Ez így hiba. Nem látom a tápfesz és a föld közé kötött kondenzátorokat sem.

Kérlek, vess egy pillantást a topik fejlécére!
(#) doup hozzászólása Nov 7, 2011 /
 
Valaki meg tudja nekem mondani hogy ez miért érvényzelen kifejezés?
data = I2C1_Rd(0);

Egyébként a data így van deklarálva
unsigned short data;
(#) icserny válasza doup hozzászólására (») Nov 7, 2011 /
 
Nem sok esélyt adtál a válaszra...

Nézz utána a leírásban, hogy a jobboldalon álló függvén visszatérési értékének mi a típusa!
(#) doup válasza icserny hozzászólására (») Nov 7, 2011 /
 
Már rájöttem azért köszi.
(#) doup hozzászólása Nov 7, 2011 /
 
Szeretnék egy digitális órát barkácsolni egy 18f4550 el és egy ds1307-el. A kódot bevágtam mert sajna a tömbjeim amibe kiolvasom a ds1307 adatait ÜRESEK így az lcd is az.
  1. // LCD beállítása
  2. sbit LCD_RS at LATD0_bit;
  3. sbit LCD_EN at LATD1_bit;
  4. sbit LCD_D4 at LATA2_bit;
  5. sbit LCD_D5 at LATA3_bit;
  6. sbit LCD_D6 at LATA4_bit;
  7. sbit LCD_D7 at LATA5_bit;
  8.  
  9. sbit LCD_RS_Direction at TRISD0_bit;
  10. sbit LCD_EN_Direction at TRISD1_bit;
  11. sbit LCD_D4_Direction at TRISA2_bit;
  12. sbit LCD_D5_Direction at TRISA3_bit;
  13. sbit LCD_D6_Direction at TRISA4_bit;
  14. sbit LCD_D7_Direction at TRISA5_bit;
  15. // LCD beállításának vége
  16.  
  17. unsigned short read_ds1307(unsigned short address );
  18. void write_ds1307(unsigned short address,unsigned short w_data);
  19. unsigned short sec;
  20. unsigned short minute;
  21. unsigned short hour;
  22. unsigned short day;
  23. unsigned short date;
  24. unsigned short month;
  25. unsigned short year;
  26. unsigned short data1;
  27. char time[9];
  28. char ddate[11];
  29.  
  30. unsigned char BCD2UpperCh(unsigned char bcd);
  31. unsigned char BCD2LowerCh(unsigned char bcd);
  32.  
  33. void InitMain() {
  34.   OSCCON = 0x71; //--- órajel beállítása 8Mhz-re
  35.   while ((OSCCON & 0x4)!=0x4); //--- várakozás az órajel stabilitásáig
  36.   delay_ms (500);
  37. }
  38.  
  39. void main(){
  40. InitMain();
  41. ADCON1 |= 0x0F;
  42. CMCON  |= 7;
  43. I2C1_Init(100000); //DS1307 100KHz
  44. PORTB = 0;
  45. TRISB = 0xFF; // Portb bemenetre állítom
  46. Lcd_Init(); // Lcd inicializálása
  47. Lcd_Cmd(_Lcd_CLEAR); // Képernyő törlése
  48. Lcd_Cmd(_Lcd_CURSOR_OFF); // Cursor kikapcsolása
  49. Lcd_Out(1, 1, "Ido:");
  50. Lcd_Out(2, 1, "Datum:");
  51.  
  52. //Idő beállítása
  53. write_ds1307(0,0x80);
  54. write_ds1307(1,0x10);
  55. write_ds1307(2,0x01);
  56. write_ds1307(3,0x02);
  57. write_ds1307(4,0x05);
  58. write_ds1307(5,0x01);
  59. write_ds1307(6,0x09);
  60. write_ds1307(7,0x10);
  61. write_ds1307(0,0x00);
  62.  
  63. while(1)
  64. {
  65.  
  66. //--- Kiolvasás
  67. sec=read_ds1307(0); // másodperc
  68. minute=read_ds1307(1); // perc
  69. hour=read_ds1307(2); // óra
  70. day=read_ds1307(3); // nap
  71. date=read_ds1307(4); // dátum
  72. month=read_ds1307(5); // hónap
  73. year=read_ds1307(6); // év
  74.  
  75. //--- Tömb feltöltése
  76. time[0] = BCD2UpperCh(hour);
  77. time[1] = BCD2LowerCh(hour);
  78. time[2] = ':';
  79. time[3] = BCD2UpperCh(minute);
  80. time[4] = BCD2LowerCh(minute);
  81. time[5] = ':';
  82. time[6] = BCD2UpperCh(sec);
  83. time[7] = BCD2LowerCh(sec);
  84. time[8] = '\0';
  85.  
  86. ddate[0] = BCD2UpperCh(date);
  87. ddate[1] = BCD2LowerCh(date);
  88. ddate[2] ='/';
  89. ddate[3] = BCD2UpperCh(month);
  90. ddate[4] = BCD2LowerCh(month);
  91. ddate[5] ='/';
  92. ddate[6] = '2';
  93. ddate[7] = '0';
  94. ddate[8] = BCD2UpperCh(year);
  95. ddate[9] = BCD2LowerCh(year);
  96. ddate[10] = '\0';
  97.  
  98. //--- Lcd-re való kiíratás
  99. Lcd_Out(1,5,time);
  100. Lcd_Out(2,7,ddate);
  101. Delay_ms(50);
  102. }
  103. }
  104.  
  105.  
  106. //--- Olvas függvény
  107. unsigned short read_ds1307(unsigned short address)
  108. {
  109. I2C1_Start();
  110. I2C1_Wr(0xd0);
  111. I2C1_Wr(address);
  112. I2C1_Repeated_Start();
  113. I2C1_Wr(0xd1);
  114. data1=I2C1_Rd(0);
  115. I2C1_Stop();
  116. return(data1);
  117. }
  118.  
  119. //--- Karakter konvertálás
  120. unsigned char BCD2UpperCh(unsigned char bcd)
  121. {
  122. return ((bcd >> 4) + '0');
  123. }
  124.  
  125. unsigned char BCD2LowerCh(unsigned char bcd)
  126. {
  127. return ((bcd & 0x0F) + '0');
  128. }
  129.  
  130. //--- Ír függvény
  131. void write_ds1307(unsigned short address,unsigned short w_data)
  132. {
  133. I2C1_Start();
  134. I2C1_Wr(0xD0);
  135. I2C1_Wr(address);
  136. I2C1_Wr(w_data);
  137. I2C1_Stop();
  138. }
  139.  
  140. Valaki tudna segíteni hol rontottam el? Vagy bekötési baj van? A ds1307-es Vb lábát nem kötöttem be mert most elég tápról az életrekeltéshez illetve a az SQW lábát sem kötöttem be sehova.
(#) doup hozzászólása Nov 7, 2011 /
 
A ds1307 Vb lábát nem kötöttem be sehova gondolom ha tápról megy és mindig újra beállítom az időt akkor most nem kell illetve az SQW lábát sem kötöttem be sehova így megfelelő vagy sem?
Az SCL és SDA lábakat pedig 4,7 k ellenállással +5v-ra tettem.
(#) röntgen válasza doup hozzászólására (») Nov 7, 2011 /
 
A Vb lábra azt írja ha nem használod akkor GND-re kösd.
(#) doup válasza röntgen hozzászólására (») Nov 7, 2011 /
 
Sajna ettől még nem oldódott meg de rákötöttem köszönöm.
(#) doup hozzászólása Nov 7, 2011 /
 
A time tömbömben egy ilyen került a kiolvasás folyamán: =1:=1:=1. Érdekes.
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
Idézet:
„Please note that the initial power-on state of all registers is not defined. Therefore, it is important
to enable the oscillator (CH bit = 0) during initial configuration.”
Az elso bekapcsolaskor az oszcillator tiltva vagyon, tehat be kell rugni. A Vb labra kell egy kulso elem, es utana mar nincs gond ezzel.
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
Raktam rá de akkor is ezt a badarságot kapom.
(#) doup hozzászólása Nov 7, 2011 /
 
A 32 khz kvarchoz viszont nem raktam kondenzátort. Kell?
Illetve a 18f4550 adatlaőján úgy láttam hogy a RB0 illetve RB1 re kell kötni.
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
Nem erted Nem az elem a problema, hanem az elso bekapcsolas. Le van tiltva az oszcillator, tehat nem is indul el (adatlap 4. oldal). Be kell inditani az oszcit a 0. byte 7. bit nullazasaval. maskent nem fog elindulni.
(#) Pepebá válasza bazsi84 hozzászólására (») Nov 7, 2011 / 1
 
Hali!
Én tennék a tranyó bázisával sorosan egy 4,7-10K ellenállást, nem igazán viseli el direktben a +12V-t.
Üdv.
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
És ezt hogy tudom megtenni mikroc-ben?
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
Ugyebar ott a programod ahol is inicializalod a DS-t. Te ugye elkezdted a
  1. write_ds1307(0,0x80);
sorral, ami az en olvasatomban 0b1000000 szamot jelenti binarisan. Abban a 7. bit mit mond? "1" . Tehat Te magad leallitottad az oszcit. Ezek utan nem is csoda hogy nem ketyeg az ora. Ezt a bitet kell "0" ertekkel inditani.
  1. write_ds1307(0,0x00);
Valahogy igy.
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
de a végén elindítom.
  1. //Idő beállítása
  2. write_ds1307(0,0x80);
  3. write_ds1307(1,0x10);
  4. write_ds1307(2,0x01);
  5. write_ds1307(3,0x02);
  6. write_ds1307(4,0x05);
  7. write_ds1307(5,0x01);
  8. write_ds1307(6,0x09);
  9. write_ds1307(7,0x10);
  10. write_ds1307(0,0x00);


Egyébként átírtam ahogy te mondtad úgy is ugyan azt írja.
(#) El_Pinyo válasza doup hozzászólására (») Nov 7, 2011 /
 
Két darab 12 pF-os kondenzátort még el kell helyezni a kvarc mellé. Egyébként az adatlapja is leírja.
(#) doup válasza El_Pinyo hozzászólására (») Nov 7, 2011 /
 
Rendben kipróbálom de nézegettem nagyon sok ilyen jellegű bekötést szinte sehol nem láttam.
(#) MPi-c válasza El_Pinyo hozzászólására (») Nov 7, 2011 /
 
Nem kell semmilyen kondenzátor.
(#) El_Pinyo válasza MPi-c hozzászólására (») Nov 7, 2011 /
 
A kvarchoz?
(#) MPi-c válasza doup hozzászólására (») Nov 7, 2011 /
 
Egyébként ezt a topikot sikerült megtalálnod és elolvasnod?
(#) MPi-c válasza El_Pinyo hozzászólására (») Nov 7, 2011 /
 
Igen, a kvarchoz nem kell kondenzátor! Kicsit nézd tovább azt az adatlapot...(Figure 3.)
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
Probalj mar meg olyat, hogy a Control regoszterben beallitod a SQWE bitet "1" szintre, majd a SQW/OUT labon megnezed van-e kimenet. Az RS0,RS1 "00" erteknel 1 Hz kimenetnek kellene lenni ha megy az oszci. Persze kell felhuzo ellenallas. Sot meg bonuszban lehet IT-re hasznalni ezt a kimenetet, es csak akkor fog a PIC a RTC-vel foglalkozni, ha letelt 1 sec.
(#) El_Pinyo válasza MPi-c hozzászólására (») Nov 7, 2011 /
 
Való igaz, ezt kielemezve már látom, hogy beépítetten tartalmazza a kondenzátorokat. Elnézést a figyelmetlenségért!
(#) MPi-c válasza El_Pinyo hozzászólására (») Nov 7, 2011 /
 
Látom, csak a keretet hagyták le, amiből egyből látszana, hogy mi van belül
(#) El_Pinyo válasza MPi-c hozzászólására (») Nov 7, 2011 /
 
Igen, de a szövegben egyértelműen le van írva, hogy beépítetten tartalmazza. Ez zavart meg a termék adatlapjában, hogy nem volt egyértelműen leírva. A rajzokon én is láttam, hogy nem szerepel, elég furcsának is tűnt.
Következő: »»   165 / 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