Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   779 / 1320
(#) szkkteam hozzászólása Júl 25, 2010 /
 
Nem tudom, hogy néztétek-e a Hi-tech hez irt delay-t de belinkelem, szerintem azzal sem stimmel valami.

delay.rar
    
(#) potyo válasza szkkteam hozzászólására (») Júl 25, 2010 /
 
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.
(#) potyo válasza szkkteam hozzászólására (») Júl 25, 2010 /
 
Én nem látok ebben semmi problémát...
(#) szkkteam válasza potyo hozzászólására (») Júl 25, 2010 /
 
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.
(#) Amarton hozzászólása Júl 26, 2010 /
 
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?
(#) potyo válasza Amarton hozzászólására (») Júl 26, 2010 /
 
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.
(#) El_Pinyo válasza Amarton hozzászólására (») Júl 26, 2010 /
 
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.
(#) cape-t hozzászólása Júl 26, 2010 /
 
Ü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 ?!

memory.txt
    
(#) gddr80 hozzászólása Júl 26, 2010 /
 
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.
(#) Hp41C válasza gddr80 hozzászólására (») Júl 26, 2010 /
 
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.
(#) gddr80 válasza Hp41C hozzászólására (») Júl 26, 2010 /
 
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.
(#) gddr80 válasza gddr80 hozzászólására (») Júl 26, 2010 /
 
Bocs, értem mire gondoltál a 2-ik pontban, csak nem esett le.. . Akkor a kollektor elé kellene egy ellenállás?
(#) cape-t válasza gddr80 hozzászólására (») Júl 27, 2010 /
 
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!

gombok.gif
    
(#) cape-t hozzászólása Júl 27, 2010 /
 
Ü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!

memory.txt
    
(#) gddr80 válasza cape-t hozzászólására (») Júl 27, 2010 /
 
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.
(#) cape-t válasza gddr80 hozzászólására (») Júl 27, 2010 /
 
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.
(#) gddr80 válasza cape-t hozzászólására (») Júl 27, 2010 /
 
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?).
(#) cape-t válasza gddr80 hozzászólására (») Júl 27, 2010 /
 
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!
(#) joszter hozzászólása Júl 27, 2010 /
 
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!
(#) szilva válasza PetAd hozzászólására (») Júl 27, 2010 /
 
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.
(#) Hp41C válasza joszter hozzászólására (») Júl 27, 2010 /
 
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....
(#) szilva válasza Beles hozzászólására (») Júl 27, 2010 /
 
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.
(#) gddr80 válasza cape-t hozzászólására (») Júl 27, 2010 /
 
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".
(#) trudnai válasza gddr80 hozzászólására (») Júl 27, 2010 /
 
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?
(#) joszter válasza Hp41C hozzászólására (») Júl 27, 2010 /
 
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?
(#) Hp41C válasza joszter hozzászólására (») Júl 27, 2010 /
 
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.
(#) joszter válasza Hp41C hozzászólására (») Júl 27, 2010 /
 
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?
(#) kissi válasza joszter hozzászólására (») Júl 27, 2010 /
 
Az MPLAB nagyon jó ...


Steve
(#) szilva válasza gddr80 hozzászólására (») Júl 28, 2010 /
 
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?
(#) szilva válasza Beles hozzászólására (») Júl 28, 2010 /
 
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
Következő: »»   779 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.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