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   550 / 1210
(#) don_peter hozzászólása Júl 27, 2014 /
 
Srácok, már kínlódom vele egy ideje és valamiért nem megy.
16F684-nél az A proton (RA2) csak alacsonyról magas szintre váltásnál tudok megszakítást kiváltani?
Tehát, ha RA2 input és, ha azt egy nyomógombbal felhúzom 5v-ra? (Így teszteltem és működik "fentebb beillesztett forrás")
Ha viszont RA2 output és magas szinten állítom, egy nyomógombbal pedig lehúzom testre, nem történik semmi.
Köszi a választ.
(#) Hp41C válasza don_peter hozzászólására (») Júl 27, 2014 /
 
Ne az INT funkciót használd, hanem az Interrupt On Change (IOC) funkciót.
(#) don_peter válasza (Felhasználó 15355) hozzászólására (») Júl 27, 2014 /
 
Azt hittem ezt így is lehet.
Gomb előtt le van húzva 10K-s ellenállással testre.
A gomb persze kikerüli és szimplán rövid zárja a lábat.
Akkor ezek szerint ez rossz ötlet sőt...?
A hozzászólás módosítva: Júl 27, 2014
(#) don_peter válasza Hp41C hozzászólására (») Júl 27, 2014 /
 
Használom:
  1. IOCA = 0b00000100;      // RA2 beállítva

De hogy váltok ki megszakítást, ha a gombom már be van építve és testre húzza RA2 lábat?
Ezt meg lehet még valahogy oldani vagy ebben a felállásban már nem?
A hozzászólás módosítva: Júl 27, 2014
(#) Hp41C válasza don_peter hozzászólására (») Júl 27, 2014 /
 
Felprogramozod az IOCA regisztert, az INTCON regiszte RAIE bitjéven engedélyezed a megszakítást. Az IOC modul mindig egy előbb beolvasott értékhez képest kezeli a megváltozást, a kiszolgáló rutinjának egyszer ki kell olvasnia a port regisztert, majd törölnie kell a RAIF bitet.
(#) don_peter válasza Hp41C hozzászólására (») Júl 27, 2014 /
 
Köszönöm, kipróbáltam, de a mostani testre húzós megoldással nem működik..
Átalakítom a kapcsolást mert ha RA2-őt bemenetként használom tökéletesen megy a megszakítás.
(#) kissi válasza don_peter hozzászólására (») Júl 27, 2014 /
 
Miért nem figyeltél Simpi kolléga megjegyzésére ?!
Bővebben: Link
(#) szidom válasza don_peter hozzászólására (») Júl 28, 2014 /
 
Üdv!
Ezt így értem, csak azon gondolkodok, hogy asm-ben hogy tudom mindezt megoldani.
(#) don_peter válasza szidom hozzászólására (») Júl 28, 2014 /
 
Sajnos ASM-hez nem értek.. C-s vagyok.

kissi: figyeltem és át is alakítottam a kapcsolást.
(#) Hp41C válasza don_peter hozzászólására (») Júl 28, 2014 /
 
Nem árt más típusok adatlapját is olvasgatni.... A 16F84A adatlapjában a 4.2 fejezetben a 4-3. ábrán jól látható, hogy a TRISx regiszter megfelelő vezérlő bitje a változás figyelést engedélyezi. Ez egyértelművé teszi, hogy csak bemenetnek állított port kivezetésre működik a változásfigyelés.
(#) don_peter válasza (Felhasználó 15355) hozzászólására (») Júl 28, 2014 /
 
Így tettem.

Hp41C : van pár típusom aminek folyamatosan böngészem az adatlapját, de ez felett csúnyán átsiklottam.
Köszi a segítséget.
(#) karak74 válasza don_peter hozzászólására (») Júl 28, 2014 /
 
Szeretnék visszakanyarodni a Vas, 19:14-kor feltett eredeti kérdésedre! Miért is kellett áttérni IOC-ra? Mert csak az egyik irányba megy a megszakítás! Próbáltad az OPTION_REG -nek az INTEDG bitjét (ami gyárilag 1) átállítani 0-ra? (Lásd adatlap 12-dik oldal 2.2.2.2 OPTION Register fejezet.) Akkor sem megy?
A hozzászólás módosítva: Júl 28, 2014
(#) Hp41C válasza karak74 hozzászólására (») Júl 28, 2014 /
 
Jó ötlet. Most már inkább az a probléma, hogy egy kimenetnek állított port lábon szeretne megszakítást kérni. Ezzel az ötlettel menne, de a kimenet nem szereti, ha tápra vagy földre kényszerítik a meghajtott lábat.
(#) don_peter válasza karak74 hozzászólására (») Júl 28, 2014 /
 
Igen próbáltam, használok Timer0-t így, a beállításommal lefutó élre van beállítva.
  1. OPTION = 2;

Próbáltam simán is...

Hp41C : van a pont, mert sehogy nem akar megszakítást tenni, ha zárom a kimeneti lábat.
Átalakítottam a kapcsolást, a kész nyákokon meg elvégzem a módosításokat.

Köszi mindenkinek a türelmet és segítséget.
(#) nedudgi válasza brugo hozzászólására (») Júl 28, 2014 /
 
Alkalmazása válogatja, hogy lehet-e helyettesíteni. Emlékeim szerint az egyedüli eltérés a memória mérete, és a soros port.
(#) Hp41C válasza brugo hozzászólására (») Júl 28, 2014 /
 
Teljes mértékben helyettesíthető a 16F628A a 16F648A -.val. Eltérés csak a program,az adat memória és az EEProm méretében van. A 16F648A a legnagyobb kapacitású. (A program memória lapozása nem jelenthet gondot, hiszen a 16F628-ra írt program nem használhatta.)
A 16F628A -ra írt program változtatás nélkül beprogramozható a 16F648A -ba.
A 16F628 -ra készült program esetén csak a kiolvasásvédlemmel lehet baj. A legjobb megoldás, ha a kiolvasásvédelmet letiltjuk. A konfigurációs szó felső 6 bitjét programozzuk 1 -re, azaz a konfiguráció szó 3Fxx értékű legyen.
(#) nedudgi válasza Hp41C hozzászólására (») Júl 28, 2014 /
 
Igazad van, én a Microchip összefoglaló táblázatát néztem Excelben. Abban azt állítják, nincs USART a PIC16F648A-ban.
(#) brugo válasza Hp41C hozzászólására (») Júl 28, 2014 /
 
Köszönöm szépen !
(#) karak74 válasza don_peter hozzászólására (») Júl 28, 2014 /
 
Szeretnék (újra) visszakanyarodni a Vas, 19:14-kor feltett eredeti kérdésedre! (És még te mondtad, hogy makacs vagy! )
Idézet:
„... ha RA2 input és, ha azt egy nyomógombbal felhúzom 5v-ra? (Így teszteltem és működik ...”

Tehát ez egy működő verzió volt, így induljunk ki ebből! Itt még feltételezem, hogy volt egy ellenállás, ami alapesetben a földre húzta a lábat. (Ha jól emlékszem 10K-s.)
Idézet:
„Ha viszont RA2 output és magas szinten állítom, egy nyomógombbal pedig lehúzom testre”

Azért állítottad kimenetre a kaput, mert a "Most ezt hogyan húzzam fel 5V-ra, ha egyszer a 10K-s ellenállás a földre húzza?" című kérdésre kerested a választ? Hát NE ÚGY, hogy kimenetre állítod! Ez tévedés volt! Maradjon RA2 bemenet, a 10K-st kösd ki, és kapcsold be a belső WAKE-UP (felhúzó) ellenállást! (Vagy kösd át a 10K-st az 5V-hoz és az RA2 lábra.) Így már kötheted a kapcsolót a láb és föld közé!
Idézet:
„OPTION = 2;”

Ez biztosan jó? Ez az INTEDG bitet állítja? Mert szerintem nem! Az INTEDG a 6-os bit! Szerintem bcf OPTION_REG,6 lenne a helyes! (Ja bocs, ASM-es vagyok! C-ben nem tudom, de a srácok biztosan segítenek!)
Ellenben ha ugyanezen a projekten belül használod a Timer0-át is és szintén az RA2-n keresztül ...
(#) don_peter válasza karak74 hozzászólására (») Júl 28, 2014 /
 
Idézet:
„(És még te mondtad, hogy makacs vagy! )”

Továbbra is fenntartom.

Valamit félre értettél, idézek magamtól is:
Idézet:
„Ha viszont RA2 output és magas szintre állítom, egy nyomógombbal pedig lehúzom testre, nem történik semmi.”

Itt igen, egy 10K-os ellenállás van a láb és test közt.

Idézet:
„Azért állítottad kimenetre a kaput, mert a "Most ezt hogyan húzzam fel 5V-ra, ha egyszer a 10K-s ellenállás a földre húzza?" című kérdésre kerested a választ?”

Nem nem erre kerestem a választ.
RA2 soha nem volt bemenet, mindig kimeneten volt, kifejtem:
Tehát az alap kapcsolásomban melyet meg is építettem az RA1, RA2 lábak kimenetre és PROTA regiszterrel magas szintre voltak állítva.
Eredetileg a programon belül figyeltem a szint változást a lábon egy if feltételben mely működött, de megszakítást már ebben a megoldásban nem tudtam rávarázsolni. (sehogy sem)

Hibásan azt hittem, hogy ha egy lábat PORTx regiszterrel magas szintre állítok és azt lehúzom testre az jó megoldás, de belegondolva ott igen csak rövid zárlat lesz....

Idézet:
„OPTION = 2; //0b00000010”

Hi-Tech fordítóban az OPTION == OPTION_REG-el.
Mivel simán decimálisan adtam meg az értéket, így Timer0 8-as előosztást állít be a többit 0-ra állítja köztük a 6-os bitet is ami az INTEDG bit.

simpi, Hp41C: javaslatait figyelembe véve mostanra módosítottam a kapcsolást mivel azt előtte hibásan építettem meg.
Most már jól meg: Bővebben: Link

Hozzáteszem, hogy azért döntöttem az átalakításnál mert másként nem lett volna megvalósítható az amit akartam.
A hozzászólás módosítva: Júl 28, 2014
(#) karak74 válasza don_peter hozzászólására (») Júl 28, 2014 / 1
 
Ok! Bocsánat! Legközelebb nem próbálok meg kitalálni okokat, hanem megkérdezem. (Csak azt hittem, hogy több lépéses kérdezz-feleleket tudok átugrani. Nem jött be!)
Ha azt a videót te tetted fel, nagyon jó lett!
(#) don_peter válasza karak74 hozzászólására (») Júl 28, 2014 /
 
Köszönöm, hogy szántál rám időt, mindenképp értékelem.
Sajnos kezdőként sok hibát követek el pedig vannak már olyan dolgok amelyekről úgy gondolom, hogy már tudom és kiderül mennyire nem.
Ilyen volt ez a hülyeségem is, hogy kimenetre és maga szintre állítok egy lábat majd azt kapcsolóval testre húzom.
Nem értem miért nem vettem észre, hogy ez zárlat...
Természetesen azt a videót most készítettem pár órája, hogy tudjam mutatni is miről volt eddig szó.
Maga az első projekt már rég kész volt és fel is tettem ide az oldalra a ki mit épített topikba, de mivel állandóan ki kellett venni az elemet, hogy ne merítse azt, így tovább fejlesztettem ezzel az üzemkész állapot beiktatásával.
Az új nyákon már természetesen nem lesznek ilyen csúnya vezetékes áthidalások..
Rendkívül érdekes volt ez a wake-up üzemmód és annak alkalmazása...
(#) zamatőr hozzászólása Júl 29, 2014 /
 
Üdv !
Valaki módosítaná ezt a programot .
1: jobb -bal gomb elengedése állítsa le a motort mint a stop gomb az eredetiben.
2: RC módban használom és a sebesség kevés a legnagyobb frekvencián ezt kellene programon belül módosítani, hogy gyorsabb legyen mert lassítani tudom a potméterrel.
Köszönöm.
(#) Pali79 válasza zamatőr hozzászólására (») Júl 29, 2014 /
 
Ahogy mondani szokás, van az a pénz... De ennek az apróban a helye...
(#) usane válasza zamatőr hozzászólására (») Júl 29, 2014 /
 
Nem nagy ügy. Kérdés, hogy a mostani frekihez képest mit akarsz?
(#) zamatőr válasza usane hozzászólására (») Júl 29, 2014 /
 
Szia
. Gyorsítani
(#) usane válasza zamatőr hozzászólására (») Júl 29, 2014 /
 
Oké, rosszul kérdeztem. Milyen arányban akarod gyorsítani? Legyen 2x gyorsabb, 1.5x, 5x? Mi ez egyáltalán, mert a mostani freki valamihez be lett állítva?
A frekvencia meg függ az órajeltől is. Ha változtatod az RC oszci frekijét azzal is módosul. Nem tudom most mennyi az oszci frekvenciája, de nem is lényeges.
(#) zamatőr válasza usane hozzászólására (») Júl 29, 2014 /
 
3x gyorsabb megfelelő. Léptető motor vezérlő ami most 9mp/ fordulatu áttétellel és 3mp/ford -tól lehetne állítani lassabbra .Maximum az oszci frekije ekkor még stabil.
A hozzászólás módosítva: Júl 29, 2014
(#) usane válasza zamatőr hozzászólására (») Júl 29, 2014 / 1
 
Próbáld ki. Remélem nem írtam el semmit.
Stop nincs, amig nyomod addig forog.
Üdv.
A hozzászólás módosítva: Júl 29, 2014
(#) zamatőr válasza usane hozzászólására (») Júl 29, 2014 /
 
Így tökéletes. Köszönöm.
Következő: »»   550 / 1210
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