Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Windows 7 32bitet használok. Nem látszik az eszközkezelőben.
Mindegy mit használsz. Ha semmilyen device-ként nem látszik, akkor a bootloader nem megy benne, szóval az első opció kilőve.
Aha értem. Köszi szépen a segítséget. Gondolom Microchip oldaláról leszedhető a firmware hozzá? Ha a firmware megvan, a programozás igényel valami különlegességet? MPLAB-ból kivitelezhető?
A firmware szerintem a MPLAB megfelelő könyvtárában is benne van, hiszen onnan tölti bele az MPLAB is. Azt hiszem, hogy a programozandó eszköz fajtája szerint több különböző firmware is van hozzá, és az MPLAB cserélgeti (nekem a 32MX és a 16F között cserélgette).
Megtaláltam egy Microchip-es fórumba a firmware-t. Csatoltam is hátha kell másnak is. Igen így van hogy minden eszközhöz tartozik 1 firmware nekem is akkor halt meg mikor ezt töltötte volna be.
Szia!
Érdemesebb letölteni a PICkit3_GUI_scripting_v03.00beta.zip -et, abban frissebb firmware van.
Sziasztok!
Egy PIC32MX460F512L vezérlővel és egy VS1053 mp3 codec IC-vel szeretnék USB-s hangkártyát készíteni. Valakinek nincs valami mintája arra, hogy hogyan lehetne az USB-n kapott adatokat MP3-ba konvertálni, hogy így tudjam az adatáramlást megvalósítani a gép és a codec IC között? Előre is köszönöm a válaszokat! ![]()
Hello!
Nem inkább a PCM29xx-es családdal szeretnél ilyen ötletet kivitelezni? Esetleg a kimenetére illesztett DAC eszközzel tovább lehet javítani az amúgy sem olyan rossz minőségén. Én inkább ezt az utat favorizálnám a helyedben. Még topik is van ezzel kapcsolatban.
Szerintem értelmetlen dolog az, amit szeretnél. Ha már egyszer tiszta audio jeled van, akkor minek kódolnád azt el MP3-ba (ami minőségvesztéssel jár), ráadásul minek tennéd ezt pont egy meglehetősen gyenge PIC CPU-val, és minek használnál utána egy több ezer forintos MP3 dekóder IC-t, hogy rögtön vissza is alakíthasd? Ennek az égadta világon semmi értelme nincs.
Azért ezt az utat választottam, mert mind a két IC-vel rendelkezem itthon. Így gondoltam összeüthetnék a kettőből egy ilyen hangkártyát.
_vl_ válaszát nem egészen értem mert az USB kapcsolaton keresztül nem tudom milyen formátumba kapná a PIC az adatokat. Végülis nekem nem lényeges az MP3 formátum. Csak az lenne a lényeg hogy a dekóder IC támogassa azt az adatformátumot amit kap. Idézet: Először ennek kellene utánanézni! A végén még kiderül, hogy neked kell hozzá driver programot írni a Windows alá.... „az USB kapcsolaton keresztül nem tudom milyen formátumba kapná a PIC az adatokat.” ![]() Idézet: „Csak az lenne a lényeg hogy a dekóder IC támogassa azt az adatformátumot amit kap” Igen, ez lenne az egyik lényeg. Ha a PIC-nek kellene konvertálgatnia, hogy az IC-nek jó legyen az adat, akkor megette a fene az egészet. Meg kell nézni, hogy mit tud fogadni az IC, és ebbe beleesik-e az, ami az USB hangkártyák szabványa szerint ott érkezhet (szerintem PCM jelet kell tudni fogadni) - MP3 pl. biztosan nem. Egyébként kicsit "gombhoz a kabátot" jellegűnek érzem a megközelítésedet. Még ha ismeri is a PCM-et a chip, akkor is felesleges pazarlás egy bonyolult formátumot dekódolni képes drága IC-t elhasználni egy olyan feladatra, amire egy 300 forintos DAC is pont megfelelő...
MP3 lejátszó már készült belőle
![]() Ez egy mikromedia for PIC32 kész hardver. Tehát nekem nem pazarlás "felhasználni" az IC-ket mivel ígyis-úgyis univerzális marad az eszköz. Csak gondoltam bővíteném a felhasználhatóságát a dolognak. Ezért jött az ötlet ![]() Hát akkor utánanézek az USB hangkártyák szabványainak, hátha okosabb leszek. Köszönöm az eddigi segítséget!
Vagy egyszerűbb lenne driver-t írni az op.rendszer alá, hogy a kapott hangokat mp3-ba vagy más támogatott formátumba konvertálva elküldje, és a PIC így csak az USB-SPI adatfolyamot valósítsa meg?
Sziasztok! A következő a problémám: TSOP1736-ot szeretnék kiolvastatni egy PIC-kel. (16F887) Odáig jutottam, hogy a különböző távkapcsolókat meg tudom különböztetni, de a gombokat nem. Mi a titka? Nem foglalkoztam még infrás dolgokkal sajnos.
ÖÖÖ...nem egeszen ertem.
A tavkapcsolo adofrekijenek meg kell felelnie a vevode. Ez rendben? Ha ugyanazon taviranyito ugyanazon gombja mas-mas jelsorzatot ad, akkor nem stimmel valami ezzel. A tavkapcsolo az elejen egy hosszabb impulzussal jelzi, hogy adni fog (nullara huzza a vonalat). Utana jon a kod valamilyen kodolassal: vagy idokodos rendszerben vagy PWM kodolasu rendszerben (az elso esetben a rovid impulzust fix ideju elengedes utan koveti az esetleges hosszu, a masodiknal frame-ek vannak es azon beluli impulzushossz hatarozza meg, hogy 1 vagy 0, tehat itt az elengedes ideje valtozik a jelek kozott.) Valamilyen hosszusagu bitsorozatot ad, ezt te veszed. Altalaban 32-48 bit korul van. Alkalmaznak Manchester-kodolast. En eddig nem talalkoztam olyannal, hogy az ado sajat magat is azonositana..., de termeszetesen elkepzelheto, tul sok taviranyitoval meg nem talalkoztam. Tehat egy adott gomb megnyomasara MINDIG ugyanazt a jelsorozatot kell, hogy kapd.
Szia!
Nézd át az infra protokollokat! Majdnem minden gyártónak sajátja van: Philips (RC5, RC6 - Manchester kódolású - példa a Propeller óra topikban található), Sony, stb. A TSOP negál, azaz ha van infra jel, akkor alacsony a kimenete. Ezenkívül a beépített AGC miatt van egy minimális és egy maximális üzenethossza. Idézet: „Tehat egy adott gomb megnyomasara MINDIG ugyanazt a jelsorozatot kell, hogy kapd.” Nem minden esetben: Philips RC5: A biztos vétel érdekében megengedett, hogy az adó ismételjen, azaz egy lenyomásra többször küldje el a táviratot. Ha a vevő hibásan venne egyet, akkor az ismételtek közül valamelyiket veheti még jól. A többszörös vételt az un. toggle bit bevezetése küszöböli ki. A gomb lenyomásakor a toggle bit vált, az ismételet táviratokban azonos értékű. Váltani legközelebb akkor fog, ha a gomot felengedték és újból lenyomtak egyet. Pl. Egy gombot lenyomva több távirat megy mondjuk 0 toggle bittel, aztán felengedve és újra lenyomva a gombot, megint mennek a táviatok, de a toggle bit 1 lesz bennük.
Segítséget szeretnék kérni megszakítás + programmemória lapváltás kérdésében.
Adott egy 16F887, ahol mind a négy programmemória szegmens használatban van. A szoftver a PAGESEL-ek segítségével szépen működik egészen addig, míg megszakítás nem következik be. Ilyenkor szépen a 0x0004 címre ugrik, lefut a megszakítás, visszatéréskor azonban hiába olvassa vissza a veremből a címet (cím+PCLATH) "elkószál" a program az egyes programmemória bankok között. Míg a programban szabályszerűen tudom alkalmazni a PAGESEL - címke CALL - címke PAGESEL $ (aktuális bank) kódrészletet, addig megszakítás esetén az utolsó "PAGESEL$" nem használható, így a program nem is téríthető vissza a helyes (kiindulási) programmemória-lapra. Megoldási javaslat?
A megszakítás belépésekor miket mentesz el és hogyan? (kódrészletet, vagy fájlrészletet tegyél fel, hogy lássuk.)
A hozzászólás módosítva: Jan 21, 2013
Most munkahelyen vagyok - este tudok kódot feltenni - de a szokásos W és STATUS mentés van - és működnek is.
Az kevés, ebben az esetben a PCLATH-ot is mentened kell ( valószínűleg használsz ugrást a megszakításon belül is, amiért a PCLATH-ot át kellett állítanod!)!
Steve A hozzászólás módosítva: Jan 21, 2013
Szia!
Olvastad? A megszakítási rutinban menteni kell a PCLATH értékét, a megszakítási rutin lapjára kell állítani az első ugrás előtt. A visszatérésnél (az utolsó ugrás után, de a retfie előtt) a mentett értéket vissza kell állítani. Idézet: „...visszatéréskor azonban hiába olvassa vissza a veremből a címet (cím+PCLATH) "elkószál" a program ...” Ha a fentieket megcsinálod, akor jó helyre ugrik majd a megszakítási rutinban is és a visszatérés után is.
Köszönöm a válaszokat! Természetesen "tökén fogtam" a PCLATH-ot már, azonban az a rettenetesen érdekes, hogy ha a megszakításban csak annyit csinálok, hogy törlöm az IRQ-FLAG-et, majd zavarom is vissza RETFIE-vel - na ekkor is elkószál...
Szia!
A megszakítás elfogadása nem változtatja meg a PCLATH értékét, a retfie minden bitet visszatölt a PC -be. Nézegesd még egy kicsit: Ha nincs ugrás a kiszolgáló rutinban és nem változtatja meg a PCLATH értékét, a retfie pedig visszatölti a megszakítás előtt teljes PC -t, akkor a következő ugrás jó helyre megy. Esetleg az ott levő ugrás célja van más lapon?
Működik a program. Szépen, hibátlanul. Ugrál lapról lapra. Aztán beüt a megszakítás (TMR1). Ugrunk 0x0004-re. Itt ennyit teszek:
BCF IRQ_FLAG RETFIE Se goto se call, semmi ugrás Innentől elmegy a program. A 0x0004-re ugrás megy, mert betettem oda egy BSF LED-et (Egyik porton egy LED) és felkapcsolja. Csak vissza nem tér... És ettől vagyok már idegbeteg ![]()
Az általad leírt esetben nem lehet, mert return, retfie esetében a teljes címet visszatölti, nem használja a PCLATH biteket! Ha a megszakításban csak a jelzőbit törlése és a RETFIE van, akkor az nem okozhat problémát! Nem lehet, hogy a megszakításban pl. vizsgálod, hogy ki okozta a megszakítást és ennek megfelelően ugrasz ( pl. BTFSS, ez is egyfajta "GOTO" és ez már okozhat eltévelyedést!) ?
Próbáld szimulátorban keresni a hibát, ott szerintem látni fogod a hibádat ( a saját "hülyeségeket" a legnehezebb megtalálni, de ebben nagyon jó segítség a szimulátor!)! Steve
Nézd meg szimulátorban!
Steve
Nem, nincsen IRQ FLAG vizsgálat, mert egyedül TMR1 megszakítás van. Minden más tiltva (beleértve DA, AD, MSSP, ...) Én is ezért vagyok abszolute tanácstalan, mert a visszatérő utasításoknak a teljes (helyes) címet vissza kéne adni. Biztos hogy az én hülyeségem van a dologban, meg tuti valami bagatel dolog, de rettentő bosszantó...
Szia!
Ha ilyen egyszerű a programod, tölts fel egy szöveges állományban. Így látatlanban csak azt tudom mondani, hogy állítsd be debugger -nek a MpLab Sim -et és lépésenként hajtsd végre a programot. Nézd meg a Hardware Stack -et is... |
Bejelentkezés
Hirdetés |