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   167 / 1211
(#) doup válasza icserny hozzászólására (») Nov 7, 2011 /
 
De kap mint írtam azt nem rajzoltam le.
(#) vicsys válasza doup hozzászólására (») Nov 7, 2011 /
 
Nem bántásként írjuk le, de egy kusza félkész kapcsrajz és a "de benne van csak most nincs ott", nem segít a hibakeresésben. Hidd el, hogy mindenki segíteni akar, de legyél Te is partner a táncban...
(#) doup válasza vicsys hozzászólására (») Nov 7, 2011 /
 
OK belerakom.
(#) doup válasza doup hozzászólására (») Nov 7, 2011 /
 
Az új kapcsolás.

DS1307.jpg
    
(#) doup hozzászólása Nov 7, 2011 /
 
Configurációs bit nem lehet baj?
(#) bazsi84 hozzászólása Nov 7, 2011 /
 
Most egy kicsit lemaradtam...

Vilmosd, Pepebá és Röntgen: a 4,7k ellenállás sorba a bázissal megoldotta a próblémám. (Én nem tudok ilyeneket mert nem vagyok elektrós). Köszi a segítséget.

icserny: a Tina-val dobtam össze gyorsan egy rajzot, és nem rajzolta ki a másik 2 táplábat, de be van kötve attól függetlenül. köszi.

Üdv mindenki
(#) röntgen válasza bazsi84 hozzászólására (») Nov 7, 2011 /
 
Akkor most hogy állsz a dologgal?
(#) doup hozzászólása Nov 8, 2011 /
 
Sziasztok még mindig a ds1307-el SZENVEDEK. Addig jutottam hogy a kijelzőn a következő forma jelenik meg 00:00:00. A dátummal még nem foglalkoztam. Valaki meg tudná nézni a kódot miért nem ketyeg a ds1307 mert a másodperc egyáltalán enm változik.
  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.  
  16.  
  17. unsigned char sec, min1, hr;
  18. char *txt, tnum[4];
  19.  
  20.  
  21. void Zero_Fill(char *value) {    // fill text repesentation
  22.   if (value[1] == 0) {           //      with leading zero
  23.     value[1] = value[0];
  24.     value[0] = 48;
  25.     value[2] = 0;
  26.   }
  27. }//~
  28.  
  29.  
  30. void Read_Time(char *sec, char *min, char *hr) {
  31.   I2C1_Start();
  32.   I2C1_Wr(0xD0);
  33.   I2C1_Wr(0);
  34.   I2C1_Repeated_Start();
  35.   I2C1_Wr(0xD1);
  36.   *sec =I2C1_Rd(1);
  37.   *min =I2C1_Rd(1);
  38.   *hr =I2C1_Rd(1);
  39.   I2C1_Stop();
  40. }
  41.  
  42.  
  43. void Transform_Time(char  *sec, char *min, char *hr) {
  44.   *sec  =  ((*sec & 0x70) >> 4)*10 + (*sec & 0x0F);
  45.   *min  =  ((*min & 0xF0) >> 4)*10 + (*min & 0x0F);
  46.   *hr   =  ((*hr & 0x30) >> 4)*10 + (*hr & 0x0F);
  47. }
  48.  
  49.  
  50. void Display_Time(char sec, char min, char hr) {
  51.    Lcd_Chr(1, 5, (hr / 10)   + 48);
  52.    Lcd_Chr(1, 6, (hr % 10)   + 48);
  53.    Lcd_Chr(1, 8, (min / 10) + 48);
  54.    Lcd_Chr(1,9, (min % 10) + 48);
  55.    Lcd_Chr(1,11, (sec / 10) + 48);
  56.    Lcd_Chr(1,12, (sec % 10) + 48);
  57.  
  58. }
  59.  
  60.  
  61. void Init_Main() {
  62.   OSCCON = 0x71; //--- órajel beállítása 8Mhz-re
  63.   while ((OSCCON & 0x4)!=0x4); //--- várakozás az órajel stabilitásáig
  64.   delay_ms (500);
  65.   ADCON1 |= 0x0F;
  66.   CMCON  |= 7;
  67.   TRISB0_bit = 1;
  68.   TRISB1_bit = 1;
  69.   TRISA = 0x00;
  70.   TRISD = 0x00;
  71.   PORTA = 0;
  72.   PORTD = 0;
  73.   PORTB = 0;
  74.   Lcd_Init();
  75.   Lcd_Cmd(_LCD_CLEAR);
  76.   Lcd_Cmd(_LCD_CURSOR_OFF);
  77.  
  78.   I2C1_Init(100000);
  79.   LCD_Chr(1,7,':');
  80.   LCD_Chr(1,10,':');
  81.   LCD_Cmd(_LCD_CURSOR_OFF);
  82. }//~
  83.  
  84.  
  85. void main() {
  86.    Init_Main();
  87.    I2C1_Start();
  88.    I2C1_Wr(0xD0);
  89.    I2C1_Wr(0);
  90.    I2C1_Wr(0x80);
  91.    I2C1_Wr(0);
  92.    I2C1_Wr(0x17);
  93.    I2C1_Wr(0x02);
  94.    I2C1_Wr(0x04);
  95.    I2C1_Wr(0x05);
  96.    I2C1_Wr(0x01);
  97.    I2C1_Stop();
  98.  
  99.    I2C1_Start();
  100.    I2C1_Wr(0xD0);
  101.    I2C1_Wr(0);
  102.    I2C1_Wr(0);
  103.    I2C1_Stop();
  104.   while (1) {
  105.     Read_Time(&sec,&min1,&hr);
  106.     Transform_Time(&sec,&min1,&hr);
  107.     Display_Time(sec, min1, hr);
  108.     Delay_ms(1000);
  109.   }
  110. }//
(#) doup hozzászólása Nov 8, 2011 /
 
Egyébként az SQW-n a ledem villog.
(#) vilmosd válasza doup hozzászólására (») Nov 8, 2011 /
 
Szoval az utolso olvasasnal nem ACK, hanem NACK kell mert maskepp nem fejezi be az olvasast. Azt viszon most nem fogom kibogaraszni hogy a Mikroe "szuper" Lib-jeben hogy lehet ezt megmagyarazni a PIC-nek. Sajnos van egy-ket elvarazsolt dolog ezeknel a szerbeknel. Ezert is nem szeretem hasznalni ezt a "C" varianst.
(#) Poostmaster válasza doup hozzászólására (») Nov 8, 2011 /
 
Nagyon nem értek hozzá, de az adatlapjában a tipikus kapcsolásnál van egy elem, amit már más is említett neked, de a rajzodon nincs. Lehet, hogy félreértettél valamit. Az az elem egy áramforrás 3 V.
(#) doup válasza Poostmaster hozzászólására (») Nov 8, 2011 /
 
Igen de az csak akkor kell hogyha áramtalanítod a kapcsolást azaz a ds1307 Vcc lábáról lekerüla +5v akkor ne felejcse el az időt mint a pc-k alaplapján. Ha ezt nem akarom akkor az elem helyét földre kell húzni.
(#) doup válasza vilmosd hozzászólására (») Nov 8, 2011 /
 
Azt viszont abszolút nem értem hogy a ds1307 miért nem kezdi el az órát pötyögtetni mivel kiadom ezt a parancsot write_ds1307(0,0x00); //Reset second to 0 sec. and start Oscillator.
(#) vilmosd válasza doup hozzászólására (») Nov 8, 2011 /
 
Ez amit irtam a kiolvasasnal szamit. Viszont ha nem jol olvasol akkor nem tudom mit csinal a chip.
(#) Poostmaster válasza doup hozzászólására (») Nov 8, 2011 /
 
Bocsánat, ha nagyon mellé trafálnék, a C nem az én nyelvem, csak próbálok logikázni. Talán nem mondok hülyeséget. A kijelzés végén 1 másodpercet vársz? Nem lehet, hogy közben elszalasztasz valamit?
Tényleg bocs ha hülyeség.
(#) icserny válasza vilmosd hozzászólására (») Nov 8, 2011 /
 
Idézet:
„Azt viszon most nem fogom kibogaraszni hogy a Mikroe "szuper" Lib-jeben hogy lehet ezt megmagyarazni a PIC-nek.”
A STOP előtti I2C1_Rd(1); helyett I2C1_Rd(0); kell
(#) doup hozzászólása Nov 8, 2011 /
 
Csak azt nem értem hogy mondjuk kiolvasom az időt mondjuk 01:01:00 és ezt mindig egy végtelen ciklusban olvasgatom de nálam ez soha nem változik a ds1307-ben mert mindig ezt olvassa ki a masterem ez miért van?

A kiolvasásá függvényem végén ahogy icserny írta I2C1_RD(0)- val lezárom a kiolvasást.

  1. Soft_I2C_Start();
  2.   Soft_I2C_Write(0xD0);
  3.   Soft_I2C_Write(2);
  4.   Soft_I2C_Start();
  5.   Soft_I2C_Write(0xD1);
  6.  
  7.   seconds = Soft_I2C_Read(1);
  8.   minutes = Soft_I2C_Read(1);
  9.   hours = Soft_I2C_Read(1);
  10.   day = Soft_I2C_Read(1);
  11.   month = Soft_I2C_Read(0); // Ebben a részben zárom le a kiolvasást
  12.   Soft_I2C_Stop();
(#) doup hozzászólása Nov 8, 2011 /
 
Azt hittem ez nem egy bonyolult feladat de mégis már 2 napja feladja a leckét.
(#) icserny válasza doup hozzászólására (») Nov 8, 2011 /
 
Szerintem olyan problémát kellene keresni, amit teljességében átlátsz, fejben követni tudod, hogy mi történik a háttérben, és ellenőrizni tudod, hogy azt csinálja-e a program, amit szeretnél.

A tanuláshoz, hibakereséshez más megközelítést kellen választani! Itt hiába kérdezősködsz, ha olyan programnyelvet/fordítót használsz, ami elrejti előled a lényeget, mi pedig nem ismerjük/nem használjuk azt a fordítót. A PIC és az RTC adatlapjában elvileg minden le van írva, amire szükséged van. A gyári C18 fordító pedig olyan támogatói könyvtárakat biztosít, amihez a forráskódot is mellékelték. Így még arra is van esély, hogy az esetleges gyári hibákat kibogarássza belőle az ember (volt már rá példa!), vagy jobbat írjon helyette. Nehéz megérteni, hogy miért nem a járt(abb) utat választod.
(#) vilmosd válasza doup hozzászólására (») Nov 8, 2011 /
 
Na en pl igy fognek hozza: SQW a INT labra. IT-t beloni valamelyik elre. IT-ben bebillenteni egy bitet. Foprogramban amikor a IT bit 1, kiolvasas, kiiras, IT jelzobit -> 0. Ugye masodpercenkent jon az IT, tehat a uC masodpercenkent fog foglalkozni a RTC es a LCD kezelesevel. Ez azert lehet jo, mert Te varsz minden ciklusban 50 mS-t es lehet ez nagyon gyors az eszkozokhoz. Amugy sincs ertelme egy masodperc alatt huszszor olvasni-irni mivel uj informacio csak minden masodpercben van.
Ps Az ujban mar 1000mS, de jobb lenne a RTC-hez szinkronozni a programot.
(#) n_yálastrubadúr hozzászólása Nov 9, 2011 /
 
Jó reggelt!
Ezzel a pic-kel ismeretlenbe tévedtem. Amit HP41C-adot dat-file azzal a pickit mostmár bármit felismer, de ez pic 16f1826-ot csak akkor ha 3,3V vagy ez alatt van a vdd. Pedig nem LF-es. A banváltást meg nemértem, nem is láttam még ilyet hogy 32-bankja legyen. Így aj ól megszokot STATUS bitek nélkül még rendesen inicializálni sem tudok. Van a banksel utatsítás amit csak homályosan értek felteszem relatíve "ugrik" de vissza nem kell? vagy hogyan lehet érthetően bankot váltani visszaváltani. Mert így még egy I/O port beállítás sem megy. Köszi.
(#) n_yálastrubadúr hozzászólása Nov 9, 2011 /
 
Továbbá, látom hohy 49 utasítása van kérdezném azok hol lelhetők fel? Hogy Mennyiben szükséges az I/O beállításhoz a LATB LATA ANSELA ANSELB?
(#) n_yálastrubadúr válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
Úgylátom ez egy új fejezet, mert van itt baj jócskán -még- WREG, FSR0H FSR0L, FSR1L, FSR1H ,BSR ezek látom valami cím mutatók illetve közük van hozzá csak nem értem.
(#) icserny válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
Mielőtt teljesen szétoffolnád a topikot a fölösleges kérdésekkel, olvasd el a PIC "honlapján" található dokumentumokat, különösen az adatlapot és a szoftver migrációs dokumentumot. Ott minden le van írva részletesen, a 32 bank is (valójában ennél a mikrovezérlőnél csak 8 db van kihasználva, ha jól látom). Az is, hogy több indirekt címzésre használható regiszter van, ami a PIC18 felé közelítő felépítésnek köszönhető. (lehet, hogy nem volna butaság legalább felületesen a PIC18 felépítésévell is megismerkedni?)
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
A kulcs a BSR regiszter, ebbe a regiszterbe kell beírni a bank sorszámát... Érdekes regiszterek vannak minden ilyen kontroller 31. bankjában...
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
Az adatlapjában, a 28 fejezetben: Instruction Set Summary
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 9, 2011 /
 
Köszönöm, már legalább I/O portok mennek ...
(#) n_yálastrubadúr hozzászólása Nov 9, 2011 /
 
Akkor mondjuk decimálisan értéket adok a BSR-nek. És abban abankban lesz? pl:
movlw.0
movwf BSR ;> bank0 ?
movlw .1
movwf BSR ;> bank1?


ésígytovább?
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
Inkább

  1. movlb 0 ;Bank 0
  2. movlb 9 ;Bank 9


Még inkább
  1. banksel TRISA

stb..
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 9, 2011 /
 
igen a banksellel próbálkoztam de ott ha nem küldök egy banksel latb-t is akkor semmi, hol van olyankor. Azthiszem hogy az első példád átláthatóbb. Elmagyaráznád hogy ha banselezek akkor tulajdonképpen mitcsinálok.
Következő: »»   167 / 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