Fórum témák
» Több friss téma |
Videókban láttam, hogy a PIC16F887 képes a potméter jeleit érzékelni.
Azaz meglehet írni rá olyan programot, hogy 256 különböző jelet érzékeljen potmétertől. Azt szeretném elérni, hogy az RA0-ra kötöm a potmétert, és a RD0-ra meg egy lámpát, ha a potmétert tekergetem, akkor változzon a lámpa fényereje. Erre tudna nekem írni valaki egy rövid Assembly kódot? Nagyon szépen megköszönném.
Szia!
A 16F887 10 bites A/D vel rendelkezik, tehát nem lehetetlen 1024 szint megkülönböztetése sem... A kimeneten való vezérlést pedig a legegyszerűbben a két CCP modul egyikének PWM üzemmódjának felhasználásávan az RC1 vagy RC2 lábon lehet megcsinálni.
Szia!
Nem lehetetlen a táp bekötése sem... Milyen kontrollert teszel majd bele: a 8 lábúaknak és a 16F684, 16F690 -nek az 1. és az utolsó lába a táp. Ha 18 lábút is akarsz bele tenni, akkor valahova középre is le kell vezetni a tápot jumperen keresztül. Ha már ennyi hely van a panelen, egy két potenciométer is felférne.
Valami konkrétabb?
Legalább, hogy milyen parancsokat kell használni. Jelenleg annyit tudok PIC programozásból, hogy LEDeket úgy villogtatok össze vissza ide-oda, ahogy akarok, plusz szimpla kapcsolókat tudok benne kezelni. de ugye ennek így önmagában, nem túl sok haszna van a való életben. Viszont ha már a potméter kezelését és fényerőszabályzást is tudnék eszközölni, úgy már azért volna értelme is a dolgoknak. Utána akár a LEDek villogásának sebességét is tudnám potméterről vezérelni.
Nem hinném, hogy egy tipikus analóg szabályzást rákényszerítve egy PIC-es kapcsolásra- a legjobb kiindulási alap lenne a tanulásra. Azért kezdi mindenki a led villogtatással és nyomógombok kezelésével, hogy átlássa az alapvető programírási lehetőségeket és feltérképezze az esetleges "csapdákat". Persze nem lehetetlen megcsinálni amit írsz, de úgy érzem ezt majd a led villogtatás után kéne kipróbálnod. Mindezt szelíd rábeszélésnek szánom, mert mindannyian bejártuk ezt az "utat" és tudjuk, hogy alapok nélkül nehezebb lesz.
Nézd meg az adatlapan az A/D és a CCP modul működését.
Ha assembly nyelven programozol, akkor bármit csinálsz, ugyanazt a 35 parancsot kell használni. PWM-hez is... Ismerni kell viszont a periféria modulok felépítését és vezérlő regisztereit, amit a mikrovezérlő adatlapja ír le részletesen.
PIC16F887-ről lévén szó, sok hasznos dolog megtalálható Milan Verle kitűnő könyvében, ami a Mikroelektronika cég honlapján szabadon elérhető. Ebben a könyvben ismerteti a perifériák felépítését, s a B függelékben mindenre egyszerű példákat is mutat. A Microchip honlapján is érdemes keresgélni, mert a PICkit2 Debug Express példaprogramjaiból (PICkit 2 Debug Express Lessons) is lehet tanulni.
A következő parancsokat kell majd használnod valószínűleg (a lista nem teljes, és még csak sorrendben sincs, a paramétereit pedig lehagytam):
ANDWF IORWF MOVF MOVLW MOVWF BCF BSF BTFSC BTFSS XORWF
Mint írtam már, a LED villogtatással és kapcsolók kezelésével, szinte már végeztem.
Idézet: „majd a led villogtatás után kéne kipróbálnod” Pont ez után vagyok. Szóval jöhetnek a potméterek.
A Microchip 28 vagy 44 lábú demokapcsolásokban majdnem kész példákat lehet találni.
Például...
Nem vagyok robot...
Itt található egy magyar nyelvű pic kézikönyv... Lehet én fogalmaztam rosszul. Szóval nekem csak a potméter és a fényerő kezeléséhez szükséges parancsokra lenne szükségem, lehetőleg valami paraméter sem ártana. Amiket felsoroltál, azok csak szimpla műveletek az adatokkal. De számomra cél parancsok kellenének, mint pl az ADCON, ADSEL. Idézet: Arra próbáltunk célozni, hogy erre nincsenek külön parancsok. „Szóval nekem csak a potméter és a fényerő kezeléséhez szükséges parancsokra lenne szükségem, lehetőleg valami paraméter sem ártana.” Idézet: Ezek nem parancsok, hanem regiszterek, amelyek az általános adatmozgató bitvizsgáló és bitmanipuláló parancsok operandusai lehetnek. „számomra cél parancsok kellenének, mint pl az ADCON, ADSEL.” Olvasd el figyelmesen, amiket idáig ajánlottunk, s mindenre fény derül!
Amúgy most ugyanazt fogod végigjátszani amit ebben a topikban? Kitalálsz valamit és azt az emberek szépen lépésről lépésre magyarázzák el neked, mert nem veszed a fáradtságot, hogy utánaolvass, keresgélj és mintaprogramok, rajzok alapján próbáld összerakni amit akarsz. 20 perceként beírsz valamit amire -hogy watt kolléga szavaival éljek- majd egy "robot" válaszol, pedig fele annyi idő alatt megkereshetted volna.
Mellesleg a fent említett topikban a végére összeraktam neked a kapcsolási rajzot ami kellett. Több hozzászólás nem érkezett, viszont kitaláltál megint valamit.
Elnézést kérek a hülye kérdéseim végett, de ez
Idézet: „nem veszed a fáradtságot, hogy utánaolvass, keresgélj és mintaprogramok, rajzok alapján próbáld összerakni amit akarsz” így NEM igaz. Mert igen is keresgéltem fórumokon, meg szimplán a google-ban. De akárhol keresek, nem igen találok választ a kérdéseimre. Lehet azért mert rosszul keresek, nem tudom. Amiket találni is szoktam, az általában vagy egy teljesen másik PIC-hez való (hiába írom be a PIC-em típusát a keresőbe) vagy egy általam teljesen ismeretlen programozási nyelvre van írva. Hsz meg azért nem érkezett a másik topic-ba, mert ugye, ott említettétek, hogy jobb lenne az alapoktól kezdeni és hát elkezdtem az alapoktól. Aztán ha elérek arra a szintre, akkor folytatom azt a topic-ot. De sajnos a hiányos angol tudás, és az eddigi Visual Basic-es tapasztalatok miatt kicsit nehézkesen haladok. persze van VB-s compiler is PIC-ekhez, de arra aztán még kevesebb a találat a keresőben. Úgyhogy PIC téren maradok az Assembly és a CSS C nyelvél. De először az Assembly-t akarom érteni.
Ugy megy, hogy az AD az egy ugynevezett periferia a PIC-ben. Az azt jelenti, hogy te a regiszterekben (ezek tulajdonkeppen speci memoriacimek, akiket altalaban a byte-on belul bitenkent kell ertelmezni, mintegy egymas melle vannak csomagolva mast-mast jelento bitek, ezt az adatlapban latod) pl. ADCON0,1,2 beallitod a parametereket, utana az egyik regiszter egyik bitjevel bekapcsolod a konverziot es varkozol. A PIC egy masik bit 0-ra allitasaval jelzi, hogy kesz van es utana masik regiszterekbol (ADRESHI, ADRESLO) kiolvashatod, hogy mi lett az eredmeny.
Tehat eloszor az ADCON-okkal beallitod, hogy - milyen referencifeszultseggel akarsz dolgozni - milyen pontossaggal dolgozzon (menyi ideje van konvertalni) - honnan akarod beolvasni, melyik AD labrol - azt az AD labat analognak kell beallitanod - jobbra vagy balra legyen igazitva a vegeredmeny - stb, ennyi jutott az eszembe - bekapcsolod az AD-t az egyik bittel. Utana az egyik ADCON bittel inditod GO/DONE bit=1. Addig varsz, mig ez a bit ujra 0 nem lesz, addig egy onmagaba visszatero ciklusban ujra es ujra lekerdezed. Ha vegre 0 lett, akkor kiolvasod az adreshi es adreslo regiszterekbol az erteket. Szinte mindegyik azonos szamu picben ugyanugy mukodik az AD, szoval nem kell PIC specifikus kodot keresned. Kezdonek jobb a 18F-es mert egyszerubb a regiszterkezelese, nem kell a bankokkal is bohockodni (a bankokkal a valo eletben is csak a baj van) . Angolul azert olyan szinten erdemes lenne megtanulnod, hogy megertsd az adatlapot. Nem bonyolult.
Azt nem ertem miert kell ennyit kinlodni ezzel! Az eredeti tervet kinyomtatod, es mar lehet is a PCB-t gyartani. En csinaltam egy par szaz probapanelt ezen terv alapjan, es idaig senki sem panaszkodott a minosegere. Egy oktatasi intezmeny volt a megrendelo.
Szia.
Volt egy kis időm.( amíg pihen a shtill ) Idézet: „Próbáld leírni, hogyan közelíted meg a kérdést!” Megpróbáltam. Összeállítottam egy sémát, ami alapján (ha jó) könyebb lesz leprogramozni a számlálót.
Szia!
Én is iszonyat kezdő vagyok,és megnéztem a "könyvet",amit be linkeltél.Nagyon jó! Szájbarágós.. Szóval bár nem nekem szólt,azért köszönöm!
Sziasztok. Ezidáig AVR-eket programoztam C-ben. Most valószínű az elvárások miatt szükségem lessz PIC-re is fejleszteni néhány dolgot. Azt szeretném kérdezni, attol akinek mindkettőben van tapasztalata, hogy mennyire problémás beletanulni a PIC-ek programozásába, C nyelven, hogyha van elég jelentős tapasztalatom AVR-ek terén?
Köszi, hogy megcsináltad ezeket ! Más hiba nincs? Lesz benne még 8 lábú , pl 12F683 is, elvileg azt is kezeli.. Köszi mindent előre is !!
Tudom, de nincs megfelelő fúroszáram hozzá, meg túl kicsinek találtam a forrpontokat. Remélem nem gond a terv...
Őőő, a egy kicsit változtattam, ezen kéne javítani, ha van még hiba..
Nincs mit... A furatmátrix feletti részen levő dupla pontsor kiosztása nem 2.54 mm. Nehogy későn lepődj meg, ha ide valamilyen csatlakozót szeretnél betenni (lcd, stb). A függőlegesen álló ledek fetett - mellett elférne egy - két trimmer potenciométer is.
Jaaaa, értem.. Akkor már csak annyi, hogy oda pontosan 2x10-es JACK-et beteszek, és pontos lesz... Köszönöm ! Ez azt jelenti, hogy akkor nincs más hiba... Még most este elkészül a panel..
Sajnos a PIC melletti is aszimmetrikus. (gondolom az átvezetés helyhiánya miatt...)
Szia! Köszi, hogy ránéztél
Őőő, az nem baj, hogy ott is van hézag, mert oda nem megy bele majd csatlakozó, oda drótot fogok forrasztani...
Azt hittem, hogy szabványos méretű tüskesort(/ aljzatot) használsz a ráillesztendő modulokhoz. Nekem az lenne a logikus.
Sziasztok, egy 18f4550-es picel vezérlek egy lcd kijelzőt. Működik is a C portján. Viszont ha a B portjára rakom akkor már nem. Úgy gondolom hogy a configurációs bitekkel lehet a gond vagy nem?
Tud valaki valami megoldást rá? Ha kell akkor leírom a config biteket.
Igen, de oda nem kijelző, se semmi se fog menni, oda drótokat fogok tenni, mert szerintem az lesz oda a praktikus.. Vagy még vackoljak az áttervezésével? Már lelakozztam a panelt. Aztán ha valamennyire megköt, akkor már szárítom, és fotozom is.
|
Bejelentkezés
Hirdetés |