Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   22 / 153
(#) vicsys válasza atideath hozzászólására (») Júl 2, 2010 /
 
Jó a belső felhúzó, de nekem már volt vele gondom. Ha hosszabb távra viszed a portot és muszáj levinni a felhúzó értékét (1k vagy az alá), akkor már csak a külső ellenállás jöhet szóba...
(#) Bell válasza atideath hozzászólására (») Júl 2, 2010 /
 
Nekem volt gondom a felhúzóellenállással, de csak azért, mert elnéztem.
Hiba esetén érdemes meggyőződni a jelszintek állapotáról. Praktikus okoknál fogva csak akkor teszek külső alkatrészt a tok mellé, ha nem felel meg ami az eszközben van.
(#) Bell válasza vicsys hozzászólására (») Júl 2, 2010 /
 
Köszönöm! Kár hogy nem lehet menteni, nyomtatni. Ahhoz az 5-10 alkatrészhez amihez néha nekem kell, nem érdemes ilyet vennem.
(#) icserny válasza Bell hozzászólására (») Júl 2, 2010 /
 
Hmmm, egy kicsit figyemesebben kellene nézelődni!
- ProfiCAD kapcsolási rajz készítő
- sPlan áramkörtervező program
(#) Bell válasza icserny hozzászólására (») Júl 2, 2010 /
 
Köszönöm!
Paint -el elég macerás ilyesmit rajzolgatni
(#) miklosch hozzászólása Júl 2, 2010 /
 
Visszatérve az encoderre én is most próbálkoztam normálisan beállítani. Nálam a megoldás az lett, hogy 1-1 kOhm felhúzó ellenállás, és a 1-1 100 nF-os kondenzátor a bemenet és föld közé. Szoftveresen pedig megszakításban kezelem (INT láb), fel- és lefutó élt is nézem a következő képpen:
  1. void interrupt isr(void)
  2. {
  3.         if(INTF)
  4.         {
  5.                 if(RB0==1)              // felfutó él jött
  6.                 {
  7.                         if(RB1==0)      // ha a másik láb 0-ban van, jobbra tekerem
  8.                                 szamlalo++;
  9.                         else
  10.                                 szamlalo--;     // ha nem, balra
  11.                         INTEDG=0;       // ezután lefutóra adjon megszakítást
  12.                 }
  13.                 if(RB0==0)              // lefutó él jött
  14.                 {
  15.                         if(RB1==1)      // ha a másik láb 1-ben van, jobbra tekerem
  16.                                 szamlalo++;
  17.                         else
  18.                                 szamlalo--;     // ha nem, balra
  19.                         INTEDG=1;       // ezután felfutóra adjon megszakítást
  20.                 }
  21.                 INTF=0;
  22.         }
  23. }
HI-TECH fordító 16F886-ra.
(#) Bell válasza miklosch hozzászólására (») Júl 3, 2010 /
 
Egyik észrevétel, hogy a kondenzátorok - mégha rövid időre is - néhány A áramot küldenek át az encoderen.
Másik hogy Rb értéke változhat megszakítás közben is. (Rb értékét érdemes eltárolni és azt vizsgálni.)
Az RC tagtól és az encoder sebességétől függő hibás működés lehet az eredmény.
(#) miklosch válasza Bell hozzászólására (») Júl 3, 2010 /
 
Köszönöm az információt! Szoftveresen kijavítom a dolgot, viszont hardveresen mit ajánlasz, hogy ne menjen tönkre az encoder?
(#) miklosch válasza miklosch hozzászólására (») Júl 3, 2010 /
 
A szoftvert átírtam és kipróbáltam kondenzátor nélkül, de így prelleg, mert össze-vissza számol. Ezután a 100 nF helyett csak 10 nF-ot tettem be, így rövidebb áramimpulzusokat kap az encoder, és ezzel az értékkel is jól működik. A prellegés-mentesítését nem akartam késleltetéssel megoldani, mert nem illik megszakításban késleltetni.
(#) icserny válasza miklosch hozzászólására (») Júl 3, 2010 /
 
Pergésmentesítés egyik módja a periodikus megszakításokkal történő mintavételezés.

Egy másik lehetőség a változásjelző bemenet (vagy INT bemenet) megszakításának néhány ms-os letiltása a megszakítás beérkezésekor.

Egyik kedvenc könyvem idevágó lapjait mellékelem, akinek van kedve, olvassa el! (Hitech C-hez készült kódokat mutogatnak benne) Bővebben: Link

rotary.pdf
    
(#) Bell válasza miklosch hozzászólására (») Júl 3, 2010 /
 
Mint pár sorral lentebb említettem, csak szoftverrel jól kézbentartható a prell. Ennek egyik módja, hogy több egymást követő eltérő állapotot veszek változásnak.
Tehát pl. ha bejön 4 eltérő állapot, de az ötödik már nem az, nullázom a számlálót és újra 5 eltérőt várok.
Ezt a számot az eszközhöz, a feltételekhez választva a prell teljesen kiküszöbölhető.
(#) Bell válasza icserny hozzászólására (») Júl 3, 2010 /
 
Nekem úgy tűnik, hogy az éleknél fellépő többszörös tranziensek +/- léptetést eredményeznek.
(#) icserny válasza Bell hozzászólására (») Júl 3, 2010 /
 
A mintavétel vagy az interrupt ideiglenes letiltása esetén a tranziensek nem kapnak szót.
(#) Bell válasza icserny hozzászólására (») Júl 3, 2010 /
 
A 10.26 ábra alapján pl. ha az első felfutó él 6 darab jól definiált prellből áll, az előállítja a fel / lefutó éleket és előre-hátra léptetgeti a számlálót.
Ha S0 -> S1 az átmenet akkor +, ha S1 -> S0 akkor -.
Szerintem nem az encoder minden állapotváltásakor, hanem egy fél, vagy teljes ciklus lefutása után kellene léptetni.
(#) icserny válasza Bell hozzászólására (») Júl 4, 2010 /
 
A 10.26 és 10.27 ábrákon bemutatott program csak pergésmentes (optikai vagy mágneses) érzékelőkhöz való!
Idézet:
„The code of Figures 10.26 and 10.27 works well as long as the signal transitions are noise free and clean of contact bounce, which is generally true of the signals produced by optical and magnetic encoders.”

A 10.29 és 10.30 ábrákon bemutatott programról mondják, hogy pergésmentesítést tartalmaz .
(#) Bell válasza icserny hozzászólására (») Júl 4, 2010 /
 
Valóban. Köszönöm!
Az ördög mindig a részletekben van.
Leragadtam annál a résznél, mert szép volt az ábra, tárolja a vizsgálandó állapotot, hogy később ne fusson hibára, de a következő programban már elköveti ezt a hibát. Így azt nem is néztem.
(#) lidi hozzászólása Júl 4, 2010 /
 
Láttátok az új Hi-Tech 18F -es fordítót ? C18 szerűen kell már megadni benne a konfigot, regiszterek nevei is C18 stílusú lett benne, azaz nem írhatom hogy TXEN, ki kell írni hosszadalmasan hogy TX1STAbits.TXEN. Remélem az a szándékuk hogy megdöglesztik azt a szutyok , michrochip szégyene C18 -at akkor, hamár így belerondítottak a Hi-Tech fordítóba.
(#) potyo válasza lidi hozzászólására (») Júl 4, 2010 /
 
Még nem láttam, de kíváncsivá tettél. Valami #define-al nem lehet visszakapcsolni a TXEN stílusú használatra? Amúgy nekem eddig semmi bajom nem volt azzal, hogy ki kell írni hosszan. Lehet hogy azért mert egyébként is szeretek mindent normálisan leírni rövidítések nélkül? Honnan lehet letölteni?
(#) lidi válasza potyo hozzászólására (») Júl 4, 2010 /
 
(#) Bell hozzászólása Júl 5, 2010 /
 
Sziasztok!
Feltettem az új HI-TECH fordítót. Még sosem használtam és nem tudom rávenni hogy bármit csináljon. A E:\PIC\Hi_18f1320-proba1 könyvtárban van a project és a project beállítasaiban is az van megadva..
Merre keressem a hibát?
(#) lidi válasza Bell hozzászólására (») Júl 5, 2010 /
 
  1. #include <pic18.h>
-vel kezdj, A htc nem is kell szerintem. És a header fileokhoz sem kell berakni azt a file-t.

Potyo: nem találtam ilyesmi beállítást, pedig jólesne ha lenne.
(#) Bell válasza lidi hozzászólására (») Júl 5, 2010 /
 
Rájöttem! A #pragma végén nem lehet ;
  1. #define akarmi TX1STAbits.TXEN

-al bármit megváltoztathatsz.
(#) lidi válasza Bell hozzászólására (») Júl 5, 2010 /
 
Jó, de azért nem fogom a PIC minden bitjét meg define -ozni.
(#) potyo válasza lidi hozzászólására (») Júl 5, 2010 /
 
Vedd elő a réginek a header fájlját. Az nem változott túl sokat úgysem.
(#) lidi válasza potyo hozzászólására (») Júl 5, 2010 /
 
Pont azért kellett új fordító, mert a régi nem ismerte azt amit most programoznom kell. Szóval szerintem nem jó irány amerre elindultak, de ők tudják. Én csak azt látom hogy nem olyan kényelmes benne progizni mint régen. Pl konfig beállításokat is összevadászni valami help file-ból, ahelyett hogy a header file végén látnám őket.
(#) potyo válasza lidi hozzászólására (») Júl 5, 2010 /
 
A C18-hoz való konfigot megeszi? Mert az elég egyszerűen elérhető minden tipushoz a help menűből. Van ott valami ilyen nevű felirat, könnyen megtalálható, csak nem tudom fejből.

Hogy jó irány-e, jó kérdés. Gondolom ha már ezt csinálták, akkor a C18-at el fogják hagyni és majd ez lesz az ajánlott fordítójuk, és nem akarták bevállalni, hogy az eddigi C18 használók (aki valószínűleg jóval többen vannak, főleg céges szinten, mint a HiTech PIC18 fordítót használók) szidják őket, ezért inkább a fordítót alakítják úgy, hogy a C18 alatt írt kódok lefordíthatóak legyenek vele. Mert végülis a fordítónak valószínűleg mindegy, csak a header fájlban kellenek a változtatások hozzá.
(#) watt válasza potyo hozzászólására (») Júl 5, 2010 /
 
Ja és a végén lesz egy nagy szörnyszülött!
(#) potyo válasza watt hozzászólására (») Júl 5, 2010 /
 
Miért lenne?
(#) watt válasza potyo hozzászólására (») Júl 5, 2010 /
 
Ahogy pl. a VB6-ból VS20xx lett.
(#) potyo válasza watt hozzászólására (») Júl 5, 2010 /
 
Na jó, de az Microsoft. Bár az MPLAB telepítő is elég szépen hízik, de abban legalább csomó cucc benne van, és egy 1mbit-es nettel sem tart olyan rettentően sokáig 40 helyett 100 megát lehúzni, aztán meg ami nem kell, nem rakom fel, telepítőt meg törlöm. A Xilinx cucca az viszont tényleg durva, hogy 8-9 giga körül van feltelepítve. Csak lestem, hogy hogyan csinálok ennyi helyet

De itt szerintem nem lesz ilyen probléma, Hi-Tech fordító kap egy C18 stílusú chip header fájlt, aztán már nagyjából meg is van oldva a probléma. Kezdetben én is csináltam hasonlót, csak én a fordítottját, C18-hoz csináltam headert, amikben ilyen rövid módon voltak a bitek. Aztán rájöttem, hogy kár vele vacakolni és írtam C18 stílusban tovább.
Következő: »»   22 / 153
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