Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Úgy is jön a karácsony!
Több100 méterig is jó, elvileg 1200m csavart árnyékolt érpáron. Idézet: Ekkora tolerancia és kedvesség! Tudtam én, hogy képes arannyá válni bárki szíve... „Úgy is jön a karácsony!”
Köszi!
Az RE és a DE pontokra mit kell kötni és miért van rá szükség?
Látom hogy valamiféle engedélyező bemenetek. A legtöbb rajzon össze vannak kötve. És vagy Vss -re vagy Vdd - re van kötve. Ja meg a PIC egyik lábára. Nem teljesen tiszta hogy miért és hogy melyik lábára.
MAX 232 - né egyszerű csak simán Tx és Rx. (+GND)
Az RS485 egyirányú kommunikáció, az érpáron differenciális jel közlekedik (nagyobb a zavarvédettsége). Az engedélyező lábakkal tudod a vétel- illetve adásoldali meghajtókat kapcsolni, attól függően, hogy éppen milyen irányú kommunikációra van szükség.
Sziasztok!
Lenne egy kérdésem. Adott egy infra vevő (tfms5300), ami TTL outtal rendelkezik, valamint adott egy PIC16F690, aminek pl az RA0 lába TTL kompatibilis. Próbálkoztam már több módon is, de nem kaptam a PICnél használható eredményt. Hogyan lehetne összehozni egyszerűen a kettőt? Első körben elég lenne, ha csak azt meg tudnám állapítani, hogy kapott jelet az érzékelő, vagy nem. A segítséget előre is köszönöm! pinyó
A 3-as lábon alacsony logikai szint van, amikor az infra vevőre 30kHz-es infrajelet irányítasz, és magas, amikor nem?
Amikor kapja az infrajelet, akkor 2,44 V-ot mértem, amikor nem, akkor 2,47-et, úgyhogy valószinűleg meggyilkoltam a vevőt, mert tegnap még működött a videóban amiből kiszedtem.
pinyó
Először ezt a problémát kell megoldanod egy másik topicot keresve, mert ez nem PIC kérdés. Ha már megvan a logikai váltás, és a PIC-el elkadsz, várjuk a kérdéseket.
watt rajzából nagyon jól látszik, hogy az illesztőben lévő kimeneti meghajtó a DE logikai 1 állapotára aktív, a jelfogadó erősítő pedig az RE logikai 0 állapotára. Azaz ha a két vezérlőlábat összekötöd, akkor a közös pontra kötött "1" állapottal engedélyezed az adást, a "0" állapottal pedig a vételt. Tehát az adóoldalon a közös lábat "1"-re, vevő oldalon pedig "0"-ra kötöd fixen.
Lehet rosszul fogalmazok: Amikor változókat definiálunk a PIC számára így:
cblock 0x20 valami1 valami2 ... hosszuvalami endc és a General Purpose Register 80 byte méretű, akkor hány változót lehet definiálni erre a 20h címre? Egy változó egy byte, vagy miként kett ezzel számolni? Köszönöm!
Igen, ha így írod, akkor minden változó (tulajdonképpen csak címke) 1 byteos. De ha a neve után írod kettősponttal a hosszát, akkor annyi byteot fog foglalni neki.
Pl.: cblock 0x20 valami1:4 valami2 . . . Ekkor valami1 0x20-on lesz, és 4 byte terültet lesz fenntartva neki, valami2 pedig 0x24-re kerül és 1 byteos.
Hi !
pwm -el vezérelnék egy lcd led háttérvilágítást. Működik is, csak az a bajom, hogy kitöltési tényezővel nem arányos a fényerő változás. Nem tudtok esetleg valami anyagról, ami leírja hogy mekkora kitöltésre mekkora az érzékelt fényerősség ?
Üdvözlök mindenkit!
Egy segítségre lenne szükségem! A mi nap rátaláltam az interneten egy OLIMEX gyártmányú, PIC-WEB eszközre (Bővebben: Link). Utána néztem ennek a terméknek, és tényleg jó. Tartalmaz egy 18F452-es PIC-et, 10M Ethernet vezérlőt, hőmérséklet mérő áramkört, stb. Átnéztem a leírást is, de nem találtam róla részletes programozási dolgokat. Az a kérdésem, hogy valaki nem ismerni ezt a terméket? Foglalkozott-e már vele? Mi a véleményre róla, érdemes-e megvásárolni? Hogyan lehet szoftvert rá tölteni? Microchip ICD2-vel lehet konfigolni? Van esetleg valakinek részletes leírása róla, mert a neten nem találok! Köszönöm a választ előre is. Mindenkinek Kellemes Ünnepeket!
Idézet: „Az a kérdésem, hogy valaki nem ismerni ezt a terméket?” Hát én nem. Csak képről. Idézet: „Microchip ICD2-vel lehet konfigolni?” Persze. Ott van a kártya végében a 6 pólusú ICSP/ICD csatlakozó. Idézet: Ami van, ott van az általad belinkelt lapon. Kapcsolási rajz, leírás, szoftver, Microchip TCP/IP AN833 (ez utóbbi alkalmazási mintapélda a TCP/IP kezeléséhez).„Van esetleg valakinek részletes leírása róla” Ha ezen szavak: TCP/IP, HTTP szerver, POST, GET, CGI, DHCP nem ismerősök, akkor viszont a hálózatkezelés témakörében kell keresgélni. A legizgalmasab kérdés viszont az, hogy mit is akarsz vele kezdeni? Az "Understanding PIC WEB boards..." leírás abból a feltételezésből indul ki, hogy a HTTP szervert akarod módosítani céljaidnak megfelelően. Ha nem ez a célod, akkor viszont a Microchip TCP/IP stack használatát kell megtanulni.
Jogos. Én voltam a hülye, azt hittem a PIC-nél csináltam rosszul valamit. Ezért kellene bemérni mindent mielőtt hülyeségeket kérdezek. Elnézést.
pinyó
Köszi a cblock-os kérdésemre a választ!
Van még egy: ASM-ben, hogy lehet feltételes (olyan IF...THEN...ELSE módon)összehasonlítani két értéket? Van erre valami rutin? Köszi!
Megépítettem próbapanelen, a watt féle WPB programozót. Annyi különbséggel, hogy én külső 15V-os tápot használok és abból csinálok 5, illetve 13,5V-ot, ami a MCLR lábon már csak 13,3V de szerintem ennek nem szabadna bezavarni. Pedig nem működik.
A kérdésem a következő: milyen úton lehet rájönni, hogy a PIC tönkrement-e? Amikor még a JDM-el próbálkoztam nem-e kifingattam. Ez csak egy feltevés, mert anno egyszer bemelegedett a kicsike, de nem annyira, hogy kézzel ne lehetett volna megérinteni. A másik lehetséges hiba oka, a hosszú Kábel. Mivel még csak próbapanelen csináltam, kénytelen voltam egy 90cm-es kábellel megoldani. Így is feszül, de másképpen nem bírtam volna összedugdosni. Eddig szimpatikus ez a megoldás, valahogy sokkal stabilabb érzetet nyújt mint amikkel eddig próbálkoztam. Mindenesetre várom a segítségeteket, mégha csak annyi is, hogy a kábel a gond. válaszotokat előre is köszönöm: skeletor
Hy!
Van nékem egy ilyen progim: #include <16F690.h> #use delay(clock=4000000) void main() { set_tris_a(0b00011000); for(;{ if(input(PIN_A4)) output_high(PIN_A0); else output_low(PIN_A0); } } Ha PORTA,4 pin magason A0 magason ha alacsonyan akkor A0 is alacsony szinten van,illetve azon kellene lennie...de nem műxik!Nemtudom digitális I/O vá tenni PORTA-t,mi lehet a gond?
Hali!
Én így csinálnám (bár nem ismerem ezt a fordítót, én az sdcc-t preferálom, de hát a c az c): void main() { set_tris_a(0b00011000); while(1){ if(input(PIN_A4)){ output_high(PIN_A0); }else{ output_low(PIN_A0); } } } pinyó
Sajna nem a {} a baj,meg a for is jó,mert PORTC-re teljesen működik,a PORTA valamiért nem megy,rossz a PICE-em??
PRóbáltam már a "NO_ANALOG" definicióval is a nemtom melyik fv.-ben,az "NO_ADC"-t is próbáltam,most gyakorlatilag ADC-re tudom használni a PORTA-t,vagy nem is lehet digitális kimenetként??
Pontosítanám a kérdésem. ASM-ben hogyan lehet összehasonlítani két változó értékét, hogy azok egyenlőek-e, vagy sem? Ha egyenlő akkor goto ide, ha meg nem egyenlő akkor goto oda... Van erre valamilyen bevált rutin? Gondolom binárisan, logikai művelettekkel megoldható, csak még nem jöttem rá hogyan. Egyébként 0-tól 11-ig lévő számokat kellene így kezelni. Köszi!
Hali!
Én nem értek az asm-hez, de mi lenne, ha kivonnád egymásból a két számot, és ha az eredmény 0, akkor egyenlőek? pinyó
Hát, azt tudom még elképzelni problémaként, hogy a porta 6 lábából alapbeállításból 2 az icsp-nek van, 2 az oszcillátor(ok)nak, 1 pedig MCLR-nek van beállítva. Ha ezeket átállítod, biztos működni fog.
Ha jól tudom az f690-nek 17 lába használható digit i/o-nak, a fesz és a föld 1-1, tehát csak egy láb van valahol, ami nem használható. Ha ez pont a porta-n van, akkor is 5 láb biztos használható i/o-ra. Nézd át a pic adatlapját! Érdemes! PIC16F690 adatlap pinyó
Esetleg ha a configban kikapcsolsz egy-két dolgot, talán..
pl.: typedef unsigned int config; config at 0x2007 __CONFIG = (_INTRC_OSC_NOCLKOUT & _MCLRE_OFF & /*satöbbi*/) ;
Hú, ez jó ötlet! Negatív számokat tud kezelni a PIC? SUBWF után, ha a W netán negatív lenne, akkor az nem okoz gondot? DECFSZ tud valamit kezdeni egy negatív számmal? Ha ez így nem jó, akkor mondja el valaki, hogy mi a jó ötlet!Előző hozzászolásomban a kérdésem. Szép napot, megyek dolgozni.
No, hát például ezért sem szeretjük túlságosan a C-ket a PIC-eken, mert a programra ránézve nem lehet tudni, hogy milyen startup-kódot generálnak. Gyanítom, hogy az analóg perifériáknál kellene kutakodni és letiltani pl. a komparátorokat, illetve az ANSEL regiszterekben digitálisra álítani a szükséges lábakat, mert ezt nem teszi meg a gyári indulási kód. Ha jól emlékszem bekapcsolás után a 690-ben az összes analóg láb, és a komparátorok is engedélyezve vannak.
Ha csak egyenlőség ellenőrzésére van szükség, akkor célszerű a XOR-ral dolgozni, és a Z bit szerint ugrani.
Egy másik trükk, ha nem csak egyenlőséget, hanem kisebb-nagyobb viszonyt is kell ellenőrizni, akkor bizony kell a kivonás. Engem már tréfált meg párszor, hogy a PIC SUBLW utasítása "Subtract W from literal", azaz nem a munkaregiszterből von ki egy egészet, hanem a munkaregiszter tartalmát vonja ki a konstansból (ugyanígy a SUBWF is egy kicsit a megszokottal ellentétesen a munkaregiszter tartalmát vonja ki a megadott regiszterből). Konstans esetén ezt úgy lehet megkerülni, és a hagyományos "munkaregiszterből kivonok egy értéket" szemlélet szerint alakítani a dolgokat, hogy ADDLW-t használunk, de a konstans elé teszünk egy negatív előjelet. Pl.: SUBLW D'12' ; 12-ből vonja ki a W-t ADDLW -D'12' ; W-ből von ki 12-t (hozzáad -12 -t) Ha jól emlékszem, a C bit mindkét esetben "fordítva" működik, azaz akkor áll be, ha a kivonandó nem volt nagyobb a kisebbítendőnél. |
Bejelentkezés
Hirdetés |