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   908 / 1207
(#) kriszrap hozzászólása Márc 10, 2017 /
 
Halli
PIC16f628 nál a RB3 lábon ki kell kapcsolni valamit hogy müködjön a nyomogomb??
Mert valamiért nem müködik rendesen nekem .
(#) Droot hozzászólása Márc 11, 2017 /
 
Sziasztok!

PIC32MZ2048EFH100 ADC-vel küzdök. Az adatlap teljes katyvasz, nem állnak össze a dolgok...
Sima ADC mérést szeretnék mindenféle trigger nélkül, A GND és a táp a referencia, az AN15-öt szeretném elsőkörben használni.
Abban sem vagyok biztos, de talán ha jól sejtem az ADC7-et kell erre használnom.
Hogyan kell beállítani?
1. a kalibrációs értékeket betöltöm
2. adccon1-3 beállítom
3. ANSEL-ben analóg bemenet, TRIS-ben szintén bemenet az AN15
Hogyan tovább?
(#) kriszrap válasza kriszrap hozzászólására (») Márc 11, 2017 /
 
Megoldodott.
(#) kriszrap hozzászólása Márc 11, 2017 /
 
Elkeztem használni egy DS18b20 höméröt MikroC be programozom mit rontok el???
(szobaba -5 fokot mér DD)

  1. Ow_Reset(&PORTB, 0); // Reset
  2.       Ow_Write(&PORTB, 0,0x44);  // Convert_T
  3.       Delay_nyfgy(750);// 750 ms
  4.  
  5.       Ow_Reset(&PORTB, 0); // Reset
  6.       Ow_Write(&PORTB, 0,0xBE);
  7.  
  8.       kod = Ow_Read(&PORTB, 0); // Byte 0: Temperature  7..0
  9.       kod = (Ow_Read(&PORTB, 0) << 8) + kod;
  10.  
  11.       if (kod & 32768) minusz=1;
  12.       else minusz=0;
  13.      
  14.       Homerseklet= kod >> 4 ;
  15.  
  16.        while (i > 0)
  17.        {
  18.         i--;
  19.         homersekletszamjegy[i] = Homerseklet % 10;
  20.         Homerseklet /= 10;
  21.  
  22.        }
  23.       idokiir(-1,-1,homersekletszamjegy[0],homersekletszamjegy[1],-1,-1,0);


Ötletem sincs .
Segítséget elöre köszönöm.
(#) kriszrap hozzászólása Márc 11, 2017 /
 
Felhúzó ellenállás meg van(4,7k) bemenetre állítva a láb. 4mhz kristály ról müköttetem.
(#) Hp41C válasza kriszrap hozzászólására (») Márc 11, 2017 /
 
Egy ötlet:
  1. Ow_Reset(&PORTB, 0); // Reset
  2. Ow_Write(&PORTB, 0,0xCC);  // Skip ROM
  3. Ow_Write(&PORTB, 0,0x44);  // Convert_T
  4. // Itt nagyobb áramot kell biztosítani.
  5. // Master applies strong pullup to DQ for the duration of the conversion (tCONV).
  6. Delay_nyfgy(750);// 750 ms
  7. // Ki kell kapcsolni a nagyobb áramot szolgáltató meghajtót.
  8. Ow_Reset(&PORTB, 0); // Reset
  9. Ow_Write(&PORTB, 0,0xCC);  // Skip ROM
  10. Ow_Write(&PORTB, 0,0xBE);
(#) kriszrap válasza Hp41C hozzászólására (») Márc 11, 2017 /
 
Skip romot hagytam ki....
(#) kriszrap hozzászólása Márc 12, 2017 /
 
Sziasztok)
Müködik az óráim funciója stb (talán még egy picit csiszolni kéne de sebaj)
Problémám az hogy 4 óra után 1 percet késik.

Stabic segítségével tartom 5 volton a tépfeszt.
Szűröm Csak a bemenőjelet 220ufal és ennyi,
4mhz kristálynál pedig 22pf van.

MikroCben írt órámat jegyzetömbe bele másoltam és néhol komenteztem.(Csatolom.)
Mi lehet a probléma ??? Szoftveresen valamit elrontottam vagy hadweresen nem szűrök rendesen???
Segítségeteket elöre köszönöm
(#) sonajkniz válasza kriszrap hozzászólására (») Márc 12, 2017 /
 
A c-hez nem tudok hozzászólni, de egyszer ugyan így jártam. A 60sec 1min váltásakor rossz művelet/érték viszonyt állítottam be, és így folyamatosan sietett az óra. Talán még nagyobb mértékben is mint neked.
(#) Bakman válasza kriszrap hozzászólására (») Márc 12, 2017 /
 
Miért nem hazsnálsz valamilyen RTC IC-t? Anélkül szinte csak próbálgatással lehet belőni a pontos frekvenciát.
(#) Elektro.on válasza kriszrap hozzászólására (») Márc 12, 2017 /
 
Sajnos most nincs időm végignézni a kódodat.
Tippet azért adnék. Nem tudom figyelembe vetted -e az időzítéselen felül a kódod futásához felhasznált időt.
Ha nem, akkor ezt is számítsd bele. Ezen kívül a külső quartz sem teljesen pontos. Mint mindennek az életben ennek is van toleranciája.(+/-...).
Azt mavaslom, hogy építs be a kódodba valamilyen korrekciós lehetőséget. Én akár két lépcsőset is csnálnék.
Az egyik egy rövidtávú , mondjuk 24 órás teszt alapján korrigálná az eltérést, a másik egy finomabb mondjuk 1-2 hetes teszt után.
(#) kriszrap válasza Elektro.on hozzászólására (») Márc 12, 2017 /
 
Idézet:
„Azt mavaslom, hogy építs be a kódodba valamilyen korrekciós lehetőséget. Én akár két lépcsőset is csnálnék.
Az egyik egy rövidtávú , mondjuk 24 órás teszt alapján korrigálná az eltérést, a másik egy finomabb mondjuk 1-2 hetes teszt után.”


Mire gondolsz pontosan??
(#) ktamas66 válasza kriszrap hozzászólására (») Márc 12, 2017 /
 
A PR2-re a 249 helyett nem 250 kellene?
Járatod egy hónapig, majd megméred az eltérést. Ezt visszaosztod egy IT-nyi értékre, majd ezzel az értékkel korrigálod a időt.
A hozzászólás módosítva: Márc 12, 2017
(#) Elektro.on válasza kriszrap hozzászólására (») Márc 12, 2017 /
 
Valami olyasmire gondoltam amit ktamas66 is írt. Egy durvább pontosításnál mondjuk óránként hozzáadsz vagy elveszel a számlát időböl egy picit. Ez hosszabb távon nyilván még mindig em elég pontos, ezért a finomabb korrekció miatt 1-2 hetente ugyan ilyen pontosítást csinálsz.
(#) kriszrap válasza Elektro.on hozzászólására (») Márc 12, 2017 /
 
A programkódomat megnézted amugy?
Ha igen nem lehetséges hogy a kiiratásom kési??
Interup csak a számolást végzi a while minden mástnyomogomb figyelést stb
(#) ktamas66 válasza kriszrap hozzászólására (») Márc 12, 2017 /
 
A kijelzés nem késhet 1 percet.
Abból lehet még hiba, ha az IT hosszabb ideig tartana mint 10ms (a legrosszabb esetet kell mérni), mert akkor kihagyna egyet.
(#) Elektro.on válasza kriszrap hozzászólására (») Márc 12, 2017 /
 
Bele olvasgattam a kódodba. Annyi időm nem volt, hogy ki elemezzem az egészet, de néhány fontos dologra felhívnám a figyelmed. MikroC ben vagy MikroPascalban bármelyik Delay fügvény kerülendő, ha ilyen pontos időzítésre van szükséged. A lényeg abban van, amit a delay függvény leírásában legelöl írnak is, hogy ezt a függvényt ahányszor beszúrod annyiszor bekerül a kódodba. Ez még nem lenne baj mert csak annyi a hatása, hogy hosszabb lesz a lefprdított kódod. (Azért tt megjegyzem erre jó megoldás amit te is alkalmaztál, ha saját függvénybe rakod.) Ami viszont nem jó az a kilyelzésed függvényébe beillesztett Delay, valamint a nyomógombos fügvényedben lévő. Ez mind ennyi időre megakassza a PIC -et. Ha ezek összeadódnak ez jelentkezik késéssel.
Javaslom, hogy ezeket az időzítéseket egy folyamatosan futó számláló okozta megszakítással old meg.Akkor az idő számlálása folyamatos lesz.
A hozzászólás módosítva: Márc 12, 2017
(#) kriszrap válasza Elektro.on hozzászólására (») Márc 12, 2017 / 1
 
Idézet:
„Javaslom, hogy ezeket az időzítéseket egy folyamatosan futó számláló okozta megszakítással old meg.Akkor az idő számlálása folyamatos lesz.”


Vagy is ha jól gondolom megy a while ciklus egy változót növelem ha eléri xy értéket akkor csinálvalamit.
Delay_us(1); használhatok hogy könnyeben tudjak számolna hát ha gyorsabban végig megy mint 1 us??? Remélem érthetően írtam.
Annyi ha van időd átfutodd még a kódóm hátha vn még benn hiba. legtöbb idöt a hőmérö vesziel..... 750 ms irtak hogy annyit várjak. (bs18b20)
(#) foxi63 válasza kriszrap hozzászólására (») Márc 12, 2017 /
 
Szia!
A program alapvetően jónak tűnik, az idő értékek másodpercenként frissülnek, a TMR2 megszakításában.A kijelzés ettől kezdve már mindegy mennyi ideig tar a főprogramban. A PR2 nek jó a 249-es beállítás.
A hozzászólás módosítva: Márc 12, 2017
(#) kriszrap hozzászólása Márc 12, 2017 /
 
Még annyit tápot szűröm 220uf annyi elég vagy stab icé után is rakjak??
(#) kriszrap hozzászólása Márc 12, 2017 /
 
Shiftelésnél delayek marathatnak??
(#) Elektro.on válasza kriszrap hozzászólására (») Márc 13, 2017 /
 
Van olyan számláló amit az órajeled léptet. Nem kell hozzá semmi While ciklus. Ha a számláló túlcsordul generál egy megszakítást.
(#) hapci válasza kriszrap hozzászólására (») Márc 13, 2017 /
 
Van aki nem bírja a meleget...
Szerintem Te is a ds18S20 adatlapját nézted és ds18B20 típust használsz. A hőmérséklet nem egyformán van kódolva!
(#) kriszrap válasza hapci hozzászólására (») Márc 13, 2017 /
 
Idézet:
„Van aki nem bírja a meleget...
Szerintem Te is a ds18S20 adatlapját nézted és ds18B20 típust használsz. A hőmérséklet nem egyformán van kódolva!”


Nem értem miért írtad.... Mert:Bővebben: Link
Hibás a bitek tologatása a kódomban???

Idézet:
„Van olyan számláló amit az órajeled léptet. Nem kell hozzá semmi While ciklus. Ha a számláló túlcsordul generál egy megszakítást.”


Én úgy oldottam meg hogy amikor le tellik 1 másodperc akkor frissítem a ki írast (elinditom a while ciklust) elvégzi a műveleteket és vissza állitja a frssités változót.

Szerintem majd nem ugyan az

  1. int frissit=0;
  2. int count=100;
  3. timer2{
  4.  
  5. if(!count--)
  6. {
  7.    frissit =1;
  8. }
  9.  
  10. }
  11.    while(1)
  12.    {
  13.        nyomogob figyelö
  14.        if(frissit==1)
  15.        {
  16.          frissit=0;
  17.          // müvelet pl homérö ki ir,bin ora ki ir stb
  18.         }
  19.    }

így oldottam meg.

Shiftelésnél Delay_us(10) kiszedjem amikor egy bitet(shift clock bitje) megváltoztatok???? vagy elhanygolható???
A hozzászólás módosítva: Márc 13, 2017
(#) hapci válasza kriszrap hozzászólására (») Márc 13, 2017 /
 
... mert én itt tévedtem el korábban, sehogy nem akart jó hőfokot mutatni. Príma kis mütyür, ha egyszer elindul. (Én asm-ben használom az adatlap, meg a korábbi hozzászólásomban jelzett minta alapján.)
Sok sikert a továbbiakban!
(#) kriszrap válasza hapci hozzászólására (») Márc 13, 2017 /
 
Jaaa értem)
Eddig nem szóltak hogy hibás.
(#) kriszrap hozzászólása Márc 14, 2017 /
 
Kedves Electro.on

Idézet:
„Valami olyasmire gondoltam amit ktamas66 is írt. Egy durvább pontosításnál mondjuk óránként hozzáadsz vagy elveszel a számlát időböl egy picit. Ez hosszabb távon nyilván még mindig em elég pontos, ezért a finomabb korrekció miatt 1-2 hetente ugyan ilyen pontosítást csinálsz.”


Hogyan lehet azt "észlelni" hogy siet vagy késik a program (MikroC)??
Lefutási idöket méregetem az interup void alat???? vagy hogy???
(#) ktamas66 válasza kriszrap hozzászólására (») Márc 14, 2017 /
 
Így sehogy. Keresel egy pontos időt a neten, ahhoz beállítod, majd pár hét múlva megnézed az eltérést. Ebből számolsz vissza a pontos frekvenciára.
(#) kriszrap válasza ktamas66 hozzászólására (») Márc 14, 2017 /
 
Köszönöm
Annyi a kérdésem tényleg igaz az hogy a pf változtatásával lehet állítani hogy siessen e az óra vagy késsen??
(#) Elektro.on válasza kriszrap hozzászólására (») Márc 14, 2017 /
 
Háát én ebben nem vagyok olyan biztos. Tudatosan , pontos frekvenciát így biztosan nem állítasz be.
Főként azért, mert 3kkora pontatlanságot nem az oszcillátor pontatlansága okoz, hanem a szoftvefes ciklusaid csúsztatják el a dolgot. Azért kell olyan a kódodtól függetlenül működő számlálóval , megszakításbol számoltatni az ídőt mert így amég a programod pl. a kiírással foglalatoskodik a számláló mgy tovább.
A Delay fügvénynél meg amég a delay megy mással ne foglalkozik, és fordítva. Úgy kéne megírnk mintha multitask működne .
Következő: »»   908 / 1207
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