Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Persze, mert az inkludalas meg azelott tortenik meg, hogy definialnad az SPI_VETT_TOMB-ot...
Amugy header file-ba nagyon csunya dolog deklaraciot rakni! Oda csak es kizarolag definiciot szabad. Main fole, a "buffer tombok" deklaracio ala rakd a fuggvenyed.
Kínlódtam vele pár órát és rájöttem, hogy a tasztatúra bekötése így nem jó (Bővebben: Rajz). Mert ha egy oszlopból lenyomok egyszerre mondjuk három gombbot, majd lenyomok egy gombot például a középső oszlopból is, akkor azt a PIC úgy érzékeli, hogy összesen nem három, hanem négy gombot nyomtam le.
Ezen felül más gond is van, ha lenyomom valamelyik sor mindhárom gombját. Erre még nem jöttem rá... Hogyan szokás lekezelni a tasztatúrákat?
Már írtam, hogy diódák kellenek, de nem oda ahol most vannak, hanem minden gombhoz.
Idézet: „Hogyan szokás lekezelni a tasztatúrákat?” Semmi extra, soronként-gombonként.
Egy kis irodalom a miértről és a hogyanról: Bővebben: Link
Jó ez a diódás módszer. Tetszik.
Ámbár ha mondjuk az ember nem szintetizátort épít, akkor azért el lehet hagyni ezeket. Általában egy gombot nyom meg az ember egyszerre.
Mekkora ötlet! Tényleg, nem szokott az ember egy műszeren (én most azt építek) egyszerre több gombot megnyomni. Akkor megírom a programot úgy, hogy mindig csak a legelőször lenyomott gombot vegye figyelembe.
Watt! Köszönöm a segítséget!
Es ha mar itt tartunk akar egyetlen labbal is kiolvashatsz egy 4x4-es billentyu matrixot:
Tip #5, #6 es #7 ...
Én azt hittem, szükséged van arra, hogy több gombot nyomj le egyszerre. Van mikor ilyenre van szükség, ezért nem kérdeztem vissza. Ha nem szükséges a több gomb egyszeri nyomásának kiértékelése, akkor nem kellenek a diódák.
Üdv!
Tudtok valami olyan cikkről, web oldalról, ami a PIC rs232-es kommunikációját kicsit részletesebben taglalja? Valami olyat szeretnék elérni, hogy PC ről küldött adatot (max 16 bit) a PIC fogadja és a kapott adat alapján hozzon egy döntést a továbbiakra. Illetve még lenne egy olyan kérdésem hogy egy PIC-et hogyan tudnék rábirni arra hogy egy SD kártyára ezeket a 16bites számokat tárolja és mellé irjon egy időpontot? Apropó van valami külön IC amivel a PIC kommunikálva időpontokat tud tárolni? Jó sokat kérdeztem sorry
Szia!
Az RS232 maximum 9 bites adat (1 byte + paritás) egyszerre történő átvitelét teszi lehetővé. Amit szeretnél, azt csak minimum két adat átvitelével tudja megcsinálni. Általában egy megszakításos, bufferelt megoldással lehet biztos adatátvitelt megvalósítani. Google: RS-232 vagy EIA232 Az időt maga a pic is tudja számítani, ha arra van szükséged, hogy a pic kikapcsolt állapotában is megmaradjon (tovább számolódjon) az idő, akkor az RTC (real Time Clock Calendar) a megoldás. Google: RTC+datasheet Az adatok elemmel táplált CMOS ramban vagy flash memóriában tárolhatók. A Ramtron cég készít ferromágneses elven működő nem felejtő ram-okat. Az időbélyeg tárolására is választhatsz valami szabványos formát. Google: timestamp Szia
Szia!
Igen, azt tudom hogy 9bites lehet egyszerre az rs232, csak nekem majd 16 bit kell, de azt két adat átvittelle meg lehet oldani, ahogy mondod. Az RTC-t nem ismertem igy név szerint, de igy már rá is tudok keresni! Köszi a segitséget
Hello,
ha esetleg valami irodalomra is vágysz ez ügyben, talán ez a két link segít a megértésben valamennyire: 1. link Chapter 9.
A PIC-kel is meg lehet amugy valositani orat egy "ora-kvarc"-nak is csufolt 32768Hz kristaly segitsegevel. Szilva csinalt egy orat es valami hihetetlen kicsi fogyasztas jott ki neki, elemrol taplalva tobb ev uzemidovel.
Ami az SD kartyat illeti, ket problemat vet fel. Az egyik maga az SD kartya meghajto, a masik pedig a file rendszer (mar ha szabvanyos file rendszerben, pl FAT akarod tarolni az adatokat, hogy aztan pl. PC-rol az SD kartya olvashato legyen). Ezekre vannak peldak, es ha jol emlekszem a Microchip oldalan is talalsz letoltheto konyvtarakat C18-ban. Szinte biztos vagyok benne, hogy PICC-re ill CCSC-re is talalsz ilyen konyvtarakat. Keress ra "SD card" ill "FAT driver" kulcsszavakra.
Kis segítséget kérnék.
ICSP csatit tettem ebbe a kapcsolásba, de nem működik. HE: Autó belső világítás vezérlése PIC12F683 kontrollerrel Device not found. Azt hiszem a 6 és 7es lábon lévő kondik a bűnösek... Hogy lenne szakszerű az átalkítás hogy müködjön az ICSP??? Köszi!
Sziasztok PIC-esek!
Egyre jobban belém bújt a kisördög, hogy megtanulok PIC-el foglalkozni. Soha nem láttam, hogy hogyan is csinálják, de végig olvastam az összes cikket ami itt van az oldalon és egyszerre ez sok okosság volt nekem Programozni se tudok, de nagyon érdekel ez a PIC ahogy igy olvastam, hogy mennyi mindent lehet vele csinálni. Szóval mit ajánlotok nekem, hol kezdjem, milyen égetőt, milyen microchip-el kezdjek? Teljesen az alapoktól kell hogy kezdjem! Köszi! ROLAND!
Van egy bizonyos mennyiségű PIC-es cikk itt az oldal keretein belül. Ez egy számot ad. Ha ezt a számot 2-dik vagy 3-dik hatványra emeljük, kb. eljuthatunk oda, hogy ennyien kérdeztek már eddig hasonlókat jelen topikon belül. Szóval próbáld meg azzal kezdeni az egészet (mivel gyorsan-iziben-azonnal a PIC-ezés úgysem fog menni, tehát érdemes lassan, de biztosan, megfontoltan! lépkedni előre), szóval kezdd azzal, hogy próbálsz visszaolvasgatni ebben a topikban és próbálsz kulcsszavakat keresni, amiket a keresőbe beírva, az elvezethet téged a hozzászólásom első részében leírt mennyiségű kezdő PIC-ező fórumtárs eligazításaihoz.
Idézet: „Azt hiszem a 6 és 7es lábon lévő kondik a bűnösek” Igen. Le kell őket választani addig, amíg programozol. Más megoldás nincs. A leválasztást lehet két jumperrel is.
Nézz fel az oldalamra, próbáltam leírni mi kell a PIC-ezéshez egy kezdőnek. Számítst rá, hogy fél..egy év mire valamire jutsz. Ez nem egy egyszerű hobbi, annál több örömet okoz, de meg kell küzdeni érte.
Áramkörön kívül égesd be a chipbe a firmware-t, és utána tedd be az áramkörbe. Vagy ha változtatni akarsz rajta, akkor vedd ki a kondenzátorokat a fejlesztés idejére.
Hali,
javítottam az észrevételt. Jó is lettAzt még nem értem, hogy ha a main előtt helyeztem el a függvényt, ami eddig őnnáló headerben volt(és ennek kellett volna .c ben lennie), akkor is kell a függvény deklaráció a header fájlba? Mert hogy ugye a függvényt a main elé tettem, ekkor elvileg nem kell külön deklarálnom. Vagy mégis kell? Úgy tudom, ha a main előtt van a függvény akkor, nem kell külön deklarálni. Pl. void jumper (void); -> ő nem kell és helyette maga a függvény van: void jumper (void) {...} Viszont irtam egy jumper függvényt. Őt jumper.c be irtam, és jumper.h be letároltam egy az előforditónak szoló utasítások közé a függvény deklarációt (asszem így hívják). Mainbe a jumper.c van includolva, míg jumper.c -be jumper.h. Ekkor forditáskor ezt kapom: MPLINK 4.00, Linker Copyright (c) 2005 Microchip Technology Inc. Error - symbol 'jumper' has multiple definitions. Errors : 1 Mért van kettőször definiálva?? Nem igazán látom át ezt a dolgot
Ha a függvény hívása előtt deklarálva van a függvény, akkor nem muszáj definiálni. Ha a hívás után van a deklaráció, akkor muszáj a hívás előtt definiálni.
Amikor valamit includolsz valahová, akkor azt úgy képzeld el, mintha az include helyére egyszerűen bemásolnád az includolt fájl tartalmát. A preprocesszor tulajdonképpen ezt végzi el, és utána adja át további feldolgozásra az így összeállított forráskódot. Most képzeld el, hogy összevissza includolsz, és így többször be van ugyanaz a tartalom másolva a fájlodba. Ezt a preprocesszor az említett üzenettel díjazza. Ez olyan, mintha kétszer akarnád ugyanazt a változót definiálni. Amúgy c fájlt sosem includolunk. Ha van egy jumper.c és egy jumper.h fájlod, akkor a jumper.h-t includold be a main.c-be, és a jumper.c-be is includold be a jumper.h fájlt. Mindkét fájlt add hozzá a projektedhez. A jumper.h fájlban add meg a jumper.c-ben levő azon függvények definiálását, amiket kívülről akarsz használni. Így a header fájl megtekintésével mindig meg lehet nézni, hogy az adott függvények pontosan milyen paramétereket várnak és mit adnak vissza, illetve milyen függvények találhatók benne. Ha mégis fennáll a többszörös includolás veszélye, akkor még ezt szokták csinálni a header fájl elejére:
Így amikor először fut rá a preprocesszor a feldolgozás során az include jumper.h sorra, akkor egyszer bemásolja, mert még a JUMPER_H nincs definiálva, de miután a következő sorban definiálva lesz a JUMPER_H szimbólum, amikor legközelebb ráfut include jumper.h sorra, egyszerűn kihagyja, mintha ott sem lenne ez a sor. Pl. USB vagy TCPIP Stack elég sok ilyet tartalmaz, bonyolultabb projekteknél szinte elengedhetetlen.
Váu
Kössz Egy két dolog rémlett nekem is, de talán most össze állt a kép.
Megtudná valaki mondani, hogy hogyan kell MPLAB-ban a soros kommunkiácót (RS485) szimulálni?
Debugger/Settings/Uart1 IO Itt engedélyezem az Uartot. Input File-hoz létrehozok egy pl. uart_in.txt fájl-t Na de ebbe milyen formátum szerint kell beirni az adatot? Tehát, ha azt szeretném, hogy az uart 0x55-t vegyen, akkor elég annyi, hogy RCREG = 0x55; ? Az Output-nál ha fájlt választok akkor oda irja ki, ha meg a képernyőt akkor az Output ablak SIM Uart1 fülőn jelenik meg? A következőre kérnék segítséget MPLAB (V8.43) assembly-ben akarok írni progit 16 bites PIC-re. Fordításnál a következőig fut ---------------------------------------------------------------------- Release build of project `D:\PROJECT\PIC\PIC24HJ12GP201\TIMER1\Timer1.disposable_mcp' started. Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35 Thu Dec 24 12:15:49 2009 ---------------------------------------------------------------------- Clean: Deleting intermediary and output files. Clean: Done. Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p24HJ12GP201 "Timer1.asm" /l"Timer1.lst" /e"Timer1.err" Itt megáll és semmi üzenet hogy OK vagy FAILED 8 bites PIC-nél probléma nélkül lefut. Mi lehet a probléma?
Sziasztok!
A temp változó tartalmától (0-7) függően szeretnék különböző szubrutinokat végrehajtani. A csatolt kódrészlet megfelelő?Mármint működni működik, csak nem túl kőbalta módszer?Nem emlékszem, hogy ilyennel találkoztam volna valahol. 16F877A a kontroller típusa.
Kiindulásnak jó, de tenni kellene róla, hogy a táblád bárhol legyen a kódmemóriában, mindig jól működjön. Mert ez így a PCLATH tartalmától függően vagy jó helyre ugrik, vagy nem. Keress rá itt a témában a PCLATH kifejezésre, már sokszor volt erről szól.
Az addwf PCL, 1 sorban az 1 helyett pedig használd az F jelölést, hogy olvasható legyen a kódod.
Üdv!
Ezzel a kóddal annyi a baj, hogy nem állítod a felső bájtját a programszámlálónak (pclath). Illetve ezt a kis kódrészt a memória olyan területére kell helyezned, ahol az első utasítás és az utolsó utasítás egy lapon helyezkedik el (persze meg lehet oldani a lapváltásos dolgot is).
Köszönöm mindkettőtöknek, a PC korrekt állításával kiegészítem!
üdv Máté
Bocsanat, hogy kozbe kotyokog, es tenyleg nem rossz szandekkal teszem, de Braf altal megadott modszer kis kiegeszitesre szorul -- nincs kezelve az atvitel, emiatt ha a tablaban van egy laphatar akkor nem fog kielegitoen mukodni...
[OFF]Bekes Karacsonyt mindenkinek! |
Bejelentkezés
Hirdetés |