Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   28 / 1318
(#) miklajos válasza bokrosh hozzászólására (») Ápr 7, 2007 /
 
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.
(#) watt válasza miklajos hozzászólására (») Ápr 7, 2007 /
 
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:

(#) Csirgli hozzászólása Ápr 8, 2007 /
 
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 "" ; processor specific variable definitions

__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 ""

pic16f5x.pdf
    
(#) watt válasza Csirgli hozzászólására (») Ápr 8, 2007 /
 
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:
(#) Csirgli válasza watt hozzászólására (») Ápr 8, 2007 /
 
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
(#) Fencer válasza watt hozzászólására (») Ápr 8, 2007 /
 
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!
(#) watt válasza Csirgli hozzászólására (») Ápr 8, 2007 /
 
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!
(#) watt válasza Fencer hozzászólására (») Ápr 8, 2007 /
 
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!)
(#) potyo válasza Fencer hozzászólására (») Ápr 8, 2007 /
 
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.
(#) zeusz7 hozzászólása Ápr 9, 2007 /
 
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
(#) potyo válasza zeusz7 hozzászólására (») Ápr 9, 2007 /
 
Másold be a hibaüzeneteket!
(#) watt válasza zeusz7 hozzászólására (») Ápr 9, 2007 /
 
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.
(#) Fencer válasza potyo hozzászólására (») Ápr 9, 2007 /
 
Ü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!
(#) zeusz7 válasza watt hozzászólására (») Ápr 9, 2007 /
 
köszi, már nézem is
(#) jhonny hozzászólása Ápr 10, 2007 /
 
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!
(#) watt válasza jhonny hozzászólására (») Ápr 10, 2007 /
 
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.
(#) Csaplar hozzászólása Ápr 11, 2007 /
 
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
(#) watt válasza Csaplar hozzászólására (») Ápr 11, 2007 /
 
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)
(#) watt válasza watt hozzászólására (») Ápr 11, 2007 /
 
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...
(#) potyo válasza Csaplar hozzászólására (») Ápr 11, 2007 /
 
Picit olvass vissza, nemrég tettem be egy kódot, aminél leírtam, hogyan működik a dolog.
(#) Csaplar hozzászólása Ápr 12, 2007 /
 
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
(#) potyo válasza Csaplar hozzászólására (») Ápr 12, 2007 /
 
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 };
(#) Csaplar válasza potyo hozzászólására (») Ápr 12, 2007 /
 
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.
(#) Csaplar válasza Csaplar hozzászólására (») Ápr 12, 2007 /
 
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
(#) watt válasza Csaplar hozzászólására (») Ápr 12, 2007 /
 
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:
(#) potyo válasza watt hozzászólására (») Ápr 12, 2007 /
 
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.
(#) dpeti hozzászólása Ápr 12, 2007 /
 
(#) Csirgli hozzászólása Ápr 12, 2007 /
 
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
(#) potyo válasza dpeti hozzászólására (») Ápr 12, 2007 /
 
Hát még ha...

Valami nem stimmel a linkkel, úgynézem a végéről hiányzik valami. :no:
(#) potyo válasza Csirgli hozzászólására (») Ápr 12, 2007 /
 
Azt is írd le, mit kellene csinálnia, és ehelyett mit csinál!
Következő: »»   28 / 1318
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem