Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nem tudom, hogy néztétek-e a Hi-tech hez irt delay-t de belinkelem, szerintem azzal sem stimmel valami.
Mondjuk lehet, sőt valószínű, hogy két ciklusra bontja a késleltetést, belső ciklus 250 us, külső meg ezt futtatja le 30-szor, szóval még ez akár jó is lehet. Úgy nézted a szimulátorban, hogy az optimalizálásokat kikapcsoltad, és a Release helyett Debug módban fordítottad? Mert az optimalizálások eléggé el tudják az embert téveszteni, miközben a kód meg jó.
Nincs kizárva, hogy csak konstanssal használható, bár elég fura lenne. Próbálj utánanézni a súgóban a használatának, hogy említi-e változóval hívást, vagy pedig csak konstanssal.
Igen úgy csináltam. Ahogy mondtad ... háát leírást nem találtam még, de mindjárt keresek. Néztem neten kódokat hi-tech hez és ezt a delay-t használva. Eddig sehol sem láttam még, hogy valaki is változóval hívta volna meg.
Helló,
AD átalakítás ügyében írok. Valahol azt olvastam, ha a PIC-et elküldjük sleepbe, akkor valamivel pontosabb lesz az AD átalakítás. Csináltam egy 128-as AD átalakító szubrutint ASM-ben. 128 átlagából van egy eredményem. 10 biten az utolsó digit ugrál. Ki akartam próbálni, hogy mi történik, ha közben a PIC sleepben van. Sajnos nem ébred fel a PIC. 16F887-es típus. Amit csinálok a szubrutinban: 1. kivárok 5 mikroszekundumot 2. Törlöm a PIR1,ADIF 3. ADCON,GO_DONE bitet egybe állítom 4. Sleep-be küldöm a PIC-et 5. nop 6. törlöm a PIR1,ADIF flaget. Mi kell ahhoz, hogy a PIC fel is kelljen?
Engedélyezd az AD számára a megszakítást (a globális nem lényeges). PIE1, ADIE vagy valami ilyesmi bitet billentsd 1-be.
Egyrészt az ADC- t a saját órájáról kell járatni (FRC), másrészt engedélyezni kell a megszakítást is (ADIE). A GIE- t nem muszáj engedélyezni, ekkor a Sleep utasítás utáni utasítással folytatódik a program és nem ugrik el a megszakításra.
Üdv Mindenkinek!
16F877 és 24c02 memóriát szeretnék együtt használni. Az írás még megy is, csak a visszaolvasás nem. Mellékeltem forráskód részleteket. Ha esetleg lenne ötletetek, hogy mi lehet a hiba, ne kíméljetek. Viszonylag kezdő vagyok, úgyhogy légyszi nem nagyon röhögni... :hide: Ugyan ez a programrészlet 24C16-al már működik, úgyhogy szerintem az I2C jól van beállítva. Az adatlapok szerint a kiolvasás menete is u.a. ... De akkor mi lehet a hiba ?!
Hello mindenkinek!
Egy TV távirányítójának gombnyomásait szeretném emulálni PIC-el és egy 4 to 16 decoderrel. A dekóder ugye negált jelet ad ki, ezért a kapcsolót PNP-s tranzisztorral kell meghajtani (remélem jól gondolom). A kapcsolási rajz a mellékletben. A problémám az, hogy amíg a tranzisztor közös tápon van a dekóderrel minden működik, de amikor a 2,4V-ra kötöm (teljesen függetlenül az 5V-tól) akkor nem működik. Ezt egyelőre egy LED-del próbálgatom, de nem akar működni. A másik problémám pedig az lenne, hogy az 5V-os lm7805 nagyon melegszik a dekóder IC-től (kivettem minden alkatrész csak ez volt bent és akkor is melegedett, de annyira, hogy nem lehetett hozzáérni sem), lehetséges hogy túl nagy áramot vesz fel? Úgy tudom hogy nincs 1 amperes lm7805-nél nagyobb 5v-os voltage regulator. Köszi a segítséget.
Szia!
1 - A tranzisztor vezérléséhez valahol össze kell kötni a két rendszert... 2 - A kapcsolásodon nincs bázis áram korlátozó ellenállás sem a gombot, sem a led -et vezérlő tranzisztornál. Az akatív kimenetnél nagyon nagy áram mehet a 2.4V-os tápból a föld felé a dekóder ic kimenetén keresztül. A felső BC640 valóban a tápot zárja rövide? Az alsónál a led áramát korlátozni kellene egy ellenállással. 3 - Van nagyobb áramú stabilizátor, de szerintem a hiba oka vagy a nagyon nagy bemenő feszültség, vagy a nagy terhelő áram. A 74HC154 nem vehet fel jelentős áramot önmagában, ha a kimeneteinél nincs valami elkötve (ld bázisáram korlátozása). A 7805 bemenetén a feszültséget 8-10V körülire kellene választani. A tok hőmérsékletét egy alkalmas hűtőbordával lehet alacsonyan tartani. A 78S05 2A-es, a 78T05 3A-es.
Hello!
Az első pontot úgy is meg lehet valósítani, hogy összekötöm a földjüket? A második pontodat nem értem, a PNP-s tranzisztort nem negatív feszültséggel vezéreljük? És ezt ugye úgy érem el, hogy mikor a dekóderre a megfelelő bemenetet kötöm, akkor a kimenetén a megfelelő lábon nem lesz feszültség a negált kimenet miatt (vagy nagyon kicsi) és ekkor kinyit a PNP tranzisztor. A BC640-es a tápot zárja rövidre, de egy a távirányítoban lévö dekoder ic-n keresztül és igy olyan mintha a megfelelő gomb megnyomodott volna. 3 - Érdemes kicserélni akkor a voltage reg-et nagyobbra? most kb 15V megy rá egy dugasztápon keresztül.
Bocs, értem mire gondoltál a 2-ik pontban, csak nem esett le.. . Akkor a kollektor elé kellene egy ellenállás?
Szia gddr80!
Szerintem a mellékelt rajz szerint építsd meg! A dekóder IC itt is "aktív 0"-s, azaz negált jelet ad. Optocsatolónak én 4N25-öt használtam. A diódákat akár el is hagyhatod, mert az az SAA1251 resetelésére kell. Az optocsatoló tranzisztorát a gombbal párhuzamosan kötöd. A collectorát kösd a 2,4V-ra az emittert a GND-re. A LED-el sorba tegyél kb. 50-100 ohm körüli ellenállást, hogy az áramát bekorlátozd! Nálam 2 dekóder IC összesen 30 gombot vezérel egy HI-FI-ben és az egész eljár egy 7805-ről hűtőborda nélkül! Üdv!
Üdv Mindenkinek!
Tegnap már feltettem egyszer, de sajnos nem jött rá semmi válasz, ezért újra megpróbálom. 16F877 és 24c02 memóriát szeretnék együtt használni. Az írás még megy is, csak a visszaolvasás nem. Mellékeltem forráskód részleteket. Ha esetleg lenne ötletetek, hogy mi lehet a hiba, ne kíméljetek. Viszonylag kezdő vagyok, úgyhogy légyszi nem nagyon röhögni... Ugyan ez a programrészlet 24C16-al már működik, úgyhogy szerintem az I2C jól van beállítva. Az adatlapok szerint a kiolvasás menete is u.a. ... De akkor mi lehet a hiba ?! A segítséget előre is Köszönöm!
Hello!
Először is köszi a gyors választ. Itt is össze kell kötni a két rendszert, és ha igen akkor hogy? A földjeiket kössem össze? És a pnp tranzisztorokat tehetem közös tápra? A másik problémám a távirányító tápfeszültsége volt, azt a 2,4 V-ot hogy állítom elő? Nem szeretném elemről használni, mert ha már dugasztápról megy az egész akkor egyszerűen arra rá tudom kötni azt is.
Szia gddr80!
Lehet, hogy nem jól értelmezem a dolgot. Azt a 2,4 V-ot nem a gomb két kivezetése között mérted? Mi adja azt a tápfeszt? Illetve jól értem, hogy ha Y1neg kimeneten 0V van, akkor szeretnéd "megnyomni" a gombot?... Másképpen fogalmazva: Mi van az általad rajzolt kapcsolásnál a GND és a 2,4V között? A távirányító vezérlő IC-je? (ha tudsz, küldj rajzot) Mert ha igen, és ennek két lábát szeretnéd "rövidrezárni" akkor nem kell semmi mást összekötnöd, csak a gomb két kivezetését az optocsatolóval. A tranyókat természetesen teheted közös tápra, meg az opto GND-ket is össze kell kötni. Én javasolnám a külön tápot, nehogy a távirányító IC-t tönkretegye. De azért még agyalok rajta.
A gomb két kivezetése között mértem, de akkor elemről ment, de mikor rákötöttem a tranyókat akkor már nem kapcsolt. Aztán összekötöttem a földeket (lehet hogy nem volt jó ötlet összekötni az elem és a dugasztáp földjét) akkor pedig néha ment néha nem. Ezért szeretnék valami jobb megoldást, és gondolkodom ezen az optócsatolón.
A 2,4 és a GND között a távirányító IC-je van. Idézet: „Illetve jól értem, hogy ha Y1neg kimeneten 0V van, akkor szeretnéd "megnyomni" a gombot?...” Igen, ezt szeretném. Idézet: „Én javasolnám a külön tápot, nehogy a távirányító IC-t tönkretegye.” Ha mondjuk mégsem lenne jó az elem, mekkora feszültséget bírna el a távirányító? Én 3,3V-ban gondolkodom, de lehet hogy az már sok lenne(vagy esetleg egy nagy ellenállás tudná korlátozni?).
Szia!
Annyit kellene tudni, hogy milyen elem/elemek vannak benne. Ha pl. 1.2V-os akkuk, akkor bírja a 3 V-ot. Lehet a tápot pl. az 5V-ból egy soros (kb. 120ohm-os) ellenállással egy 2,7V zenerrel és egy nagy kb. 1000µF-os kondival előállítani. Attól, hogy a GND-ket összekötötted, elvileg nem lehet baja. Amit rajzoltam, tuti, hogy működik! Megépítettem! A táp kérdést holnap lerajzolom, ha nem világos, de most mennem kell. Üdv!
Sziasztok!
Szeretném valakinek a segítségét kérni PIC programozás terén. Építettem egy égetőt ami szerintem megfelelően szuperál, ezt onnan tudom hogy találtam pár példaprogramot amit szépen Winpic feltölti és aztán vissza is tudom nézni. A gondom a saját program írásával van, ugyanis írtam assembly-ben egy saját, egyszerű ledvillogtató progit MPLAB-bal, le is forditottam hex-be és a winpic nem akarja beletölteni. Pontosabban még a bufferban sem mutat semmit. Ha valaki tud segíteni annak nagyon örülnék, vagy az egyik jól bevált eljárását ismertetné. Előre is köszi mindenkinek!
Nekem átalakított PC tápról megy a forrasztóállomásom. A pákába épített hőelem - típustól függően - 41 vagy 68uV-ot ad Celsiusonként. Megfelelően kis offsetű műveleti erősítővel (Microchip típusok között is lehet válogatni) erősítem a PIC által jól mérhető szintre a jelet, majd a PIC-ben még egy digitális szűrővel simítom a zajt, így a gyakorlatban 0.1 Celsius felbontást tudok elérni, ami 10uV alatti, feszültségben kifejezett felbontás a bemeneten. A 0.01 ohm 1mA-es áramnál ad 10uV-ot, azaz gyakorlati tapasztalatokból kiindulva azt mondom, hogy kb. 1mA-es felbontás megvalósítható a 0.01 ohm-os sönttel és a PIC-kel. Nem hiszem, hogy ennél finomabbra lenne szükség egy 20A-es árammérés esetén.
Szia!
Az MpLab 4 féle formátumú Intel Hex állományt képes generálni: A Project / Build Options menüpont MPLINK Linker fülén állítható a fomátum. Lehet, hogy a programod nem mindegyiket ismeri....
Ha én egy C-ben írt progival meg tudok mérni 20MHz-et 6 digit pontosan, 20MHz-ről járó PIC-kel, nem kellene, hogy a maximum 10kHz mérése problémát okozzon egy ilyen eszköznek.
Szerintem a legegyszerűbb ilyenkor a fix kapuidőt választani és a kapuidő alatt beesett eseményeket (gyújtóimpulzus) megszámolni. Ha a kapuidővel jól sáfárkodik az ember, akkor a megszámolt érték közvetlenül kijelezhető és nem kell utólagosan számolni vele, átalakítani azt. Például ha kerek 1 másodperc a kapu, akkor egészben kapod meg a fordulatszámot, ha 0.1 másodperc a kapu, akkor pedig 10 fordulatban (apropó: 4 digites kijelzésnél nem lenne elég 3 értékes digit plusz egy nulla?). De pl. 0.5s vagy 0.2s kapunál a fordulatonként két gyújtást, vagy két fordulatonként egy gyújtást is közvetlenül kijelezhető formában kapod meg. A kapuidőt megszakítással kell pontossá tenni. Lehet olyat is alkalmazni, hogy a megszakítás pl. 1ms-onként jön be, és a megszakításban egy szoftveres számlálóval érjük el, hogy minden 200-adik, 500-adik, vagy akárhányadik megszakításnál kelljen csak foglalkozni a kapuzással. A kapuzáskor nem érdemes az impulzusok számlálására használt regiszter(eke)t nullázni, hanem csak ki kell olvasni az(ok) értékét és az előző kapuzásnál kiolvasott értéket kivonni a mostaniból, ez lesz az aktuális mért érték. Természetesen a kivonás után a most kiolvasott értéket kell áthelyezni az "előzőleg kiolvasott"-ba. A kivonásoknál előjel nélkül kell dolgozni, így nem probléma a túlcsorduló számláló. Az impulzusok számlálásakor egy (vagy több) regisztert kell egyszerűen növelni, túlcsordulással nem foglalkozni.
Hello!
Próbálgattam közben a kapcsolásomat, és működik a külön tápforrásból (2x1,2V akku) a PNP kapcsolása, de egy olyan furcsa dolgot vettem észre, hogy mikor közös a föld, akkor gyengébben világít a LED (22ohmos előtéttel), mikor nincs akkor erősebben. A melegedést pedig a HCT dekóder okozta, egyáltalán nem működött, vagy gyári hibás volt, vagy én égettem le . Valahogy ki szeretném védeni ezeket a baleseteket, mégis kellenének a diódák a kimenetekre, vagy elég egy nagyobb ellenállás? A távirányító tápjára visszatérve, jobb lenne a Zeneres 5V-ról 2,4-re csökkentős, közös táp, mivel ha csak a távirányító kap áramot, és a PNP nem, akkor is kinyit mindegyik tranzisztor, mivel a dekóder IC mindegyik kimenetén logikai 0 lesz (mivel nem kap az IC áramot), és akkor az összes gomb egyszerre "megnyomódik".
En ebbe teljesen bele zavarodtam. Le kellene rajzolnod, hogy lassuk mire gondolsz. Igy nem tudunk tanacsokat adni. Amugy pedig nem tudom hogy kapcsolodik ez a tema a PIC Miertekbe?
Köszi hogy segítesz.
Már át is áligattam a dolgot, bár nem jártam sikerrel, mert amikor exportálom kifele akkor megint felajánlja hogy választhatok, de akkor már csak kétfélét és az egyike sem az ami kell nekem. Részletesebben: nekem INHX8M formátum kellene, ezt be is álítottam ott ahol mondtad, viszont mikor a file menüben az exportálásra megyek, ott is van lehetőség kettő közül választani, csak sajna egyik sem az ami nekem kell. Szerinted hol rontottam el?
Szia!
Ha a Project / Build Options / Project menüpont MPLINK Linker fülén beállítom az INHX8M formátumot és hiba nélkül fordul le (release verzió), akkor a hex file a beállított formátumban keletkezik a project könyvtárában.... Nem kell exportálni.
Szeva!
Kipróbáltam és tényleg nem kell exportálgatnom. Viszont így kiderült hogy magával a progimal van a gond, bár látszólag jó, még is vertyog hogy ez meg az rossz helyen van. Assembly progit az MPLAB-al érdemes írni vagy keressek másik programot?
Valaki rajzolt már be optocsatolós megoldást, én úgy gondolom, egy távirányítónál ez az egyetlen, tényleg korrekt megoldás. Persze nekem sem szimpatikus, ha ilyen feladatom lenne, én inkább megírnám a PIC-be azt a programot, ami a megfelelő távirányítógomb-nyomásokhoz tartozó IR jelet előállítja egy IR LED-en. Ilyen megoldáson nem gondolkoztál még? Vagy miért ragaszkodsz az eredeti távirányító meghekkeléséhez?
Szerintem ezt érdemes kicsit tanulmányozni, lehet, hogy valamelyik kivitelezés kapásból meg is felelne a célra (persze a gyújtóimpulzust valamilyen áramkörrel kondícionálni kell, hogy feldolgozható legyen):
Bővebben: Link |
Bejelentkezés
Hirdetés |