Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia
CLRF TRISD BSF OPTION_REG,T0CS ;KULSO ORA BCF OPTION_REG,PSA ;ELŐOSZTÓ TMR0-HOZ BSF OPTION_REG,PS2 ;ELŐOSZTÓ BITEK 1-128 BSF OPTION_REG,PS1 ; BCF OPTION_REG,PS0 ; A bsf option_reg,t0cs val külső orához rendeled a szálálót! vagyis a külső lábhoz! nem a kvarchoz. javítva: CLRF TRISD BCF OPTION_REG,T0CS ;KULSO ORA BCF OPTION_REG,PSA ;ELŐOSZTÓ TMR0-HOZ BSF OPTION_REG,PS2 ;ELŐOSZTÓ BITEK 1-128 BSF OPTION_REG,PS1 ; BCF OPTION_REG,PS0 ; +++ és ez csak teljesen megjegyzés: ha sok bitet állítsz ugyan azon a regiszteren egymás utánn (mint itt) akkor érdemes valahogy igy csinálni: MOVLW B'00000110' MOVWF OPTION_REG hatása ugyan az de a kód rövidebb, igaz nem is annyira könnyití a megértést ha nem tudod melyik bit mi. Idézet: „MOVLW B'00000110' MOVWF OPTION_REG hatása ugyan az de a kód rövidebb, igaz nem is annyira könnyití a megértést ha nem tudod melyik bit mi.” Hacsak nem írunk utána egy megjegyzést... :yes:
Sziasztok, megint zavarnék.
még mindíg a 16F57-tel van gondom csináltam egy egyszerű progit, 1 led világít folyamatosan list p=16F57 ; list directive to define processor #include " __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC RESET_VECTOR CODE 0x7FF goto start ;*** idáig mplab default , csak az oszc lett XT**** MAIN CODE 0x000 start movlw 0x20 tris PORTC bsf PORTC, 5 ; itt a led egy ellenálláson keresztül END Nem működik, valakinek van valami ötlete, hogy miért? mellékelem az adatlapot Csirgli U.I az include... kacsacsőrben van, fórum kivette, azért van ott a ""
movlw 0x20 = b'00100000'
Azaz pont azt az egy lábat konfigoltad bemenetnek, amit kimenetnek szerettél volna használni! Azért jó lenne azt az adatlapot figyelmesebben elolvasni, nem?! :wink:
nem csak az volt a baja, de kijavítottam, működik köszi a "reackiót" és azt, hogy így húsvét vasárnap, most is velem foglalkozol
Kedves Watt a legutóbbi hozzászólásom óta eltelt pár nap( lázzal küzködtem, de visszatértem PIC világába) most olvastam amit írtatok a kérdésemre. Amit Potyo írt azt ugy csináltam a telepítésnél. Szóval a C compiler telepítésénél mindent bepipáltam és hagydtam oda települni ahová akar. De csak nem tudok égetni. Leginkább azért nem mert gőzöm nincs hozzá hogy mit nyomkodjak hogy a berakott 18F-embe bekerüljön a progim. Van egy amit próbálok beígetni. ez pedig a következő:
#include #pragma config WDT = OFF void main (void) { /* Make all bits on the Port B (LEDs) output bits. * If bit is cleared, then the bit is an output bit. */ TRISB = 0; /* Reset the LEDs */ PORTB = 0; delay(100); /* Light the LEDs */ PORTB = 0x5A; delay(50); while (1) ; } De Bulid Faild feliratot kapok a viszatérésnél. Ha látni akarom a led villogást akkor a PORTB lábak közül (RB0-RB7 ig bármelyik lábra köthetem hogy villogjon?) vagy félreértek valamit? Előre is köszi!
Szívesen! Egyébként mi volt még? (talán egy ciklus a végéről nem ártana, hogy ne szaladjon el a progi a végén. ?)
Kellemes Ünnepeket mindenkinek!
Szerintem sorba kéne menni, mert így nem nagyon fogsz kikeveredni ebből. Egy ismert hex-et kéne bevésni a PIC-be majd visszaellenőrizni, utána ráérsz magad programot írni.
Én azokat az újratelepítési lépéseket is megtenném, amit korábban írtam. (nem tarthat tovább fél óránál az egész újratelepítés! Fontos a sorrend és a leírt próbák elvégzése!)
Ahogy watt is írta, sorba kellene menni. A fordítás sikertelensége és a beprogramozás két független dolog. A teljes hibaüzenetet bemásolhatnád ide, mert ez a Bulid Faild sokmindentől lehet, nem beszélve arról, hogy nemis ezt írta ki.
Hello!
Most váltok 16f84-ről 18f458-ra és nem boldogulok az MPLab-bal. Fordításkor mindenféle hibát jelez. 1. Hogy kéne kezdeni a programot? 2. Át kell valamit állítani az MPlabban? 3. Nincs valakinek vmi egyszerű led villogtatós példaprogramja vagy ilyesmi? köszi
1. nézz fel az oldalamra.
2. igen. 3. lásd az 1. pontot. 1. és 3. ponthoz még annyit, hogy a példákban 18F4320 van, neked néhány dolgot át kell írni a 458-ra, valamint a 2. pont szerint át kell állítani az MPLAB-ot a megfelelő PIC-re.
Üdv!
Megcsináltam az ujratalepítést, de legelőször is bepipáltam mindent meg hagydtam a saját helyére települni. De a hibaüzenet továbra is él: MPLINK 4.1, Linker Copyright (c) 2006 Microchip Technology Inc. Error - processor types do not agree across all input files. Errors : 1 BUILD FAILED: Mon Apr 09 20:33:47 2007 Ezt az üzit kapom. Amugy hogy tudok a c progimból hex et csinálni? A próba kedvéért tudnátok nekem egy kis egyszerű progit küldeni a mit beégetnék, mndjuk hogy villogjon a LED az RB1-en? Köszi, Üdv!
Sziasztok. Kezdő PIC-es vagyok és szeretném ha segítenétek pár problémámban. 230V-os feszültséget szeretnék érzékelni és lemérni azt hogy mennyi ideig tart. Majd ki is jelezni. Remélem tudtok nekem pár instrukciót adni a továbbhaladásban. Előre is kösz!
Az időtartamot akarod kijelezni?
Ha igen, akkor csak egy optokapura van szükséged, amivel a feszültség meglétét tudod detektálni, és biztonságosan leválasztani azt a PIC-től. Az eltelt időt meg lehet jeleníteni LCD-vel, vagy 7szegmenses LED-es kijelzővel.
Sziasztok!
Ismét lenne egy kis problémám! Szeretnék egy billentyűkkel irányítható menüt készíteni. A billenryűmátrix kezelése megy, csak éppen ha szimplán a while cikluson belül megnézem egy if-fel, hogy melyik gombot nyomták le és utasítom, hogy mit csináljon, akkor az nagyon pontatlan és érzékeny lesz! Van erre valami bevállt módszer? Megszakítással kellene csinálnom? Ha igen, akkor tudnátok benne segíteni? Timerre már csináltam, de gombra első körben még nem jött össze. Tudna esetleg valaki valamilyen gagyi példát küldeni??? Előre is köszi! Üdv.: Zotya
Ha a mátrixra túl gyors jeleket kapcsolsz, akkor elképzelhető, hogy a kábel kapacitása miatt a bemeneteken megjelenő szint nem lesz pontos. Ezt bizonyos mértékig lehet javítani a felhúzó ellenállások csökkentésével, de 1k alá nem nagyon érdemes menni.
Érdemesebb inkább pontos időközönként váltani a vizsgált sort vagy oszlopot. Ezt többek között úgy is lehet, hogy egy Timer megszakításakor, a megfelelő időközök kivárása után(pl. számláló segítségével), beállítasz egy jelző bitet, ami a fő programban jelzi a billentyű lekérdező ciklusodnak, hogy lekérdezheti a következő vonalat. A lekérdezés után a Flaget törlöd és várod a következő jelet. Ezzel a megoldással nem kell sokat módosítanod a programon, egy meglévő Timer megszakítást felhasználhatsz, persze, ha van olyan gyors(kb 20-50Hz enként lehet lekérdezni). A jelenlegi ciklusod belépési pontjára pedig csak egy feltételt kell tenni, ami a Flaget vizsgálja. A precíz gombérzékeléshez érdemes a felengedéskor indítani az eseményt. Ezt szintén Flagekkel tudod megoldani. A lenyomáskor beálítod a "le" jelzőt, és mindaddig visszatérsz a többi teendőhöz amíg a gombot el nem engedted. Ha ez megtörtént, akkor állítod be a gombhoz tartozó kódot, ami kiváltja az eseményt. Így a gomb nyomva tartása nem foglalja a többi feladattól az időt. Példát is tudnék írni, de hidd el, hogy fogalmam sincs milyen környezetbe akarod beilleszteni. Ha ilyen segítség is kellene, akkor látni kéne a programot, legalább is a megszakítási és a bill. kezelési részt. Jobb megoldásnak tartanám, ha módszereket kérdeznél, arra könnyebb példát írni... (pl. több bájtos számok csökkentése meg hasonlók)
Ja most esett le, hogy Te C-ben nyomod. Abban majd más segít! Én most is állítom, hogy a C-ben nehéz dolgokat ASM-ban könnyedén lehet megoldani, és ez igaz viszafelé is! ASM-ban csak a matematikai műveletekkel van csak baj, amíg nincs meg a megfelelő rutin...
Picit olvass vissza, nemrég tettem be egy kódot, aminél leírtam, hogyan működik a dolog.
Köszi az eddigieket mindenkinek! A billentyűk már működnek, viszont most lenne egy kimondottan c-s kérdésem !
Hogyan lehet struct tömböt létrehozni? Amit korábban felraktatok pic-es könyvet, abban volt példa, de nálam úgy nem működik. Valószínűleg az mcc18-nál egy kicsit más lehet a szintaktika. Vagy csak én bénázok valamit... Előre is köszi! Zotya
Két péld az MPLAB C18 Getting Started fájlból:
struct { int x; char y[4]; } s1 = { 0x5A, “abc” }; struct { int x[5]; int y; } s2 = { { 10, 22, 30, 40, 50 }, 0xA5 };
Hi!
Ez így nekem is működik... Nem egészen erre gondoltam. Nekem tömb kellene. pl.: struct { char nev[25]; char cim[40]; int kor; } szemely; szemely SzemelyiAdatok[20]; Csak ez így nem működik. Próbáltam a typedeffel trükközni, de úgy sem ment.
Hi!
Bocsánat! Én bénáztam természetesen! Az alábbi kód szintaktikailag helyes! Csupán azért jelzett szerencsétlen fordító, mivel "túl nagy" elemszámú tömböt szerettem volna létrehozni! Azért ez mégsem egy PC! typedef struct Szemelyek { char nev[25]; char cim[40]; int kor; } szemely; szemely SzemelyiAdatok[4]; Üdv Idézet: „Azért ez mégsem egy PC!” Szegény PIC-be belefér vagy négy ember adata! Azt gondolám, hogy nemigazán adatbáziskezelőnek lett kitalálva! :vigyor2:
Ezért is félek az ilyen-olyen C függvényektől, mint a printf, getch, meg hasonlók. Valahogy az az érzésem, hogy kétszer akkora lesz a program tőle.
Sziasztok!
csináltam egy progit, olyan 200 sor hosszban viszont nem működik, már 2 napom elment azzal hogy debuggoltam, apró hibákat találtam, de még mindíg nem találtam meg a fő baját , kis segítséget kérnék, ha valaki ráér kommentálva van, remélem érthető pic típusa 16f57, mellékelem az adatlapot minden segítséget előre is köszönök Csirgli
Hát még ha...
Valami nem stimmel a linkkel, úgynézem a végéről hiányzik valami. :no: |
Bejelentkezés
Hirdetés |