Fórum témák
» Több friss téma |
Szia!
Köszi a választ, ezeket átnéztem, irányfordítás ok, bank váltás ok. Úgy néz ki megoldódik a probléma, nem tudtam hogy egyszerre csak egy eszköz lehet adó módban. Az volt a probléma, hogy két soros portot tettem a buszra egy adót és egy vevőt. Az adóból küldtem karaktert, ami meg is érkezett, végrehajtja a PIC a feladatát majd próbálna vissza küldeni csak az adó oldal fogta a buszt. Most vétel után indítok egy várakozást, azalatt adó módból átkapcsolom az adót, és így már tud küldeni a PIC.
a kapcsolók teljes egészében szabadok, őket mechanikusan mozgatom és arról szeretnék a számítógépre jelet, hogy hova forgattam az egyes kapcsolókat,
Nem értek nagyon hozzá, de elsőre alami olyasmire gondoltam hogy minden forgókapcsoló közös áramköre rá van kötve valami kisebb tápegységre, és ha valamilyen állásba tekerem őket, akkor azt a lábat húzza mondjuk egy pic valamelyik lábára, hogy jelet kapjon, vagy ha valahogy egyszerűbben is meg lehet oldani...
A korábbiakban azt említetted, hogy kezdő vagy, de nem tudni, hogy miben. Mindenesetre az, hogy PIC-et emlegettél sejteti, hogy lehet ebben akár némi szerénység is. Ennek ellenére igyekszem úgy válaszolni, hogy a teljesen kezdők is fefogjanak belőle valamit:
A feladat megoldható, nehézsége a Bluetooth használatában rejlik. Ráadásul két feladat is van: 1. A kapcsolói oldal Bluetooth modullal. 2. A számítógép oldal (benne/hozzá Bluetooth-al). Kapcsolói oldal: Jól sejtetted, ehhez a modulhoz mindenképpen kell valamiféle mikrokontroller, ami a kapcsolóállást érzékeli. Erre számos lehetőség van, függően a kapcsolótól. Az általad említett módon a PIC lábak pl. egyenként egy-egy ellenállással a tápra vannak fölhúzva (van olyan PIC port, ahol ezek megspórolhatók), és a kapcsoló zárja valamelyiket közülük földre. Egy 20 lábú PIC esetén akár 16 állású kapcsolót is tudunk így kezelni. Mivel a PIC-ek A/D komvertert is tartalmaznak, analóg jelként akár 1 bemenet is elegendő. Ekkor a kapcsolóval egy feszültségosztó-létra egyes pontjairól vesszük a jelet, és a lemért feszültség szolgáltat információt arról, hogy melyik állásban vagyunk. Sok más megoldást is ki lehet találni, de a kapcsoló leolvasása az egyszerűbb része a feladatnak. A mikrokontroller komolyabb feladata a Bluetooth modullal való kommunikáció. Ez nem pitty-putty dolog, és függ attól is, hogy miként akarjuk fogadni a jelet a számítógép oldalon. Mindenesetre az egyik legegyszerűbb kapcsolat a modullal a 3 vezetékes kommunkáció (GND, soros input, soros output). Ehhez olyan mikrokontroller kell, ami képes erre, azaz van USART-ja. A dolog többi - nagyobb - része a kommunikációt biztosító program, melynek elkészítése programozói gyakorlatot, és a Bluetooth modul kommunikációs protokolljában való jártasságot igényel. Ha mikrokontrollert használunk, akkor a megírt program beégetéséhez beszereznünk, vagy csinálnunk kell egy programozó egységet ("égetőt"). Ez pl. lehet a PicKit2 (elavultabb, de még jó), vagy PicKit3 (korszerűbb), vagy más - ezeknél is drágább - egység. Illetve arra is adhatjuk a fejünket, hogy fáradságos munkával mi készítünk el egyet. Szintén szükség van egy számítógépen (pl. PC-n) futó fejlesztőrendszerre, amin a programunkat írjuk, teszteljük a mikrokontrollerhez (PIC-nél pl. MPLAB), s amelyet vagy ingyen letölthetünk, vagy drágán megvásárolhatunk ha profi eszközt akarunk használni. Számítógép oldal: A Bluetooth rész fejlesztése valójában innen indul. A) Vagy van olyan alkalmazás a számítógépre (PC, MAC, Android-os mobil, stb.) amely megfelel nekünk, és képesek vagyunk a kapcsoló oldali részen az ehhez való adatfolyamot biztosítani. B) Vagy mi fejlesztünk egy alkalmazást valamilyen fejlesztőeszközzel, valamilyen programozási nyelven, melyhez van Bluetooth kapcsolatot kezelni tudó programmodul, és persze ehhez is megvan a programozói gyakorlatunk. A fentiekből látható, hogy a Bluetooth-ot nem kifejezetten kezdőknek találták ki, a feladat nagy része programozói. De én már hallottam olyan jó programozóról is, aki HW ügyben kezdőnek vallotta magát. A feladat lényege, hogy "digitálisan érzékelt jeleket Bloutooth-on át továbbítani és feldolgozni" szerintem annyira gyakori lehet, hogy elképzelhető hogy ehhez már az elmúlt években csináltak egypár jobban használható modult, és alkalmazást, de erről az itteni topikban jártas szakértők tudnak neked tanácsot adni (vagy már volt is ilyen téma itt korábban, de ennek én sem tudtam utánanézni, ám ha te visszaolvasol, lehet, hogy segít neked).
Kösz a segítséget, igazából rendelkezek pickit2 klónnal, és korábban programoztam is pic-et, ilyen projektet egyedül még nem terveztem meg (kivitelezni már komolyabbakat is csináltam)
Először a kapcsolók lekezelését szeretném tisztázni, az a helyzet hogy nem egy kapcsolóm van valahány állással, hanem több kapcsolóm van több állással, tehát mondjuk 6 kapcsolóm van és mindegyiknek van 4 állása akkor összesen 4^6-on állás van, úgyhogy valószínüleg az egybe kezelés kilőve. Ezért gondoltam hogy valahogyan a pic mind a 6 kapcsolóhoz rendel egy állást, és ha az egyik változik, akkor elküldi mind a 6 nak az állását.
4^6 állás van, de 6*4 lábon be lehet olvasni 1 a 4 ből kóddal, 6*2 lábon 2 bites bináros kóddal, 6 lábon analór (ellenállásos) kóddal.
Sziasztok!
Ez az AVR nél megszokott stílus:
alkalmazható a PIC nél is? (Pl. MPLAB X IDE, XC8 compiler)
Jó reggelt kívánok!
Akkor válaszolnák is a saját kérdésemre. Az XC8 ezeket fogadja el többek között.
Az első verzió számomra megfelelő lenne az AVR világából. Viszont a processzor ill. fordító szempontjából melyik az effektívebb mód? Bocsánat a hülye kérdésekért, de ha már vettem PICkitet akkor ráállok komolyabban a témára. Olvasgattam tutorialokat, de annyiféle fordító van, hogy nem is találtam számomra egyértelműt. Továbbá mintha olyat is láttam volna, hogy vannak előre megírt makrok vagy rutinok. Gondolok itt olyanra, hogy ADC konfigurálás, UART stb. Esetleg tudna nekem ajánlani valaki egy rendes anyagot amin elindulhatnák? Egyenlőre semmi sem világos nekem, hogy mit lehet és mit nem a környezet keretében. Köszönöm a tanácsokat. Üdv. Gyuszi
Az XC8-at nem ismerem, de a Microchip mikrovezérlőihez általában másféle definíciókat tartalmaznak a gyári fejléc állományok és a programkönyvtárak.
1. Változat:
2. Változat:
Összefoglalva: az AVR stílus itt azért nem működik, mert nem 0, 1, 2, 3.., 7-ként vannak definiálva a bitnevek. (legalábbis az általam korábban használt C18-ban és C30-ban) A hozzászólás módosítva: Máj 29, 2014
Köszi! Van most bennem keveredés... Úgy látszik már amit lehet az egyikben azt a másikban is. Igyekeznek ezek (is) másolni egymástól. Ha lenne egy normális programozóm AVR hez akkor maradnák azon. Amivel tudtam programozni az csak a haver Dragonja volt. Már nem adok ki mégegyszer annyit, mint a pickit-ért. Olcsóbb lesz átállni PIC-re. No meg ott az ardu is, az legalább magát programozza. Azon majd folytatom az AVR-el való ismerkedést is.
Srácok, a P16F-es szériából kimaradt a LAT regiszter?
Van pár felesleges PIC-em és gondoltam megnézem, tudok e valami ledes dolgot fejleszteni, de LAT regiszter nélkül ez bajos lesz. P16F684, P16F690, P16F767 Vagy csak ezen példányokból hiányzik?
Nincs mindegyikben, de miért lenne bajos ledes dolgot csinálni. A PORT regiszterrel is megy unagyonlyan jól.
Azt hittem azt csak az alapot vizsgálásra való...
Mindig tanulok valamit...
Nem volt mindíg LAT regiszter. A PORT-ot lehet írni és olvasni is. A probléma ott van, ha pl a PORT regisztert íráskor magasba állítod, de az áramkörben valamiért lehúzod földre és vissza akarod olvasni akkor ugye nem az "1"-et adja vissza, hanem a "0"-t. Ezért találták ki a LAT-ot, mert az a port előtt egy tároló, amiben az van amit beírtál, még ha le is húzod földre a portot fizikálisan.
De ha tudod, hogy mit csinálsz akkor ugyanolyan jól működik a PORT regiszterrel is a program.
Értem, köszi a kifejtést.
Ennyire nem volt tiszta előttem a PORT regiszter. Bár eleinte használtam írásra és olvasásra is egyaránt, de rám szóltak és áttértem LAT regiszter használatára. De ha az nincs akkor marad PORT Thanks
Használhatsz szoftveres "LAT regisztert" is, azaz a kimenet állapotát tárolhatod egy változóban. Ezen hajtod végre a bitműveleteket, aztán meg átmásolod a PORT regiszterbe.
és melyik a kivitelezhetőbb? mert mivel minimalizálást említettem a kevesebb láb valószínüleg kisebb picet eredményez, de esetleg smd picnéla 24 lábas is még elfogadható....
Nem csak picbe, de még fórumozásba is kezdő vagyok, nem tudna valaki mutatni fórumbejegyzéseket, topicocat amik azzal foglalkoznak h így (kapcsolók állásáról) picel adatot olvasok be amit vhol megjelenítek/továbbítok/értelmezek
Üdv! Az a kérdésem lenne, hogy mikro C nél hogyan lehet egy változóhoz hozzárendelni, különböző portokon lévő biteket?
Köszi!
Ez azért lenne érdekes mert több porton helyenkednek el a kimeneteim, mert egy re már nem fért el. Súlyozott sórrendbe kötöttem be, és ha tudnák egy változót hozzá rendelni, akkot egyszerre tudnám őket kezelni. Az egyik ilyen egy szegmensmeghajtó ic amivel 4 biten lehet kommunikálni. Ha erre a négy kimenetre lenne egy változóm akkor írhadnék rá decimális számot, és annak megfelelően venné magasszintre binárissan azokat a kimeneteket.
A portok bitjeit berakod egy tömbbe és azzal dolgozol.
És azt hogyan kell. Mondjuk a PORTB.F6, PORTB.F7, PORTC.F0, PORTC.F1 biteket kellene külön kezelnem első részben. Nekem a bitek súlyozása is fontos lenne, hogy az első felsorolt az 1 az utolsó meg a 8 decimálisba. Ezt hogy tudnám tömbként kezelni ahogy mondtad?
Köszi!
CCS-ben működő a példa!
És erre hogyan tudok hivatkozni, mondjuk kiírni erre a tömbre binárissan pl. 0001- et hogy ezeken a kimeneteken 0,0,0,1 legyenek rajtuk.
Egy ciklussal végig megy a port_bitek tömbön, majd a val változó aktuális bitjeinek értékére állítja az aktuális tömbelemben lévő pint .
Oké, köszönöm , ez mikro c proban is használható? Lehet hogy hülye kérdés volt, de van pár eltérés a mikro c és mikro c pro között.
Azt nem tudom mivel nem ismerem a mikro c-t. Én CCS-ben írtam, copy-paste valószínűleg nem fog menni, de az elv alapján megoldhatónak kéne lennie más fordítóval is.
Üdv Mindenkinek!
A környezet: linux, MPLABX, XC16. Az egyszerű tanuló kapcsolás ennek az oldalnak az elején található, a program ugyan ennek az oldalnak a közepe táján: "LED villogtató program I. változat". PICkit2-vel be tudom égetni, működik. A PICkit3 viszont a következő üzenetet adja: "Target device was not found. You must connect to a target device to use PICkit 3." Természetesen a panel csatlakoztatva van, a projektben megfelelően kiválasztva a PICkit3. Egy másik tanuló kapcsolással, amiben PIC18... mikrovezérlő van, viszont működik. Ebből következtetve a PICkit3 feltehetően jó. Mi lehet a gond? Valamit be kéne állítanom? Van valakinek valami tippje a probléma megoldására?
Van külső tápja az áramkörnek? A Pickit3 alapértelmezetten nem ad ki tápot, külön kell bekapcsolni.
|
Bejelentkezés
Hirdetés |