Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Igen elirtam 32768hz es a megszakitasban eegyetlen bitet irok, ami a foprogrmban ha valtozott egy darab ledet kapcsol ki ill be, csak tesztprogram, mert azt hittem valahol a program hibazik....
Koszi valoszinu akkor a timer1 irasaval lesz a gond.
Hali!
Lenne egy amatőr kérdésem. Egy ilyet szeretnék beszerezni: Bővebben: Link PICkit 2 starter kit. Ez ugye tartalmazza a PICkit-et meg egy próbapanelt ledekkel meg egy mikrokontrollerrel. Az lenne kérdésem, hogy a panel a tulajdonképpeni "égető"? Vagyis úgy működik a dolog, hogy kiveszem a panelből a hozzáadott mikrokontrollert és beteszem azt, amit én szeretnék felprogramozni (16F628A)? Vagy létezik külön valami égető panel is?
Van a Timer1-nek még egy nagy baja, amit az Errata sem ír: egyes mikrovezérlőkön az aszinkron mód és a 16 bites írásmód nem fér össze. (Nekem PIC18F4550 és PIC18F87J50 estén gyűlt meg vele a bajom, más mikrovezérlőn nem teszteltem)
Üdv!
Ha a CCP modulod még nem használod, akkor rá lehet álítani a speciális eseményre a megszakítást. Ilyenkor a CCP küld megszakítást, amikor a TIMER1 elérte a küszöbértéket, ami a CCP regisztereiben van, valamint nullázza a TIMER1-et. Be kell állítani a CCP-nek a küszöbszintet 32768-ra, és engedélyezni kell a CCP special event trigger módját, és CCP megszakítást pont másodpercenként kapsz majd. TIMER1 megszakítást nem is kell engedélyezned. Idézet: Nem. Az egy próba panel, amelyből csak akkor veszed ki a mikrovezérlőt, ha tönkrement, vagy más típust akarsz kipróbálni. Ez a panel már tartalmaz 4 db LED-et, egy nyomógombot és egy potmétert, ezzel már sokféle eszközkezelést lehet próbálgatni. A 14 pólusú csatlakozóta bővítmények (PICtail kiegészítő kártyát csatlakoztathatók, az ún. prorotípus felületre pedig magad is építhetsz kiegészítést.„Az lenne kérdésem, hogy a panel a tulajdonképpeni "égető"?” Az általad feltételezett programozási mód is használható, de nem egy felemelő élmény ebbe a foglalatba dugdosni a mikrovezérlőket (mely a 8, 14, és 20 lábúakkal kompatibilis, a 18 lábúakkal nem!), tehát csak végszükség esetén... Ezen a képen talán jobban látszanak a részletek.
Szia!
Egy apró dolog: A CCP modul csak a timer1 szinkronizált módjában működik helyesen, az meg nem működik sleep üzemmódban....
Értem. Vagyis ilyen égető panelt külön lehet kapni? Mert arról még csak képet sem találtam sehol.
Sziasztok!
C18-ban dolgozom, és egy float 4 bájtját szeretném áttölteni egy karaktertömbbe, mindenféle konvertálás nélkül, hogy aztán elküldjem uarton, de nincs ötletem hogyan lehetne! Ebben kérnék segítséget! Előre is elnézést ha túl egyszerűt kérdeztem, de még kezdő vagyok.
Na várjunk csak...
Tehát ez lenne az, ami nekem kell? http://www.conrad.hu/conrad.php?name=Products&cid=214037&pid=191486...tail=1 És ha beszerzek egy ilyet, akkor a PICkit 2 elvileg nem is szükséges? Csak ezt rádugom a soros portra és lehet is programozni a PIC-eket?
Nem. Neked kell egy pickit2 és semmi más. Azzal már tudsz égetni és még 1-2 izgalmas dolgot csinálni...
Akkor legalább elmondanád, hogy PICkit 2-vel hogy égetek programot egy 16F628-as PIC-be? Mert pár hsz-szel feljebb meg azt írták, hogy nem oldható meg könnyen.
Egy PIC-et úgy égethetsz, hogy az áramkörödben a programozó lábakat egy tüskesorra kivezeted, amire rádugod a PICKIT-et.
Keress rá a varázs szóra:ICSP.
Itt van 1 kis segítség:Bővebben: Link
Bocs, de nekem ez kínai.
Ezt építettem meg: Bővebben: Link Minden kész van 100%-osan, már csak a PIC-be kéne beleégetni a leírásban található .HEX file-t. Vagy a 16F628-nál is ezekre a lábakra kell kötni a PICkitet? Tehát VPP-RA3, PGD-RA0, PGC-RA1 és VDD-+5V (esetleg VSS- -5V?) ?
Hali
Structura es union hasznalataval. Csa Vili Idézet: Ha nem tömegtermelésről van szó, akkor a céláramkörben történő programozás (ICSP) az elterjedt. Ha valakinek az a mániája, hogy mégis külön panelben akarja égetni a mikrovezérlőt, akkor ZIF foglalatot szokás használni. Bővebben: Link „Vagyis ilyen égető panelt külön lehet kapni?”
A fentebbi hsz-ekben már eljutottunk az ICSP-ig, csak az nem tiszta, hogy minden PIC-nél ugyanazokra a lábakra kell e kötni a PICkit kimeneteit. Mert egy link alapján a 12F675-ös PIC-nél a bekötési pontok: VPP-RA3, PGD-RA0, PGC-RA1 és VDD-+5V. Csak az a kérdés, hogy 16F628-nál is az RA0, RA1, RA3 és VDD lábakat kell e használni a programozáshoz.
Kedves vilmosd!
Köszönöm a gyors választ! Megnéztem mire jó ez struct és union, ha jól értelmezem pl.: a PORTA bitjeire tudunk hivatkozni a segítségével. Azt viszont nem tudom hogyan segíthet ez rajtam.?
Miért kell áttöltened, miért nem küldöd el egyből a változóból bájtonkén? (<<, >> operátorokat nézd meg mire való)
Hali
Ha varsz mig megreggelizem es feloltozom, kuldok egy doksit a PK2-hoz valo programozo foglalatrol. Egyszeru mint egy faek, belerakod a PIC-et, feldugod a PK2-re, es porkolhetsz is. Ezt a Conrados panelt felejtsd el. Egyebkent a panelon egy RS232 programozo van, ezt viszont mar nagyon sok PC hianyolja. Ha szetnezel itt a forumon, talasz 18 es 20 labasokhoz probapanelt. Megcsinalod (megcsinaltatod) valakivel, veszel egy PK2-t es mar mehet is a gyakorlas. Csa Vili
Próbáltam shiftelgetni, a shift operátor csak integer tipusú változókra használható, ha jól értelmeztem a fordító hibaüzenetét. Azért nem tudom onnan küldeni mert többet fűzök fel és egyben kell küldenem.
Úgy néz ki a memcpy() megoldotta a problémát, de valahogy nem teljesen az IEEE-754 szabvány szerinti hexadecimális értéket kapom vissza... A gyakorlatban ez úgy néz ki, hogy 2 bájt megegyezik azzal, 2 meg nem.
Hali!
Akkor várom azt a dokumentumot, aztán meglátjuk, mi lesz belőle. Előre is thx. Idézet: „csak az nem tiszta, hogy minden PIC-nél ugyanazokra a lábakra kell e kötni a PICkit kimeneteit.” Nyilvánvalóan nem. Az adatlapból kell megnézni, hogy melyek az MCLR, VDD, VSS, PGD és PGC lábak. A PGD és PGC némelyik adatlapban ICSPDATA és ICSPCLK néven szerepel. Alkalmi megoldásként így is lehet programozni, csak ne felejtsd le az MCLR 10 kohm-os felhúzó ellenállását és a VDD-VSS közé szükséges 100 nF-os kondenzátort!
Szervusz néz utána jobban.
Alapvetően két dologról van szó a struct és union esetében. Neked az unionra van szükséged: különböző típusú változok deklarálhatók ugyanarra a memóriaterületre. Tehát a floatot és a 32 bites integert egy unionba foglalod. Majd a floatnak adsz értéket és az integert küldöd. A vételnél meg fordítva kell eljárni.
Szia!
Inkább csinálj egy (byte *) utatót a float típusú változóra:
Szia!
Megcsináltam ahogy írtad, és mostmár a helyes értéket kapom meg! Nagyszerű, köszönöm a segítséget! Azt meg nem értem, hogy a memcpy() miért nem ezt adja vissza.
Hali
Itt egy pelda struct, union varira:
Csa Vili
Hali
Az igert doksik |
Bejelentkezés
Hirdetés |