Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Hali!
A számítási feladatokra visszatérve: float eredmeny; int a; short b; Rossz megoldás: eredmeny = (a / b); Helyes megoldás: eredmeny = (float)a / (float)b; Bocsássatok meg, de évek óta használok különböző gyártmányú c fordítokat, de ennyire fapados typecast-tal még egyiknél sem találkoztam! Persze mikrovezérlőnél ez nem feltétlen tragikus, csak szokatlan volt! Üdv.: Zoli
Sziasztok!
Egy számomra felettébb érdekes problémával állok szemben. Van egy PIC18F4520-al épített alkalmazás. A PORTB-re vannak kötve gombok, illetve egy optokapu kb. 50 cm árnyékolatlan szalagkábelen. Az opto jele alapból földre van húzva egy 10 KOhmos ellenállással. A gombok visznot tápra vannak húzva 4,7 K-val. A belső felhúzóellenállások szoftveresen kikapcsolva. Az egész cucc működik, azonban ha fénycsövet kapcsolgatok azonos fázison a táppal úgy érzi, hogy a porton változás történt. Jelzem mindkét irányba. Ha az Optot szoftveresen kiiktatom, akkor veszi a gombokat. Most loopolós elven ven megoldva a gombkezelés, de megszakítással is ugyanígy megy. Valószínűleg nem szoftverhiba. A PIC-mellet vannak 100 nanós kondik, plusz a panelon a tápbemenetnél van egy 2200 µF-s polkondi. Az egészet egy kínai kapcsolóüzemű csodával tápláljuk. Ez képes leadni 5 Voltot, 12 Voltot, és egy állítható -V -t. A GND-je össze van kötve a védőföldeléssel. Az alábbiakat kipróbáltuk, de mindig ugyanarra az eredményre jutottunk: A) GND-5V megy a panelra. B) GND-12 V -> kondi -> 78L05 -> kondi -> panel C) -V - 5 V (kb. -V = -5 Volt tehét a stab IC kap kb. 10 Voltot) -> kondi ->78L05 -> kondi -> panel D) Találtam itthon egy hatalmas 230-as zajszűrőt Valami 8 Ampert bír . Két tekercs+ellenállat+kondik. Ezt beiktatva sem lett jobb. Igaz ugyanez a kapcsolás megvan a táp belsejében is. E) Különböző márkás,márkátlan számítógéptápokkal ugyanígy rossz. Akksiról, "normális" tápról hajtva a hiba nem jelentkezik. Szóval itt állok kicsit meglőve a dologgal. Tudom egyszerű a megoldás =>trafóró+graetz+stabilizálás. A bibi csak az, hogy egy párszáz darab már el lett adva a termékből.... Bárkinek bármi ötlete van kérem ossza meg velem. Válaszaitokat előre is köszönöm!
Próbáltad a gombokkal párhozamos 100nF-ot?
Vagy szoftverből kellene a tranziens jellegű bemeneti zajokat kiszűrni (néhányszor 10ms-os folyamatos alacsony szint az aktiválás feltétele). Vagy nagyobb értékű felhúzóellenállás kellene (~1k), igaz ekkor többet fogyasztana, de hát tápról, hajtod és nem telepről, tehát nem számotvető.
Prinner jól mondja, kivéve, hogy az 1k nem nagyobb, hanem kisebb ellenállás, de ez csak elírás volt, gondolom. Kellenek a 100n-k is szűrésnek.
Viszont az optókat fordítva kéne bekötni, azaz felhúzó ellenállás kéne, és az optó tranyójának emiterét testre tenni. A felhúzó ellenállás itt is legyen a lehető legkissebb(1k-tól), és kellenek a szűrő kondik is! Az a jelenlegi 10k testre olyan, mint ha ott sem lenne! Soha nem szabad ilyen módon "rögzíteni" egy szintet. Lehetőség szerint a +táp felé kell előfeszíteni a bemeneteket. A fordított fázis helyzet PIC-nél nem okozhat gondot, ha mi írjuk a programot.
Hy
VAlaki tudna nekem ajánlani egy egyszeru égetőt amivel 16F84-et tudok egetni? Előre is kosz
Üdvözletem.
Vicsys elektronikus dobókockáját szeretném utánépíteni, de Győrben nem találtam megfelelőt. (vagyis pontosan azt, amit én eresek.) Kérdés: Lehet-e másfajta PIC-cel helyettesíteni azt a bizonyos PIC12F629-est? (konkrétan az elektromos dobókockához) Válaszotokat előre is köszi!
A 12F675 hasonló, csak annak vannak AD bemenetei.
Prinner, watt köszi a válaszokat!
Kicseréltem az ellenálláshálókat 1 Kilóohmosra, átvariáltam az optot, mostmár minden a tápra kapcsol. Az eredmény ugyanaz. Most az a terv, hogy a feloptózott érmevizsgálónak használom a mechanikus részét is.
Nekem csak az a bajom ezzel az egésszel, hogy Győrben a Somogyiban árulnak PIC-eket, de a gép nem is ismerte ennek a PIC-nek a számát.
Az Impulzusba meg nem érkezett meg a készlet. És nekem meg sürgősen kéne, mert nekem égetőm nincs, és a suliban tudnám megcsinálni. De amíg PIC nincs, program sincs... Egyébként életem első PIC-es áramköre lenne... :yes:
Te is győri vagy!!
Ezek szerint nem ismered a Si-ker Bt.-t.... Damjanich út 42. (átmész a révfalusi hídon, a tulipános iskola után bemész jobbra, és végig az első kereszteződésig. Egy ház alatt van a jobb oldalon) Ha hétfő délelőtt rendelsz, kedd délután tuti kihozzák neked Az eladó egyébként a RET-től rendel, és ha van náluk, akkor biztos kihozzák. Egyébként más nagykerből is lehet rendelni (ChipCad, Sos electronic, stb...), csak akkor többet kell rá várni (megvárja amíg össze gyűlik a mennyiség, amit érdemes kihozatni). Ja és lehet telefonon is rendelni tőle, ha érdekel, elküldöm a számát privátban. Állítólag honlapjuk is van, érdemes rákeresni. Igazából én a Somogyiba, Impulzusba, már régen voltam, mert itt szinte minden alkatrészt megkapok.
Köszi!
Megnézem szerintem hétfőn délután! Akkor már lehet, hogy jobban körülnézek ott! Tényleg nem tudtam erről az árusítóhelyről, köszönöm a tippet!
Szia!
Kondi lóg lassan mindenhonnan. Igen a gombokra tettem, ahogy mondtad, de semmi változás. A neon kapcsolgatása olyat lök a hálózaton, ami valszeg megbolondítja a kapcsolóüzemű tápot. Az meg kicsit bekavar a PIC-nek. Az a baj szkópom nincsen, így fogalmam nincs, milyen jellegű a zavarjel, meg egyáltalán mi is történik a porton. Ja és kipróbáltam, kiiktattam a gombokat, optot szoftveresen, akkor pedig a PORTA-n lógó demultiplexer jeleit veszi. Szóval elég érdekes a dolog. Megpróbálok keríteni egy szkópot, és majd meglátom mit tapasztalok. Jó éjt mindenkinek!
Próbáld meg 3db ceruzaelemről táplálni. Lehet, hogy a hosszú vezetékek szedik össze a zavart, nem a táp!
Idézet: „Bocsássatok meg, de évek óta használok különböző gyártmányú c fordítokat, de ennyire fapados typecast-tal még egyiknél sem találkoztam!” Pedig én úgy tanultam, hogy ez az alapváltozat.
Bocs, hogy ilyen hülyeségekkel zargatlak, de hogy kell pl 4 számot összehasonlítani mert van az a "XOR" utasítás, de ezt pontosan hogyan is kell használni?
MOVLW SZÁM1 ; ide egy állandót kell írni.
XORWF REG1,W ;amit egy regiszter tartalmával hasonlítunk össze BTFSS STATUS,Z ; Ha a két szám egyforma, akkor Z=1(zero) GOTO NEM_EGYFORMA ; ide jön ha nem egyforma ;ide jön ha egyforma 4 számot egymás után kell összehasonlítgatni.
hali valaki tudna segiteni hogy ezt a tda ic-t hogyan lehetne vezérelni?
Szia watt!
Kipróbáltam, igazad van. Ha az összes bemenetről lehúzok mindent akkor működik. Nem vesz semmit. Ha rádugom a fóliahálót, ami 50 cm-re van a 230-as vezetékektől, egyből veszi a dobásokat. A fóliaháló, egy az egyben a panelra csatlakozik. Használjak árnyékolt 230-as kábelt? Vagy van valami más megoldás az ilyen indukciós zavarok kiszűrésére? Vagy egyáltalán indukciós jellegű lenne a zavar?
Szia!
Ha jól látom I2C buszos. Vagy olyan PIC-et használsz amiben van beépített hardveres I2C busz, vagy szoftvereen oldod meg a kommunikációt. Ehhez itt találsz dokumentációt.
hű ez zsir j doksi ez bizti sokat segit majd.. csak még azt nem tom hogy hogy lessz a picben progi..:S abban tudsz segiteni mert mindenki mondta hogy szivesen segit de most nem érr rá hetekig:S
Programból nem tudsz kis időzítést betenni és figyelni, hogy a jel mindvégig megvan-e? Lehet, hogy nagyon kis impulzust elfogadsz lenyomásnak.
Szia!
Az a baj, hogy nemcsak a gomboknál van ez a probléma. Csak a loopolásnak köszönhetően az mindig a legelső tesztelésbe ugrik be. És ez az érmevizsgáló figyelője. Lekötöm az érmevizsgálót, akkor veszi a gombokat. Kikötöm a gombokat, veszi a táblamátrix jeleit. Mindegy, kimérem mennyi ideig zárja az érmevizsgáló optóját a pénz, megfelezem, és annyi időre teszek egy időzítést. Ne kapcsolgassák a neont benne, amíg megy.
Megírod a programot PC-n, lefordítod, és egy programozó segítségével "beégeted" a PIC programmemóriájába.
Programozóknak az alábbiakat ajánlanám: http://www.oshonsoft.com/picprog.html http://wattmep.tvn.hu/pic_prog/PIC_pro_net_v03.html
Sziasztok!
PIC16F84-gyel próbálkozom, és lenne egy kérdésem: Ha vmit beteszek a W regiszterbe, akkor onnan a MOVWF utasítás kimásolja vagy kiírja az éppen aktuális értéket. Tehát csinálhatok-e ilyet: MOVLW D'0' MOVWF A MOVWF B ? köszi, Blint
Igen, ahogy mondod. Vagy pontosabban fogalmazva a movwf utasítás a W értékét másolja "A" vagy "B" elnevezésű írható regiszterekbe.
A w regiszter elsősorban adatmozgatásra szolgál, a 16-os PIC-eknél nincs is más lehetőség két regiszter közötti adatmásolásra. :nemtudom:
Igen, mindig a W értékét másolja egy regiszterbe(F).
Érdekesség, hogy a Move amiből a programszó lett, nem tökéletes értelmezés, mert nem mozgatja, azaz W-ből kiveszi, és ott nem hagy benne "semmit", hanem másolja, azaz a W értéke nem változik meg. Talán a COPWF lett volna találóbb! Természetesen D'0'-át (.0, .255 formában is lehet írni az is decimális értéket jelent a fordítónak, én jobban kedvelem...) nem érdemes így betölteni, mert a CLRF A szintén 0-át tesz az "A" című RAM rekeszbe. Itt is érdemes elmélázni, hogy az "A" tényleg egy cím! Próbáld ki, hogy betöltöd a W-be: MOVLW A Ekkor a W-ben az A regiszter címe lesz! Az "A" nem más, mint egy konstans, ami egy regiszter címét mutatja. Másképpen értelmezve pedig egy mutató, ami egy RAM rekeszben lévő adatra mutat. Remélem nem untattam senkit!
Beindult az agyam a RAM rekesz témában.
Tovább gondolva az imént írtakat, nézzük meg, hogy hogyan is deklarálunk RAM változókat (névvel ellátott RAM rekeszeket) normál ajánlott módon! CBLOCK 0x20 NÉV ; tehát a NÉV a 0x20 hexadecimális "sorszámú" memóriarekesz értékét veszi fel. NÉV2 ; fentiek alapján a NÉV2 pedig a 0x21 "sorszámú" rekeszre fog mutatni ENDC Ha NÉV = 0x20, akkor a következő példa, ugyanazt a RAM adatot fogja mozgatni: MOVF 0x20,W ; W-be töltöttük a 0x20 RAM rekesz, azaz a NÉV tartalmát. Ebből is érthető, hogy a: MOVLW NÉV W = 0x20 lesz. Ha ez igaz, akkor így is meg lehet oldani a RAM változók deklarálását: #DEFINE NÉV 0x20 vagy: CONSTANT NÉV2 = 0X21 vagy: NÉV EQU 0x20 Minek is a CBLOCK? Talán annyi előnye van, hogy nem kell minden változónak külön megadni a címét, bár én megjegyzésben meg szoktam ezt tenni, így akár másképp is lehetne, kicsit áttekinthetőbbé tenné a változóink címének követését(hibakeresés). A másik előnye, hogy egy később beszúrt változónév automatikusan letolja a többi változó címét, nincs ütközés. Viszont nem lehet két névvel ugyanarra a regiszterre hivatkozni. De talán minek is? Tiszta, hogy én is a CBLOCK-ot használom, de ezután lehet, hogy megnézem milyen RAM fílingje van a #DEFINE- nek |
Bejelentkezés
Hirdetés |