Fórum témák
» Több friss téma |
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.
Ne az INT funkciót használd, hanem az Interrupt On Change (IOC) funkciót.
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
Használom:
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
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.
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.
Miért nem figyeltél Simpi kolléga megjegyzésére ?!
Bővebben: Link
Üdv!
Ezt így értem, csak azon gondolkodok, hogy asm-ben hogy tudom mindezt megoldani.
Sajnos ASM-hez nem értek.. C-s vagyok.
kissi: figyeltem és át is alakítottam a kapcsolást.
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.
Í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.
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
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.
Igen próbáltam, használok Timer0-t így, a beállításommal lefutó élre van beállítva.
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.
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.
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.
Igazad van, én a Microchip összefoglaló táblázatát néztem Excelben. Abban azt állítják, nincs USART a PIC16F648A-ban.
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 ... 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
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!
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...
Ü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.
Ahogy mondani szokás, van az a pénz... De ennek az apróban a helye...
Nem nagy ügy. Kérdés, hogy a mostani frekihez képest mit akarsz?
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.
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
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
|
Bejelentkezés
Hirdetés |