Fórum témák
» Több friss téma |
Egy gép 4 féle azonosítót rendelhet egy eszközhöz VID(vendor ID) PID(product ID) az eszköz verzió száma (0-255) és egy serial number(string). Általában a serial number "értékét" változtatják hogy egyszerre több ugyanolyan eszköz csatlakoztatható legyen a buszra.
Sziasztok!
Ezt a projektet bele lehet rakni 18F4525-be? Ha igen, akkor ti hogyan építenétek meg mátrix nélkül, tehát 64 saját kézzel beépített LED-ből?
Minden bizonnyal igen, módosításokkal. Shift regiszterrel, a 64 LED-es pálya viszont éppen fele akkora, mint amekkora az oldalon van.
A hozzászólás módosítva: Aug 8, 2015
Bár régebben utána néztem, de nem igazán értek hozzá, ráadásul NickE programját sem ismerem. Csak ahogy én gondolom, többféle variáció létezik. Vagy nem jó a programozás, vagy nem jó a meghajtó program. Nem véletlenül adtak ki hozzá Configuration Utility programot, ezzel teszik lehetővé hogy biztos legyen az MCP kiválasztása ha több van csatlakoztatva, mert lehet hogy mindre más hardver van csatlakoztatva. Olvastam erről az interneten, már sajnos nem tudom hol, de ez volt a megoldás.
Egy hátránya van, hogy az inf fájlon is változtatni kell, és mivel új hardverként ismeri fel, ha USB csatlakozót váltasz újra installálni kell a drivert, pedig az összes ugyan azt a meghajtó programot használja. Innen el lehetne indulni: Bővebben: Link
Sziasztok! Egy TDA7318-as vezérlését próbálom megoldani, de a mély és magas állításánál picit elakadtam. A koncepció az, hogy encoderrel növelek vagy csökkentek egy változót, attól függően, hogy merre tekerem. A mély és magas állítása 16 lépésben történhet. Az adatokat 8 bitenként fogadja, amiből jelen esetben a felső 4 bit a regiszter címe, tehát az állandó. A problémát az okozza, hogy az értékek az alábbiak szerint változnak a minimálistól a magasabb felé:
Mint látható a középértéktől van egy nagyságrendi ugrás és ráadásul onnan csökken is az érték nem pedig növekszik, pedig gyakorlatban az encodert még mindig egy irányba tekerem. Ráadásul az is meg kellene oldani, hogy a maximális értéken ne fusson túl. Van valakinek ötlete a megoldásra? A hozzászólás módosítva: Aug 8, 2015
Ezek binárisan kódolt értékek. Ha nem tetszik a formája, lehet oda-vissza konvertálni.
A legegyszerubb megoldas a tablazat. Az enkoderrel 0-15 kozotti erteket csinalsz, es ott figyelsz ra, hogy "ne fusson tul". A TDA-nak kuldendo szamokat pedig leteszed egy 16 elemu tombbe, es az tomb annyiadik elemet kuldod ki az IC-nek, ahol a fenti 0-15 valtozod van.
A tablazatban csak 15 ertek szerepel, mert az adatlap szerint a 7 es a 15 ugyanaz (0 dB).
A hozzászólás módosítva: Aug 9, 2015
A magas encoder állapota a magas nevű változóban tárolt 0..15 közötti érték. A kód végén a küldendő adat a W -ben lesz.
Üdv! lenne egy hülye kérdésem!
Ez csak most nem rég ötlött fel bennem: Amit meg lehet csinálni AVR-el, azt mind meg lehet csinálni PIC-el is? Vagy hogy is van ez? Köszi!
Hát, ez tényleg hülye kérdés. Még két konkrét típus esetén sem lenne ennek az összehasonlításnak sok értelme, de így végképp semmi.
Hasonló feladatra találták ki ezeket, tehát többé-kevésbé igen a válasz (főleg ha gyorsabb PIC18-as termékcsaládra gondolsz). De az ördög a részletekben rejlik, s nincs tökéletes megfelelés közöttük. Egyik ebben jobb, a másik amabban...
Igazából arra voltam kíváncsi, hogy a PIC tudja e azt mint az AVR és fordítva.
Köszönöm a válaszokat! most már világos!
Nem formájával van a baj, hanem, hogy az elején a két változó együtt növekszik. A középértéken túl meg az egyik növekszik a másiknak meg csökkennie kellene.
Végső megoldásként én is erre gondoltam, csak én assemblyben dolgozom.
Ez kezdetnek nem rossz, de nekem csak addig működik, amíg eléri a 8-as értéket, vagyis még eggyel tovább, mert akkor nagyon jól átvált 15-re, de ha a következő ciklusba a magas értékét tovább növelem, akkor a küldendő adat már nem jó értéket vesz fel, mert a 15 után 14-nek kéne jönnie és így meg 16 lesz ami már nem megfelelő érték.
Nem egészen, mert a xor egy irányított komplementelés, tehát elvileg úgy forgatná át, ahogy neked kell, csak a PIC16 nem biztos, hogy ismeri.
Leszimuláltam 18F-en is. De ha végig gondolod akkor látszik is. 15 után az ecoder egyet növel és 16 lesz az érték amikor a 3 bit már megint 0, tehát átugorja az xor-t.
A 16 értéknek a 0-15-ig számok felelnek meg, a 16-ot már nem kell megengedni. A minimum a 0 a maximum a 15. Igaz így a 0dB kétszer van benne, de sokkal egyszerűbbek a min.-max. vizsgálatok.
Ezt így értem, de nem tudom mit kezdjek vele, mert a 15 nem a maximum, hanem a közép érték. Eléri a számláló a 7-et, átfordul 15-re. Aztán az encoderrel még mindig ugyanabba az irányba tekerem, tehát az abból jövő érték növekszik. Hp41C azt írta, hogy az aktuális encoder állása a magas változóban. Akkor mit csináljak vele ha már elérte átfordult 15-re?
A hozzászólás módosítva: Aug 9, 2015
Az magas változó egy 0-15-ig szám, a kiküldendő értéket adja meg Hp41C módszere, ahol a kiküldendő érték a W-ben alakul ki. Tegyél a végére egy movwf bass és azt az értéket figyeld, mert azt kell kiküldeni.
Az átkonvertáláshoz a legegyszerűbb, ha az alsó három bitet ellentétesre állítod abban az esetben, ha a negyedik bit == 1.
Értem, így már világos! Ott szúrtam el, hogy én egy változóval akartam megoldani és a végén visszatöltöttem a magas változóba az eredményt. Ha az encoder adatát és a kiküldendő adatot két külön változóban tárolom akkor szépen működik!
Ja, most vettem észre, hogy Hp41C az ehhez tartozó kódot is közölte.
Igen, csak én félreértelmeztem a kapott infót! De most már minden szép és jó!
Mindenkinek köszönöm a segítséget!
Sziasztok!
Lehet, hogy láma a kérdés, de biztosra megyek inkább. Ha beállítom az RB0 megszakítást egy 16F877A-n mondjuk felfelé futó élre, és ha megnyomom a gombot és utána nyomva tartom, a megszakítási rutin csak egyszer fut le?
Szia!
Igen, csak egyszer fut, de ha a megszak. rövid idő alatt lefut, a gombod pedig prellez, akkor újabb megszakítást generál.
Urak!
Az alábbira keresek egyszerű megoldást: 2×16-os LCD + 16F877A. Alap esetben egy információt jelenít meg a kijelző, az egyszerűség kedvéért legyen ez MENU 1. Egy nyomógomb megnyomására egy másik kijelzésre vált (MENU 2), újabb megnyomásra tovább (MENU 3) és így tovább. Egy menüben egy funkció állapotát jelzi az LCD. Azt szeretném megoldani, hogy ha egy ideig (pl. 10 s) nem történik a menü funkciójában változás, akkor visszalépjen az első menüpontra. Nekem az jutott eszembe, hogy minden gombnyomásra növelek egy számlálót, ezt vizsgálom a fő ciklusban. A számláló értékének megfelelő menüre ugrik a program. Egyben Timer1-el megszakításban szintán növelek egy számlálót. Minden megszakításban megvizsgálom, hogy a számláló elérte-e a 0x14 értéket. Ha elérte, akkor nullázom a menü számlálóját. Ez így talán működne is, de nekem valahogy mégsem tetszik, mert nem csak az adott menün belül dolgozik a program, hanem a menü számlálójának figyelését is folyamatosan végeznie kell. Erre szeretnék egy ötletes megoldást találni. Köszönöm előre is!
Sziasztok!
Olyan ügyben írok, manapság kezdem olyan dolgokba ütni az orrom, ami szinte kivétel nélkül PIC-es megoldással születne meg. A probléma, hogy már olyan hosszú ez a topik, őszintén megvallva nem tudok kihámozni belőle sok mindent. Nem beszélve arról, hogy több megoldás van boncolgatva egyszerre. Ha lenne bárki, aki egy biztosan működő, lehetőleg egyszerű saját gyártmányú PIC égetővel rendelkezik, ebből adódóan ért is hozzá, nagyon hálás lennék ha szánna rám egy kis időt (Mezei villanyszerelő vagyok, elektromosságért nem megyek a közértbe, de kérlek ne úgy írjatok, mintha minden idők elektronikusa volnék) Köszönöm előre is! Üdvözletem A hozzászólás módosítva: Aug 15, 2015
Szia!
A cikkek között találod Hp41C furatszerelt PICKIT2 klónját. A rákfenéje a dolognak, hogy abban is van PIC. Magán véleményem, hogy ha csak nem az alkotás öröme miatt csinálod akkor inkább vegyél egyet. Kapható jó minőségű klón 5-6 ezer körül. Ha megveszed az alkatrészeket az sem lesz sokkal kevesebb. Lehet kapni sokszor eredeti használtat is jó áron. Illetve az eredeti PK3 is alig több mint 10 ezer. |
Bejelentkezés
Hirdetés |