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   175 / 1211
(#) Poostmaster válasza Hp41C hozzászólására (») Nov 13, 2011 /
 
Betettem, így már rendben lesz?
(#) Hp41C válasza Poostmaster hozzászólására (») Nov 13, 2011 /
 
Igen...
(#) doup hozzászólása Nov 13, 2011 /
 
Így gondoltátok?
  1. unsigned int cnt;
  2.  
  3. void interrupt() {
  4.   if (TMR0IF_bit) {
  5.      cnt++;                   // Increment value of cnt on every interrupt
  6.      TMR0   = 96;
  7.      INTCON = 0x20;           // Set T0IE, clear T0IF
  8.   }
  9. }
  10.  
  11. void main(){
  12.      I2C1_Init(100000);
  13.      PORTB = 0;
  14.      TRISB = 0;
  15.      TRISC = 0xFF;
  16.      Lcd_Init();
  17.      Lcd_Cmd(_LCD_CURSOR_OFF);
  18.      Lcd_Cmd(_Lcd_CLEAR);
  19.      write_ds1307(0,0x80); //Reset second to 0 sec. and stop Oscillator
  20.      write_ds1307(1,0x34); //write min 27
  21.      write_ds1307(2,0x10); //write hour 14
  22.      write_ds1307(3,0x02); //write day of week 2:Monday
  23.      write_ds1307(4,0x12); // write date 17
  24.      write_ds1307(5,0x11); // write month 6 June
  25.      write_ds1307(6,0x11); // write year 8 --> 2008
  26.      write_ds1307(7,0x10); //SQWE output at 1 Hz
  27.      write_ds1307(0,0x00); //Reset second to 0 sec. and start Oscillator
  28.      OPTION_REG = 0x84;       // Assign prescaler to TMR0
  29.      TMR0  = 96;              // Timer0 initial value
  30.      INTCON = 0xA0;           // Enable TMRO interrupt
  31.      cnt = 0;
  32.      do
  33.      {
  34.              if(cnt == 150)
  35.              {
  36.                    sec=read_ds1307(0); // másodperc kiolvasása
  37.                    minute=read_ds1307(1); // perc kiolvasása
  38.                    hour=read_ds1307(2); // óra kiolvasása
  39.                    day=read_ds1307(3); // nap kiolvasása
  40.                    date=read_ds1307(4); // dátum kiolvasása
  41.                    month=read_ds1307(5); // hónap kiolvasása
  42.                    year=read_ds1307(6); // év kiolvasása
  43.  
  44.                    time[0] = BCD2UpperCh(hour);
  45.                    time[1] = BCD2LowerCh(hour);
  46.                    time[2] = ':';
  47.                    time[3] = BCD2UpperCh(minute);
  48.                    time[4] = BCD2LowerCh(minute);
  49.                    time[5] = ':';
  50.                    time[6] = BCD2UpperCh(sec);
  51.                    time[7] = BCD2LowerCh(sec);
  52.                    time[8] = '\0';
  53.  
  54.                    ddate[0] = '2';
  55.                    ddate[1] = '0';
  56.                    ddate[2] = BCD2UpperCh(year);
  57.                    ddate[3] = BCD2LowerCh(year);
  58.                    ddate[4] ='.';
  59.                    ddate[5] = BCD2UpperCh(month);
  60.                    ddate[6] = BCD2LowerCh(month);
  61.                    ddate[7] ='.';
  62.                    ddate[8] = BCD2UpperCh(date);
  63.                    ddate[9] = BCD2LowerCh(date);
  64.                    ddate[10] = '\0';
  65.                    Lcd_Out(1,5,time);
  66.                    Lcd_Out(2,4,ddate);
  67.                    cnt = 0;
  68.               }
  69.               //~
  70.        }while(1);
  71. }
(#) doup hozzászólása Nov 13, 2011 /
 
Ennek így van értelme amit csináltam vagy abszolút nem jó úton járom a timerekkel?

  1. void interrupt() {
  2.   if (TMR0IF_bit) {
  3.      cnt++;                   // Increment value of cnt on every interrupt
  4.      TMR0   = 96;
  5.      INTCON = 0x20;           // Set T0IE, clear T0IF
  6.   }
  7. }
  8.  
  9. void main(){
  10.      I2C1_Init(100000);
  11.      PORTB = 0;
  12.      TRISB = 0;
  13.      TRISC = 0xFF;
  14.      Lcd_Init();
  15.      Lcd_Cmd(_LCD_CURSOR_OFF);
  16.      Lcd_Cmd(_Lcd_CLEAR);
  17.      write_ds1307(0,0x80); //Reset second to 0 sec. and stop Oscillator
  18.      write_ds1307(1,0x34); //write min 27
  19.      write_ds1307(2,0x10); //write hour 14
  20.      write_ds1307(3,0x02); //write day of week 2:Monday
  21.      write_ds1307(4,0x12); // write date 17
  22.      write_ds1307(5,0x11); // write month 6 June
  23.      write_ds1307(6,0x11); // write year 8 --> 2008
  24.      write_ds1307(7,0x10); //SQWE output at 1 Hz
  25.      write_ds1307(0,0x00); //Reset second to 0 sec. and start Oscillator
  26.      OPTION_REG = 0x84;       // Assign prescaler to TMR0
  27.      TMR0  = 96;              // Timer0 initial value
  28.      INTCON = 0xA0;           // Enable TMRO interrupt
  29.      cnt = 0;
  30.      do
  31.      {
  32.              if(cnt >= 384)
  33.              {
  34.                    sec=read_ds1307(0); // másodperc kiolvasása
  35.                    minute=read_ds1307(1); // perc kiolvasása
  36.                    hour=read_ds1307(2); // óra kiolvasása
  37.                    day=read_ds1307(3); // nap kiolvasása
  38.                    date=read_ds1307(4); // dátum kiolvasása
  39.                    month=read_ds1307(5); // hónap kiolvasása
  40.                    year=read_ds1307(6); // év kiolvasása
  41.  
  42.                    time[0] = BCD2UpperCh(hour);
  43.                    time[1] = BCD2LowerCh(hour);
  44.                    time[2] = ':';
  45.                    time[3] = BCD2UpperCh(minute);
  46.                    time[4] = BCD2LowerCh(minute);
  47.                    time[5] = ':';
  48.                    time[6] = BCD2UpperCh(sec);
  49.                    time[7] = BCD2LowerCh(sec);
  50.                    time[8] = '\0';
  51.  
  52.                    ddate[0] = '2';
  53.                    ddate[1] = '0';
  54.                    ddate[2] = BCD2UpperCh(year);
  55.                    ddate[3] = BCD2LowerCh(year);
  56.                    ddate[4] ='.';
  57.                    ddate[5] = BCD2UpperCh(month);
  58.                    ddate[6] = BCD2LowerCh(month);
  59.                    ddate[7] ='.';
  60.                    ddate[8] = BCD2UpperCh(date);
  61.                    ddate[9] = BCD2LowerCh(date);
  62.                    ddate[10] = '\0';
  63.                    Lcd_Out(1,5,time);
  64.                    Lcd_Out(2,4,ddate);
  65.               }
  66.               //~
  67.               if(cnt >= 10000 )
  68.               {
  69.                      Lcd_Cmd(_LCD_CLEAR);
  70.                      for(k = 0; k < 12; ++k)
  71.                      {
  72.                            Lcd_Chr(1, 3+k, text2[k]);
  73.                            Delay_ms(150);
  74.                      }
  75.                      Homerseklet_lekerdezes();
  76.                      Delay_ms(3000);
  77.                      Lcd_Cmd(_LCD_CLEAR);
  78.                      cnt = 0;
  79.               }
  80.        }while(1);
  81. }
(#) szitko válasza kissi hozzászólására (») Nov 13, 2011 /
 
Elnézést kérek, igazad volt, de nem csak a szimulátor szivatott, meg.
(#) kissi válasza szitko hozzászólására (») Nov 13, 2011 /
 
Ne izgulj, biztos sokat tanultál a "szivatás" alatt !

Steve
(#) szitko válasza kissi hozzászólására (») Nov 13, 2011 /
 
A röhej az, hogy ennél tényleg sokkal bonyolultabb programokat írtam már. Ez csak egy egyszerű PWM, és bitek váltogatása H-ból L-be. A különbség csak annyi, hogy ez határidős.
(#) romai hozzászólása Nov 14, 2011 /
 
Sziasztok segítséget szeretnék kérni pic -ben járatos embertől aki megfejti a problémám.gondoltam feldobom az erősítőmet lcd vu méterrel találtam hozzá kapcsolást "zaxione" oldalon és hex -et is beégettem nincs hiba sikrerült mégse mükszik.Kapcsolást ellenöriztem fizikailag rendben.Várom olyan ember jelentkezését aki hozzáértőbb e témában és érdekli egy- két kihívás.
(#) icserny válasza romai hozzászólására (») Nov 14, 2011 /
 
Megadhatnád az általad megépített kapcsolást, mert a Zaxione oldalán a kapcsolás nem teljes, nincs benne részletezve a PIC tápellátása. S mint tudjuk, az ördög a részletekben búvik meg! Lásd a topik fejlécében is...
(#) Hp41C válasza doup hozzászólására (») Nov 14, 2011 /
 
Csak néhány észrevétel:
- TMR0 írásánál nem csak a TMR0 regiszter íródik, hanem az előosztó is törlődik. Amíg a megszakítás érvényre jit, lezajlanak a mentések a TMR0 és előosztója számol tovább. Ha az értékét módosítani kell, akkor az addwf TMR0,f lehet a megoldás.
- Miért váltottál a TMR0 -ra? A TMR2 -nek az az előnye, hogy a nem kell törölni (a timer maga elintézi) és sokkal több osztási lehetősége van (a TMR0 csak 2 hatványával tod osztani).
- Ha egy számlálót használsz, akkor a sűrűbben kívánt eseménynél a modulo funkciót kellene használni, de az sztás időigényes.
- Jobb lenne, ha mindegyik funkcióhoz bites jelzőt (szemafort) használnál...
(#) szitko hozzászólása Nov 14, 2011 /
 
Kész lett a programom. Ezen sorokat, csak azért írom, hogy aki újonc a PIC programozásban (mint Én) tanuljon belőle.
Egy olyan programot kezdtem el írni, amit a jelenlegi, PIC-ASM tudássommal, kb. fél nap alatt el lehetett volna készíteni. Ezzel ellentétben ráment három napom, plusz egy csomó idegeskedés, plusz egy billentyűzetet szétvertem az asztalon, és a fórumba egy csomó felesleges hozzászólást írtam. Ha Hp41c nem írta volna, (amit nagyon köszönök neki, és Steve-nek) hogy a program jó, kitudja, tán még a monitor is bontásra került volna.
Tehát: A hibát egy rossz PIC okozta, plusz a szimulátor helytelen beállítása, plusz a kapkodás, plusz a nem oda figyelés, plusz az idegeskedés, nem pedig a tudás hiánya. Ezek mellett mások drága idejét is pazaroltam avval, hogy ide irkáltam mindenféle sületlenséget, ahelyett, hogy nyugodtan végiggondoltam volna, hogy hol, mit rontottam el. Ezért javaslom minden kezdőnek, aki hasonló cipőben jár, hogy gondolkodjon és tanuljon, akár mások hibájából is, pl. az enyémből.
Ui.: Aki úgy érzi, hogy e sorok nem férnek itt el, az kérem, használja a "Moderációt kérek!" Gombot.
Gábor.
(#) vicsys válasza szitko hozzászólására (») Nov 14, 2011 /
 
Szerintem bőven elfér. Köszönjük az őszinteségedet! Isten hozott a "csapatban"!
(#) icserny válasza szitko hozzászólására (») Nov 14, 2011 /
 
Idézet:
„Ezzel ellentétben ráment három napom”
Nem kell mellre szívni, én kerestem már programhibát három évig is egy gyári programban (RTOS a miniszámítógépes időkben). Csak két utasítás sorrendjét cserélték fel a nagyokosok, s emiatt bizonyos körülmények ritkán elforduló egyidejűségekor fejreállt/lefagyott a rendszer.
(#) szitko válasza vicsys hozzászólására (») Nov 14, 2011 /
 
[OFF]Nincs miért köszönetet mondani, Nálam ez a természetes.

icserny: Irígylem a kitartásod. Minden elismerésem.
(#) svandras0404 hozzászólása Nov 14, 2011 /
 
Üdv Mindenkinek!
Egy kis segítséget szeretnék kérni.
Mplab pickit2 Assembler elsö lépéseknél tartok.
Egyenlöre csak másoknak működő pwm progit szeretnék létrehozni, de sajna még az sem megy.
A progit a PWM pic kontroller forumban 817605 beírásban lévö linken találtam, de ugyan ez van a DR Konya könyvben is.

Sajna napok ota nem jutok semmire légyszi segítsetek.
Bocs a sok süketelésért és elöre is köszönöm mindenkinek.

* Szerkesztve ! A legközelebbi ilyen másolat törölve lesz !

lista.txt
    
(#) nedudgi válasza svandras0404 hozzászólására (») Nov 14, 2011 /
 
Hiányzanak az udata és code direktívák. A fordító azért panaszkodik, mert nincs definiálva az adat, és kód terület.
(#) Poostmaster válasza svandras0404 hozzászólására (») Nov 14, 2011 /
 
Az alapvető probléma az, hogy az említett hozzászólásban szereplő hivatkozásban 16F84A-ra van írva a program. Az átírás pedig nem annyiból áll, hogy átírom a processzor definiciót. Ez így 887-en nem működik. A Kónya könyvben hol találtad, mert én nem látom benne.
(#) szitko válasza svandras0404 hozzászólására (») Nov 14, 2011 /
 
Szia.
Kiegészítve az elöttem szólókat, Én nem látok egyetlen priféria beállítást sem, és nem biztos, hogy jó ha minden alapban indul el. Ha 16f887-et használsz, annak van két PWM modulja amivel sokkal könyebb a jel előállítása. Egy jó leírást találsz ezen az oldalon a 887-ről. Javaslom nézd át.
Ui: Legközelebb légyszíves használd a "kód" gombot, mert átláthatóbb, és ha ekkora a hibalista, dobd bele egy txt-be.
(#) Szpidi hozzászólása Nov 14, 2011 /
 
Sziasztok, segítséget kérnék.
Szeretnék PICel lehető legegyszerűbben egy tápegységhez áram és feszültségmérőt csinálni (24V / 2A). PIC 18F4523, mert az van. (tudom nem kell hozzá ennyi IO de jó lesz más funkcióra is) Nekem nem kell precíziós pontosság. Arra gondoltam, hogy 2,5V-os referencia és 12bites felbontás mellett egy 0,1 ohmos mérőellenálláson már elméletben 10mA-t tudnék mérni, és ilyen felbontás nekem elég lenne. Ami zavar - és ez a kérdés - hogy mi a helyzet a bemeneti ellenállással? Tudok a PICel feszültséget mérni 0,1 ohmos ellenálláson GND és A/D bemenet között?
Ha nem, akkor hogyan tudok mérni? Lehetőleg nem műveleti erősítős megoldást keresek.
(#) svandras0404 válasza nedudgi hozzászólására (») Nov 14, 2011 /
 
Üdv Nedudgi!
Köszönöm a tippet ,de sajnos fogalmam sincs milyen updata és code direc kellbele és hova hogyan stb.
Teljessen kezdö vagyok ez az elsö probálkozásom.
Ha lehet légyszives pontossan írd meg mit hogyan kell csinálni.
Elöre is köszi.
(#) icserny válasza Szpidi hozzászólására (») Nov 14, 2011 /
 
Idézet:
„Szeretnék PICel lehető legegyszerűbben egy tápegységhez áram és feszültségmérőt csinálni (24V / 2A).”

Ezt a cikket olvasd el!
(#) svandras0404 válasza Poostmaster hozzászólására (») Nov 14, 2011 /
 
Üdv Poostmaster.
Köszi a segítséget.
A PIC mikrovezérl alkalmazás t 2. kiadás 158-159.oldal.
Ha tudsz légyszi segíts ,hogy pontosan mit hogy kell írnom.
A feladat anyi lenne, hogy a PIC kit2höz lévö proba panelt
szeretném használni a rajta lévö poti-val (PORTA0) kellene a kitöltési t változnia .
Ha lehet akkor a PORTD -n lévö led fény erején kellene válltoznia.
Elöre is köszi.
(#) svandras0404 válasza szitko hozzászólására (») Nov 14, 2011 /
 
Üdv Szitko!
Köszönöm a tippet megnéztem az oldalt, de sajna nem találtam.
Légyszi pontosann írd meg holtalálom rajta, sajna nem tudok angolul.
Használtam a keresöt is de nem jött elö pwm.
***
Üdv

* Sűrgősen olvasd el a fórumszabályzatot és a használat feltételeit !
(#) szitko válasza svandras0404 hozzászólására (») Nov 14, 2011 /
 
Idézet:

megnéztem az oldalt, de sajna nem találtam

Mit nem találtál? Minden le van írva,amit tudni kell(ene) a feladat elvégzéséhez, és tele van példaprogramokkal.
Van itt a HE-n is a videós részlegben, nézd meg.
(#) svandras0404 hozzászólása Nov 14, 2011 /
 
Ez lemaradt.
Megvettem az újjabb Kónya könyvet is ehez kaptam cd-t
amin vannak példa programok de sajna a PIC 18-as tip családra írodott mind.
A 18 -ashoz valo progik futnak a 16f887-en?????
(#) svandras0404 válasza szitko hozzászólására (») Nov 14, 2011 /
 
Bocs Szitko, hogy enyire értetlen vagyok ,de nem tudok angolul.
Nem igazodom ki az oldalon.
Értem, hogy minden ott van amit tudni kell, de
légyszi pontosan írd meg melyik fülre kattintva hol találom, mert a keresö vel a PWM-re nem hoz fel példa pr.
Köszönöm a türelmed.
(#) Poostmaster válasza svandras0404 hozzászólására (») Nov 15, 2011 /
 
Szitko erre gondolt. Itt is az EXAMPLE 10 rész foglalkozik ezzel. Sajnos el kell, hogy szomorítsalak. A programozás tanulása nem megy az angol valamilyen fokú értése nélkül. Ha máshogy nem, netes fordítókkal. A tanítás sem működik úgy, hogy nem tanulmányozod az adatlapokat. Ez nem egy olyan rész, ahol megtanulsz algoritmusokat, aztán az mindegyiken működik. Mondhatnám, az az egyik legnehezebb, amikor egy programot át kell ültetni egyik csipről a másikra, mert szinte programsoronként össze kell hasonlítani a két adatlapot. Nyilván elég sokan elolvasták az első hozzászólásodat is, attól hogy KIABÁLSZ, még nem fognak tolongani az oktatók. Talán nem is lakik a közeledben senki, aki fel tudna vállalni.
(#) icserny válasza svandras0404 hozzászólására (») Nov 15, 2011 /
 
Idézet:
„sajna nem tudok angolul.”
Akkor miért nem angoltanárt keresel!?
(#) trudnai válasza svandras0404 hozzászólására (») Nov 15, 2011 /
 
Idézet:
„Bocs Szitko, hogy enyire értetlen vagyok ,de nem tudok angolul.”


Itt van Magyarul ugyanaz az oldal

Na jo, nem Magyarul, hanem Magylishul Google forditoval, de azert talan a lenyeg kiveheto belole kis fejtores aran -- es kozben tenyleg erdemes Angolozni, mert anelkul az elektronikaban es fokent a mikrovezerlok vilagaban eleg nehezkes lesz a dolgod (ill. ezen a teruleteken a masodik leggyakrabban hasznalt nyelvet, a Kinait is megtanulhatod )
(#) svandras0404 hozzászólása Nov 15, 2011 /
 
Köszönöm mindenkinek a segítséget.
Küzdök jelenleg is.
G Chrom-al fordítom az adatlapokat.
Tudok az angol problémáról folyamatban van, de még idöbe telik.
Következő: »»   175 / 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