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   166 / 1211
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
Én ezt nem tudom megmérni mert nincs hozzá megfelelő eszközöm.
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
1 Hz-et egy kozonseges multimeterrel, vagy egy LED segitsegevel is lathatod.
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
De azt megnéztem hogy ha a kvarcot kiszedem mit csinál akkor is ezt a hülyeséget írja azaz olyan mintha nem is menne a kvarc.
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
A led-nek mit kellene csinálnia a swq lábon?
Elméletileg egyre raktam write_ds1307(7,0xff);

Ha nagyot hibázok elnézéseteket kérem még gyerekcipőben járok.
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
Ne a kvarcot piszkald, hanem nezd meg van-e a SQW kimeneten valami. Esetleg meg kellene nezni a I2C vonalakon van-e kommunikacio. Egy hangkartyas gepbol lehet oszcilloszkopot varazsolni, ami kezdoknek nagyon megfelel. Igaz nem GHz-es, de ket csatornat lehet vele lesni. Legfeljebb addig nem hallgatsz zenet.
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
Akkor nem lathatsz semmit. Az elobb leirtam mit kell allitani.
(#) Hp41C válasza doup hozzászólására (») Nov 7, 2011 /
 
Mivel programozod a kontrollert? PICKit2 -vel. Az egyben egy 3 csatornás logikai analizátor is...
Milyen kivitel? Benne van a ICSP_CLK és ICSP_DAT vonalon a 4k7 lehúzó ellenállás?

Mivel az I2C vonalak elég nagy értékű felhúzó ellenállásokkal rendelkeznek, érdemes elkészíteni a buffer kártyát. A buffer kártyával már azok a PICKit2 -k is mérni tudják az I2C vonalakat, amiben benne vannak a lehúzó ellenállások.

A logikai analizátorral vedd fel a jelalakokat és hasonlítsd össze a DS1307 adatlapján levőkkel...
Az SCL1 és SDA1 láb bemenet?
(#) doup válasza Hp41C hozzászólására (») Nov 7, 2011 /
 
SCL1 és SDA1 láb bemenet a többihez sajnos ilyen szinten nem értek.
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
de ez így nem jó? write_ds1307(7,0xff);
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
0xff = 0b11111111. Nezd meg mit csinal a Control regiszterben ez az utasitas.
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
write_ds1307(7,0x10); ha így állítom akkor villog a led mintha led blinking lenne.
(#) vicsys válasza doup hozzászólására (») Nov 7, 2011 /
 
Ha villog, akkor megy az oszci, -> engedélyezve van. Eddig okés. Akkor most próbálj beleírni valamit majd kiolvasni.
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
Tudnál nekem segíteni hogy beleírjak valamit meg kiolvassak, mert lehet itt rontom el mindig furcsa karakterek jelennek meg.
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
Egyébként ez a forrás és villog a led de az lcd a time =1:=1:=1

  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 data1;
  23. char time[9];
  24.  
  25.  
  26. unsigned char BCD2UpperCh(unsigned char bcd);
  27. unsigned char BCD2LowerCh(unsigned char bcd);
  28.  
  29. void InitMain() {
  30.   OSCCON = 0x71; //--- órajel beállítása 8Mhz-re
  31.   while ((OSCCON & 0x4)!=0x4); //--- várakozás az órajel stabilitásáig
  32.   delay_ms (500);
  33. }
  34.  
  35. void main(){
  36. InitMain();
  37. ADCON1 |= 0x0F;
  38. CMCON  |= 7;
  39. I2C1_Init(100000); //DS1307 100KHz
  40. PORTB = 0;
  41. TRISB = 0xFF; // Portb bemenetre állítom
  42. Lcd_Init(); // Lcd inicializálása
  43. Lcd_Cmd(_Lcd_CLEAR); // Képernyő törlése
  44. Lcd_Cmd(_Lcd_CURSOR_OFF); // Cursor kikapcsolása
  45. Lcd_Out(1, 1, "Ido:");
  46.  
  47. //Idő beállítása
  48. write_ds1307(0,0x80);
  49. write_ds1307(1,0x10);
  50. write_ds1307(2,0x01);
  51. write_ds1307(3,0x02);
  52. write_ds1307(7,0x10);
  53. write_ds1307(0,0x00);
  54.  
  55. while(1)
  56. {
  57.  
  58. //--- Kiolvasás
  59. sec=read_ds1307(0); // másodperc
  60. minute=read_ds1307(1); // perc
  61. hour=read_ds1307(2); // óra
  62.  
  63. //--- Tömb feltöltése
  64. time[0] = BCD2UpperCh(hour);
  65. time[1] = BCD2LowerCh(hour);
  66. time[2] = ':';
  67. time[3] = BCD2UpperCh(minute);
  68. time[4] = BCD2LowerCh(minute);
  69. time[5] = ':';
  70. time[6] = BCD2UpperCh(sec);
  71. time[7] = BCD2LowerCh(sec);
  72. time[8] = '\0';
  73.  
  74. //--- Lcd-re való kiíratás
  75. Lcd_Out(1,5,time);
  76. Delay_ms(50);
  77. }
  78. }
  79.  
  80. //--- Olvas függvény
  81. unsigned short read_ds1307(unsigned short address)
  82. {
  83. I2C1_Start();
  84. I2C1_Wr(0xd0);
  85. I2C1_Wr(address);
  86. I2C1_Repeated_Start();
  87. I2C1_Wr(0xd1);
  88. data1=I2C1_Rd(0);
  89. I2C1_Stop();
  90. return(data1);
  91. }
  92.  
  93. //--- Karakter konvertálás
  94. unsigned char BCD2UpperCh(unsigned char bcd)
  95. {
  96. return ((bcd >> 4) + '0');
  97. }
  98.  
  99. unsigned char BCD2LowerCh(unsigned char bcd)
  100. {
  101. return ((bcd & 0x0F) + '0');
  102. }
  103.  
  104. void write_ds1307(unsigned short address,unsigned short w_data)
  105. {
  106. I2C1_Start(); // issue I2C start signal
  107. //address 0x68 followed by direction bit (0 for write, 1 for read) 0x68 followed by 0 --> 0xD0
  108. I2C1_Wr(0xD0); // send byte via I2C (device address + W)
  109. I2C1_Wr(address); // send byte (address of DS1307 location)
  110. I2C1_Wr(w_data); // send data (data to be written)
  111. I2C1_Stop(); // issue I2C stop signal
  112. }
(#) potyo válasza bazsi84 hozzászólására (») Nov 7, 2011 /
 
Itt van egy rajz arról, én hogyan csináltam. A te rajzodon a tápellátás is hibás, mert amikor a 12V eltűnik, akkor a 7805 kimenetén is el fog tűnni nem túl nagy késéssel a feszültség. A 7805-öt olyan helyről kell táplálni, ahol folyamatosan jelen van a 12V, és a sima 7805 helyett érdemes valami alacsonyabb készenléti áramú típust használni (az említett kapcsolásnál szintén találsz ilyeneket).
(#) vicsys válasza doup hozzászólására (») Nov 7, 2011 /
 
Esetleg nincs felcserélve a két adatvonalad?
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
  1. while(1)
  2. {
  3.  
  4. //--- Kiolvasás
  5. sec=read_ds1307(0); // másodperc
  6. minute=read_ds1307(1); // perc
  7. hour=read_ds1307(2); // óra
  8.  
  9. //--- Tömb feltöltése
  10. time[0] = BCD2UpperCh(hour);
  11. time[1] = BCD2LowerCh(hour);
  12. time[2] = ':';
  13. time[3] = BCD2UpperCh(minute);
  14. time[4] = BCD2LowerCh(minute);
  15. time[5] = ':';
  16. time[6] = BCD2UpperCh(sec);
  17. time[7] = BCD2LowerCh(sec);
  18. time[8] = '\0';
  19.  
  20. //--- Lcd-re való kiíratás
  21. Lcd_Out(1,5,time);
  22. Delay_ms(1000);
  23. }


A while ciklusban a késleltetést átírtam 1 másodpercre a program így úgy indúl hogy a másodperc 00 majd egy másodperc múlva =1 és megáll.
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
Megnézem
(#) doup válasza doup hozzászólására (») Nov 7, 2011 /
 
nincs felcserélve
(#) doup válasza doup hozzászólására (») Nov 7, 2011 /
 
Amit még észrevettem hogy amíg nem kezd el villogni a led addig 00-ról =1-re vált és megáll. De az óra és a perc ugyan úgy =1:=1
(#) vicsys válasza doup hozzászólására (») Nov 7, 2011 /
 
Esetleg a felhúzó ellenállásokat csökkents a próba kedvéért 2k2-ra
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
Köszönöm hogy ilyen kitartó vagy.
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
Csak 1k ellenállásom van jelenleg kéznél de sajna ezzel is ugyan azt csinálja. Nagyon kíváncsi vagyok mi lesz a probléma.
(#) vicsys válasza doup hozzászólására (») Nov 7, 2011 /
 
Egy kapcsrajzot és fényképet is küldhetnél, hogy lássuk...
(#) vilmosd válasza doup hozzászólására (») Nov 7, 2011 /
 
Probald mar meg azt hogy a kijelzore csak a sec ertekeket irod ki semmi mast. Annak valtozni kellene folyamatosan. Persze nem tudjuk egyaltalan megy-e a kijelzo frissitesed, vagy egyszer kiirt valamit, es ugy marad. Amennyiben van elem a RTC-n nem kell megcsinalni mindig az inicializalast, csak ha a CH bit "1". Ugy a RTC folyamatosan fut kikapcsolas utan is. Probald meg atalakitani a programot igy, hatha latsz valami valtozast.
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
Itt a kapcsolás az lcd-t és a pic tápjának bekötését nem rajzoltam le mert ez előtti projectem egy ds1820 volt és az működött hibátlanul.
(#) doup válasza vilmosd hozzászólására (») Nov 7, 2011 /
 
nincs elem az RTC-n
(#) vicsys válasza doup hozzászólására (») Nov 7, 2011 /
 
Meg 100nF...
(#) icserny válasza doup hozzászólására (») Nov 7, 2011 /
 
A PIC nem kap tápfeszültséget?
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
Raktam egyet, de sajna így sem jó.

DS1307.jpg
    
Következő: »»   166 / 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