Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Üdvözlet mindenkinek!
Az lenne a kérdésem hogy PIC-el hogy lehet le és felfutó éleket érzékelni? A problémám a következö van egy jelem ami az egyik állapotában 4,5V tehát "1" és a másik állapotában 0-4,5V közötti négyszögjel. Ez a négyszögjel 364Hz-es. Tehát a feladat az hogy külömbséget tudjak tenni ez a két jel között.
Szia!
A call és a rcall a következő utasítás címét elmenti a stack -ra, és aztán ugrik - egy return / retlw utasítással vissza lehet rérni a call / racall utáni utasításra. Idézet: 1. Milyen PIC?„Az lenne a kérdésem hogy PIC-el hogy lehet le és felfutó éleket érzékelni?” 2. Legegyszerűbben a bemeneti szint megváltozását jelző megszakítással. Valamivel bonyolultabban: a CCP (vagy ECCP) egység Input Capture (TRudnai kolléga leleményes elnevezése szerint: jelrögzítő) üzemmódjával. De a célszerű megoldás attól is függ, hogy mit kell csinálnia közben a (melyik?) PIC mikrovezérlőnek.
Hello
Egy PIC16F84-es mikrovezérlőről lenne szó. Alap esetben folyamatosan érkezik be a négyszög jel és ezt kéne vizsgálni hogy ez mikor lesz folyamatos stabill '1'-es állapot. Tehát folyamatosan vizsgálni az adott lábat hogy ha már nem a négyszögjel jön akkor a program tovább ugorhason. Olyasmi elvre gondolok mint a BTFSS parancs hogy ugye akkor ugrik tovább ha egyes a vizsgált bit. Ha a jel váltott a négyszögjelről folyamatosra és tovább ugrott a programban, azután már nem lenne fontos hogy most a jel vissza állt-e négyszögre vagy sem. Remélem azért érthető amit írtam
Üdv!
Egy periféria-pazarló ötletem lenne: a 364Hz periódus ideje ~2.7ms. A Timer0 számlálót kellene úgy beállítani, hogy >= 2.8ms-enként okozzon megszakítást. A négyszögjeled az RB0 interrupt lábra menne, lefutó élre kérne megszakítást, ekkor nullázná a számlálót. Tehát van két esemény: lefutó él, és a túlcsordulás. Ha Int0 kéri a megszakítást, akkor négyszögjeled van a bemeneten; ha a Tmr0, akkor pedig DC.
értem hogy mit mondasz.
arra gondolsz akkor hogy elkell inddítani egy számlálót ami 2.7msec hosszabb. Az RB0 lábon van a jel és akár hányszor jön lefutó él a számlálot ujra indítja és a számláló csak akkor fog tudni tulcsordulni ha nincs lefutó él tehát nincs újra indítás.
a frekvenciája az 364Hz és a kitöltése olyan 70%körüli. pontosan nem mértem le.
persze tudom. De nem akarok még plusz alkatrészeket ha meglehet oldani szoftveresen is.
Mert már megcsináltam ezt egy retriggerelhető monostabil áramkörrel. hogy ha jött lefutó él akkor az ujra indította a monostabil áramkört és ha nem akkro pedig át billent a másik állapotba.
köszönöm a segítségeteket. sikerült megoldani a problémát és nagyszerüen fut a program
Köszönet pako-nak a nagyszerü ötletért.
Hello!
A WPB_F18_F16_F12_v1.29b-t használom. De most építettem egy Tait- féle égetőt leválasztóval, állítható Vpp feszültséggel (ha sok vagy kevés lenne). UV led íráskor. 2 teljes napomba került, de 5,00 Vdd és 12.5 Vpp gombnyomásra leválaszt vagy, ha írja. Ha kész már próbálhatom is. Így most tényleg vakarózás nélkül koncentrálhatok a szoftverre. A programod ezzel is felismeri a 16f887-et meg a 16F616-ot is. De visszaolvasva 4db 3FFF-es mezővel arrébb csúszva mutatja. Hp41C mondott valamit tároló különbségekről, hogy 4 meg 8-as. Ez nem tudom mit jelent, de neked hátha segít. Most a PBrennerNG programot használom. Teljesen működik mind a 2.
Úgy emlékszem egyszer már írtam hogy ne ezt használd, hanem a 1.30b-t! Bővebben: Link
Ha a Vpp 12V az minden PIC-hez megfelel(már amelyiknek nagyobb a Vpp-je, mint a Vdd!)...
Sziasztok
Azt, szeretném kérdezni van e-PIC USB/digitális converter perifériával?
Az micsoda?
csak csatlakoztatni kell a megfelelő lábakra az usb kábeleket és automatikusan küld illetve fogad jeleket USB-n a pic
ami USB-n bejön azt beírja egy regiszter(ek)be
A PIC csak azt csinálja, amit a futó program (a firmware) előír számára. Ha veszel egy USB illesztővel rendelkező PIC mikrovezérlőt, és olyan programot töltesz bele, ami kezeli az USB kapcsolatot, akkor küldhet és fogadhat adatokat. De ha ugyanabba a mikrovezérlőbe csak egy ledvillogtató programot töltesz, akkor nagy ívben tesz az USB-re.
Nézz szét a honlapomon a PICCOLO projekt-ben, abból talán világosabban láthatók az összefüggések!
köszi
Sziasztok!
Szeretném ismét a segítségeteket kérni, egy MCP4728 DAC ic-vel kapcsolatban. Szeretnék adni neki új "hardware" címet, de ő I2C buszon és *LDAC lábon várja az adatokat, és sehogysem tudom megcsinálni.
Az Arduino fórumon találtam példát de nem tudom CCS-re fordítani, úgy, hogy működjön is. A fenti kód a fordítás, itt az eredeti:
i2c.ldacwrite(..); ez mi lehet? -én Output_Bit(..); -nek fordítottam. Az ic dokumentuma itt található. A 42.oldalon (is) van ábra és leírás erről. Előre is köszönöm a segítségeket! Jó éjt! Sanyi Idézet: A SDA labon varja az adatokat, a LDAC lab a beirt adatokat irja at a DAC regiszterebe. „ő I2C buszon és *LDAC lábon várja az adatokat”
Szia!
Tudom, hogy az SDA-n várja az adatot, ott is küldöm, csak még nem találkoztam ilyen megoldással, és tegnap kicsit késő volt már; és a fogalmazásgátló is úrrá lett rajtam a fáradsággal együt. A gond már ott kezdődik, hogy nem értem ilyen esetben hogyan "szólítsam" meg, mert a dokumentum szerint, ha jól értelmezem, a general call hívást kell használni, de akkor most azzal hívom, vagy a "hagyományos" address byte-al amit az ábrán mutat? -egyikkel sem működött nekem, vagy nem jól "rángatom" az *LDAC-t? Vezérelni nagyjából tudom az ic-t; SDA-SCL 10K VDD; *LDAC csak PIC-re nincs felhúzva. Remélem valaki tud segíteni benne. Köszönöm!
Az adatlapban az áll, hogy a cím megváltoztatható az EEPROM átprogramozásával. Ha ismeretlen az eredeti cím, akkor "általános hívással" ki kell olvasni a címet (lásd 5.4.4 ábra), majd ezt a címet használva lehet beállítani az új címet (5.6.8 szekció), vagy a kiolvasott címet kell használni a továbbiakban.
Egyébként vásárláskor/rendeléskor a típusjelzés utáni A0, A1, Ax jelzi, hogy mi az alapértelmezett 7 bites cím alsó három bitje (a felső 4 bit pedig mindig 0b1100).
Szia!
A LDAC jelnek nincs köze az alap I2C kommunikációhoz, arra való, hogy a bemeneti regiszterekben előkészített értékeket egyszerre írja át a kimenetiekbe, azaz ne legyen közöttük időbeli csúszás. Be kell állítani a csatornákhoz tartozó új értékeket, aztán a LDAC alacsony szintre kell vinni, ekkor egyszerre átíródnak az adatok. A kommunikációban van egy lehetőség (Fig. 5.8) az adat átírásáraaz UDAC bittel - csatornánként lehet csak beírni... A másik megoldás az LDAC állandó alacsony szintje, ekkor a beírás után automatikusan átmásolódik az adat a csatorna kimeneti regiszterébe. Milyen értéket állítasz be a referencia kiválsztása (Ref Select) és a mód (Power-Down Select) bitekre? Megkapja a külső referencia feszültséget?
Sziasztok!
Köszönöm a hozzászólásokat! -de félreértettétek a problémám. Vezérelni tudom, és működik is (szerencsére):
Nem ez a baj, tudom a gyári I2C address-t is, A2=0; A1=0; A0=0; de pont ezeket szeretném megváltoztatni, hogy 4db-ot tudjak egy I2C buszra kötni, de itt software-esen kell átírni a címet és az nem megy; sem a cím kiolvasása, sem az átírása, mert közben elvileg "rángatni" kellene az *LDAC lábat, de nem tudom hogyan/hányszor és mikor. Ebben kérném a segítségeteket. Köszönöm!
Szia!
Ahhoz egy szinttel lejebb kell menni az I2C kezelésében, mert a general call 2. adat bájtjának utolsó bitjének elküldése és az ACK között kell a LDAC jelet magasból alacsonyra állítani...
Szia!
Hát igen, ez a gondom nekem is... Ugye az egy szinttel lejebb-menésnél nem ASM-re gondolsz?-mert arról fogalmam sincs...
Szia!
Nem, a gyári C eljárás is rész eljárásokból áll. Ha hozzáférhető a forrása, annek alapján lehet írni egy módosított I2Cwrite_LDAC írásai eljárást. Ha nem, akkor meg kellene írni.
Szia!
Sajnos CCS-ben nincs forrás, csak pár funkció. A Microchip HI-TECH C PRO for the PIC18 MCU programban elérhető az I2C forrása? Előre is köszönöm!
Hali
Megtort a jeg a Mchp hazatajan: MPLAB X linux-ra es MacOS-re.
Igen, ez egy Java alapu cucc, Netbeans-en alapszik amugy. Anno a betat nezegettem, eleg baratsagos, mint fejlesztoi kornyezet, de azert erezni, hogy nem nativ kod. Szereny velemenyem szerint egy .NET-el hjobban jartak volna (nem mintha az nativ kod lenne, de valahogy az megis gyorsabb, mint a Java).
Szia!
ASM-ről sajnos fogalmam sincs...de próbálkoztam. Ha valaki megtenné, hogy a megnézi a csatolt kódomat, esetleg kijavítja/útbaigazít, nagyon szépen megköszönném! |
Bejelentkezés
Hirdetés |