Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   543 / 1320
(#) googa hozzászólása Aug 11, 2009 /
 
Sziasztok! Ha SPI interfészre kötök megfelelő LCD modult, akkor itt is kell felhúzó ellenállás, mint I2C-nél, vagy csak mehet pőrén a PIC-re?
Elvileg van egy SI (Serial Data In), CLK (Clock), CS (Chip Select), A0 (Command(L)/Data(H)) vonalam. Ha kell, akkor ezek közül melyiket, kell felhúzni és mekkora ellenállással?
Hálás köszönet! Goo
(#) icserny válasza googa hozzászólására (») Aug 11, 2009 /
 
SPI-hez nem kell felhúzás.
(#) elektroláma hozzászólása Aug 11, 2009 /
 
Hogyan lehetne PIC-el vezérelt valamivel egy 6-8V közötti jelet 1,1-1,3-szorosan erősíteni? Csak a feszt kell, A minimális.
Néztem OPAMP-okat, amiket lehet vezérelni PIC-ről. Valaki már csinált vmi hasonlót? Más ötlet is érdekel.
(#) Hp41C válasza elektroláma hozzászólására (») Aug 11, 2009 /
 
Szia!

Kétféle - néhány erősítés beállítását meg lehet oldani úgy, hogy kapcsolod valamelyik erősítés állító ellenállást. CD4016, CD4051 lehetne használni.
Több (128 - 256) diszkrét erősítés beállítását meg lehet oldani, ha az erősítést digitális potencióméterrel állítod be.

Szia.
(#) watt válasza szilva hozzászólására (») Aug 11, 2009 /
 
Szia!
Az első próba megtörtént(csatoltam a rajzot. A tranyók helyére képzelj FET-eket!). Igaz nem BS170-el, hanem egy TTL FET-el a PHP55N03LT-vel.
Belátom nem a legjobb választás, mert nem elhanyagolható a Gate kapacitása, de gondoltam 470ohm-on keresztül csak meg lehet hajtani a gate-et. Hát nem. A BS170 jobb választás, mert pF-os kapacitásai vannak. Tehát a főpróba még várat magára!
(#) Hp41C válasza lidi hozzászólására (») Aug 11, 2009 /
 
Egy Shottky dióda a kollektor és a bázis közé, ahogyan az a 74LS szériában is van. Egy smd kivitelű dióda könnyen szerelhető a TO92 tokozású tranzisztorokra.
(#) lidi válasza watt hozzászólására (») Aug 12, 2009 /
 
Hát, érdekesen nézett volna ki a programozód 55A -es FET -ekkel Ja, még egy ötlet: esetleg egy dual fet-el tovább csökkentheted az alkatrész számot, gate ellenállás se kell szerintem.
(#) watt válasza lidi hozzászólására (») Aug 12, 2009 /
 
A gondom, hogy csak P-s és egy N-P-s duál FET-em van itthon. A próbákat már csak kíváncsiságból csinálom...
(#) Hp41C válasza watt hozzászólására (») Aug 12, 2009 /
 
Sziasztok!

A paralell porton a vezetékeken jelmeredekség korlátozás van beépítve - az adadtvonalak meghajtása legalább szimmetrikus, az autofeed és a többi vezérlő vonal open kollektoros/nyelőelektródás is lehet. Ez gyakorlatilag egy-egy R-C elemet jelent vonalanként. A jelalak trozulását több dolog is befolyásolja:
A tranzisztorok nyitása kb 0.7 V-nál következik be, a 7407 komparálási szintje pedig 1.4V, 74LS07-é pedig 1.1V. A BS170 kb 2V küszöbfeszöltséggel rendelkezik.
A modernebb fet-ek küszöbfeszültsége kb. 0,7V (irf7306).
Lassú felfutás az open kollektoros vezérlő jeleken.
Jelvisszaverődés a nem megfelelő lezárás miatt. A tranzisztorok bázisellenállása sokkal nagyobb, mint a megkívánt lezárás. Föleg a nagysebességű átvilelre képes (EPP, ECP) portoknál jelentkezhet.
Az ic-s megoldásoknál a bemeneti vedő diódák a reflexiókat csökkenthetik.

Sajnos a fent felsorolt problémákat okozó tulajdonságok a portot megvalósító áramkörtől erősen függenek. A legjobb megoldásnak a lezáró ellenállás beillesztése (értéke az adott porttól függ), és hiszterézises vevőáramkör lenne. A 7407 kapuja elé egy 74LS14. Vagy egy jelet két 74LS14 illesztene a pichez. Az open kollektoros meghajtást a második kimenetére kötött Shottky diódával is meg lehet oldani.

Sziasztok.
(#) lidi hozzászólása Aug 12, 2009 /
 
Találtam pár PIC -es könyvet. Köztük van a feljebb említettek is.
(#) jdani hozzászólása Aug 12, 2009 /
 
Hali. ezzel az égetővel tudok PIC16F628A égetni?... mert megépítettem, de valami nem stimmel..
(#) potyo válasza jdani hozzászólására (») Aug 12, 2009 /
 
(#) lidi válasza jdani hozzászólására (») Aug 12, 2009 /
 
Majd mindjárt jön Watt és elmondja hogy ez egy JDM klón, és hogy nemjó. Próbáld ki inkább megépíteni az ő printerportos változatát. A kapcsolások között ott a cikk. Vagy ha többször is használnál pic égetőt, akkor az Oshon félét. Bővebben: Link
(#) jdani válasza potyo hozzászólására (») Aug 12, 2009 /
 
ó, ez fantasztikus .... na nembaj. Mit ajánlasz helyette?... milyet készítsek, ami működik is?
(#) lidi válasza jdani hozzászólására (») Aug 12, 2009 /
 
Itt az oshon féle nyákokkal kapcs rajzzal mindennel: Bővebben: Link
(#) crepy válasza jdani hozzászólására (») Aug 12, 2009 /
 
Nekem működik 16f628-cal. Ic-progot használok. Az oldal supportja szerint a PGM-et GND-re kell kötni.
(#) jdani válasza lidi hozzászólására (») Aug 12, 2009 /
 
Meg is építem, nem gond... viszont ma jött meg a rendelésem akkor msot megint kellesz, és csak ,,filléreket,,...
(#) icserny válasza jdani hozzászólására (») Aug 12, 2009 /
 
MINDIG előbb kell kérdezni/olvasni/gondolkodni, és csak utána rendelni/forrasztani/feszültség alá helyezni!
(#) m.joco hozzászólása Aug 12, 2009 /
 
Hello
Azt olvastam, hogy ha a Timer1 modulra külső 32768Hz-es kvarcot teszek, és az előosztót pedig 1:1 -re állítom, akkor pontosan másodpercenként lesz megszakítás. Ezt nem nagyon értem, mivel így 32768-szor fog növekedni a Timer1 másodpercenként, és csak a 2. másodperc végén csurdol túl (2^16 = 65536). Szóval akkor hogy is van ez?
Üdv.
(#) potyo válasza m.joco hozzászólására (») Aug 12, 2009 /
 
Valamit ott rosszul írtak, mert valóban két másodpercenként fog túlcsordulni. Esetleg ha túlcsorduláskor a felső regiszter legfelső bitjét 1-be billented, akkor fogsz másodpercenként megszakítást kapni.

-----

Amúgy igazán rakhatott volna a microchip ide valami olyan bitet, aminek hatására a felső bit minden túlcsorduláskor 1-be billen, és tényleg másodpercenként okozna megszaítást...
(#) m.joco válasza potyo hozzászólására (») Aug 12, 2009 /
 
És ha 4194304Hz-es kvarcot használnék? Van ilyenem. Így ezzel elvileg másodpercenként 64 megszakításom lenne; minden megszakításkor növelném egy változó értékét eggyel, és ha ez eléri a 64-et akkor eltelt 1 másodperc. Alkalmas lehet ez időmérésre így?
Üdv.
(#) potyo válasza m.joco hozzászólására (») Aug 13, 2009 /
 
A nagyfrekvenciás kvarcok általában kevésbé pontosak, mint az órakvarcok, de amúgy igen, így is lehet. Viszont a Timer1 oszcillátor nem tudja a nagyfrekvenciás kvarcot meghajtani, hanem muszáj lesz főoszcillátorként használnod a kvarcot, és a processzor órajeléről hajtani a Timer1-et. Így viszont nem 64, hanem 16 megszakítás fogja adni az 1 másodpercet. Ha viszont 18F-et használsz, akkor a Timer0-t beállítod 16 bitesnek, adsz neki 16-os prescalert, és akkor a Timer0 tényleg másodpercenként fog megszakítást adni.
(#) potyo hozzászólása Aug 13, 2009 /
 
Vajon kipróbálják a microchipnél a kódjukat, mielőtt kiadják? Ezt találtam a TCPIP csomagban az LCD-re írás kódjában (LCDBlocking.c):

  1. #if defined(LCD_DATA_IO)
  2.                 LCD_DATA_IO = Data>>4;
  3.         #else
  4.                 LCD_DATA0_IO = Data & 0x10;
  5.                 LCD_DATA1_IO = Data & 0x20;
  6.                 LCD_DATA2_IO = Data & 0x40;
  7.                 LCD_DATA3_IO = Data & 0x80;
  8.         #endif


  1. #if defined(LCD_DATA_IO)
  2.                 LCD_DATA_IO = Data;
  3.         #else
  4.                 LCD_DATA0_IO = ((Data & 0x01) == 0x01);
  5.                 LCD_DATA1_IO = ((Data & 0x02) == 0x02);
  6.                 LCD_DATA2_IO = ((Data & 0x04) == 0x04);
  7.                 LCD_DATA3_IO = ((Data & 0x08) == 0x08);
  8.                 #if !defined(FOUR_BIT_MODE)
  9.                 LCD_DATA4_IO = ((Data & 0x10) == 0x10);
  10.                 LCD_DATA5_IO = ((Data & 0x20) == 0x20);
  11.                 LCD_DATA6_IO = ((Data & 0x40) == 0x40);
  12.                 LCD_DATA7_IO = ((Data & 0x80) == 0x80);
  13.                 #endif
  14.         #endif


A probléma a felső kóddal, hogy 4 bites módban nagyon nem azt rakja ki az LCD adatvonalaira a felső félbájt kiírásakor, mint amit kellene, hanem nullákat rak ki folyamatosan. Ez a kódrészlet lenne az, ami négy bites módba billenti először a kijelzőt, majd utána bármilyen íráskor ez rakja ki a tényleges lábakra az adatokat. Az érdekes, hogy az alsó félbájtnál viszont jól van írva a kód. Helyesen tehát az eleje:

  1. #if defined(LCD_DATA_IO)
  2.                 LCD_DATA_IO = Data>>4;
  3.         #else
  4.                 LCD_DATA0_IO = ((Data & 0x10) == 0x10);
  5.                 LCD_DATA1_IO = ((Data & 0x20) == 0x20);
  6.                 LCD_DATA2_IO = ((Data & 0x40) == 0x40);
  7.                 LCD_DATA3_IO = ((Data & 0x80) == 0x80);
  8.         #endif
(#) levii válasza potyo hozzászólására (») Aug 13, 2009 /
 
Nem csak a Microchipnél nem próbálják ki, régebben találtam egy példa programot mikro pascalban ami nem akart működni. Már szinte mindent átnéztem amikor megláttam hogy a portokat állították be rosszul. Szóval szerintem nem nagyon próbálgatják őket vagy a végleges verziót nem tesztelték csak.

Üdv!
(#) szilva válasza potyo hozzászólására (») Aug 13, 2009 /
 
Én ezzel a felsőbit-bebillentéssel kínlódtam egy sort. Elméletileg persze így működik, ahog írtad, de nálam a 2 másodperces megszakításokkal (szabadon futtatva a timer1-et) pontos volt az óra, ha pedig a timer1 megszakításban billegtettem a felső biteket, akkor késett (Azért biteket írok, mert ha nem csak a legfelső, hanem pl. a legfelső két bitet billented 1-be, akkor belátható, hogy pontosan fél másodpercenként fog megszakítás érkezni, 3 bitnél, negyed mádosperc, és így tovább. Nálam a cél a másodpercenként 16 megszakítás volt, mert így az ISR-ben kezelem a billentyűket és minden mást is, a főprogram gyakorlatilag egy végtelen ciklusban futó SLEEP lett.)

A megoldás az lett, hogy (kissé elítélhető módon) megvárom a TMR1L változását egy tight loop-pal az ISR-ben, és közvetlenül ezután teszem meg a TMR1H felső bitjeinek bebillentését (egy IORWF utasítással). Tehát erre figyelni kell, ha szükség van a pontosságra, pl. egy RTC esetén.
(#) szilva válasza potyo hozzászólására (») Aug 13, 2009 /
 
Ennek a megoldásnak (fő oszcillátornak használni az időalap kvarcát) még az is hátránya lehet, hogy ilyenkor nem tudod altatni a CPU-t, mert akkor a timer túlcsordulás IRQ sosem fog megérkezni. Alvó állapotban csak a timer1 használható időmérésre, aszinkron módban.
(#) NickE hozzászólása Aug 13, 2009 /
 
Próbálta már valaki, hogy mennyire működőképes MPLAB+C18 alatt, ha pendrive-t használunk project mappaként? Eddig mindig egy gépen írtam a programokat, de most keveset vagyok otthon és így 2 gépet kellene használnom. Csakhát nem azonos meghajtó lesz, így az eléérési út problémás, meg ki tudja még milyen problémákat vet fel a kérdés...
(#) watt válasza NickE hozzászólására (») Aug 13, 2009 /
 
Ha a különböző gépeken azonos módon telepíted a MPLAB-ot és a C18-at, akkor a rendszer beállítások azonosak lehetnek a projectben. Ezután ha másolod a projectet a pendrive-ról monduk a C meghajtón kialakított ugyanolyan mapparendszerbe, akkor szállítható lesz a project. Más megoldást egyelőre én sem ismerek. Elég szégyen ez a microchipre, miután pl. a VB6 évekkel ezelőtt megoldotta ezt a problémát, minden felhasználói macera nélkül! Az elérési útvonal hossz limitálásuk már csak hab a feketetortán!
(#) benjami válasza NickE hozzászólására (») Aug 13, 2009 /
 
Az MPLAB-ot szerintem nem érdekli hogy a project merevlemezen vagy pendrive-on található amíg a meghajtó betűjele meg nem változik. Állítsd be mindkét gépen mondjuk P: -re a pendrive-ot és akkor nem fog nyavalyogni (XP-n vezérlőpult / felügyeleti eszközök / számítógép kezelés / lemezkezelés), és ahogy watt is írta ugyanúgy telepítsd a 2 gépen az MPLAB+C18-t.
(#) watt válasza benjami hozzászólására (») Aug 13, 2009 /
 
Ez jó ötlet, szerintem is működhet!
Következő: »»   543 / 1320
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