Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Találtam egy wt12 nevű blootoht egységet. Ezt már lehete pl egy pic -kel házasítva tx rx teló mikrokontroller kapcsolatot? És mégis hogyan?
Írd már le normálisan, hogy mit akarsz csinálni, mert ennek eddig semmi értelme...
Szia!
- A pic 5V -ról megy, a pic TX lábát 3.3V kimenő szintre kell illeszteni, a pic RX lábát egy meghajtóvan kell vezérelni, ami a modul kimenetét 5V -os (>4V) szintre konvertálja. - A pic is 3.3V -ról megy, nem kell illesztés a modul és a pic között.
Azt hogy ha lehet bloothottal, vagy anélkül csak a telo tx rx lábán kommunikálni a telefonban egy java alaklmazással, amiben érékeket írok és küldök egy pic-nek és a pic visszaküldi ellenörzésre, amit a telón látok.
A PIC kommunkációja egyértelmű, működik. A teló része abszolut nem PIC kérdés! Tudsz olyat is kérdezni itt, ami a PIC-el kapcsolatos?
(Attól, hogy egy kommunikációs lánc egyik végén PIC van, még nem jelenti azt, hogy PIC téma a másik oldal tárgyalása(mobiltelefon, bluetooth)! Ez igaz áramkörökre is!)
A PIC oldaláról nézve ez egy egyszerű soros port kezelés. A telefonon futó java alkalmazás viszont nem ennek a topiknak a témakörébe vág.
Egyébként így írd: bluetooth (azaz "kék fog")
Helló!
Lenne egy kérdésem! Írtam egy óra progit, ami az idő mérésén kívül tud minden félét, így a progi túllépte a 3500 programsort. A kérdésem az lenne, hogy a lapváltásra nem ismertek valamiféle trükköt, hogy kikerüljem, mert a programrészek ide-oda helyezgetése ekkora proginál nem a legjobb. Valamint miért nem fogadja el sehogy sem a 3000. programsor feletti részt a vezérlő? Oda tettem a hőmérő lebegőpontos rutinját, külön működik, csak a 3000. sor után nem... PIC16F887-re épül az óra. Előre is köszi! Panzer
Nincs trükk. A 3000. sor utáni kérdést pedig nem nagyon értem. Bárhol van a program, ha oda ugrik a szál, annak működnie kell, ha jó a lapozás. Szimuláció ki kell derítse a problémát egyből!
Ajánlom figyelmedbe: Bővebben: Link
Eddig még nem küldtem aludni mikrovezérlőt, de most megpróbáltam. A programom ide vágó része így néz ki:
Elvileg ha jól olvastam a szakirodalmat akkor annak kellene történnie hogy a PIC (PIC18F25K80) elmegy a SLEEP parancsig, amitől elalszik és nem csinál semmit. Felébreszteni csak és kizárólag az INT0 tudja, mert annak az engedélyező bitjét állítom 1-re. Amikor az INT0 lábra H-szintet kapcsolok (inicializáláskor felfutóél-érzékelésre állítottam be) akkor felébred és a SLEEP utasítás utáni utasítást hajtja végre és onnan folytatja a futást. Mivel a SLEEP előtt én direkt 0-ra állítottam a GIE-t, így megszakításba nem lép be. A gyakorlatban viszont nem úgy néz ki mintha ez történne. Olyan, mintha a SLEEP-be el se menne vagy rögtön visszajön, vagy valami más ébreszti fel stb... A lényeg hogy nem észlelem a hardveren hogy aludna a PIC. Hogyan tudom kideríteni hogy alszik-e tényleg? Debuggerrel próbáltam, soronként léptettem és a SLEEP-en egyszerűen egyből továbblépett mintha csak pl egy NOP lett volna.
Leginkább úgy tudod kideríteni, hogy méred az áramfelvételét. Esetleg villogtatsz egy ledet, és ha a led villogása leáll, akkor sleep-ben van.
Debuggoláskor nemtudom, mi a helyzet, simán lehet, hogy debug közben a sleep parancs hatástalan.
Valami esemeny ott lehet meg amit nem toroltel. Tedd ki az oszcit a labara a konfiggal es nezd meg scoppal -- ha alszik akkor alvaskor nem szabadna megjelenjen az ora. Masik lehetoseg, hogy allitsd magasra sleep elott es alacsonyra utana a labat, es nezd meg szkoppal mi van. Harmadik lehetoseg, hogy a WDT-t hasznalod -- sleep-kor a WDT torlodik, kiveve ha mar eleve van ebreszto esemeny. Tehat megnezed mennyi ido teli el a WDT bekovetkeztekor (nyilvan ez trukkos a CLRWDT-t joval a SLEEP elott kell kiadni, hogy lathato legyen a kulonbseg...)
Valami olyan rémlik, hogy a Sleep után egy NOP-ot kell tenni, de lehet, hogy nem jól emlékszem...
Csak akkor hogyha hagynám hogy megszakításba lépjen rögtön az ébredés után. Akkor is csak azért, mert a SLEEP utasításkor a következő parancsot beolvassa és ébredés után végrehajtja, majd utána lép csak be a megszakításba. Ezért szoktak a SLEEP után egy NOP-ot tenni. De mivel én a GIE=0-val nem hagyom hogy belépjen, így nem kell.
Nem megy sleep állapotba a kontroller, ha engedélyezett megszakításkérés fennáll, vagy a sleep végrehajtása alatt keletkezik. A GIE vagy GIEH / GIEL tiltja a kérés kiszolgálását...
A sleep utasítás végrehajtása alatt a következő utasítás bekerül a "prefetch queu" -ba, de már nem hajtódik végre. Amikor a kontroller felébred, azzel az utasítással kezdi. A végrehajtása után tobább lép az azt követőre, ha a megszakítás tiltott, illetve a megszakítási rutinra ugrik, ha a megszakítás engedélyezve volt. Ha kritikus a sleep utáni utasítás végrehajtása, akkor célszerű egy nop utasítást tenni közvetlenül a sleep után...
Próbaképp a SLEEP elé betettem a lehetséges három megszakítás-forrás (CCP3, INT0, INT1) flagbitjének törlését, így most jó. Tényleg elmegy aludni és addig tényleg nem csinál semmit amíg INT0-ra nem kap felfutó élt.
Üdvözlet mindenkinek!
dsPIC33FJ64GP802 kontrollerre tervezek egy áramkört, amivel a lehetőségekhez képest szeretnék minél pontosabb, zajmentesebb analóg mérést megvalósítani. Az analóg jeltartomány az analóg tápfeszültség tartománya lenne. Korábban a dsPIC30F3012-t használtam, és annál az volt a jobb, ha az ADC referencia pontjait nem belül, hanem a külső referencia pontokon keresztül kötöttem a tápra. Az IC ilyen elrendezésben van specifikálva. A dsPIC33FJ64GP802 ADC specifikálása viszont belső referencia kötés mellett van megadva. Ez nekem azt sugallja, hogy ez a konfiguráció lenne a jobb. Van valakinek ismerete, tapasztalata arról, hogy a dsPIC33FJ családnál a referencia pontot kívül vagy belül célszerű felkötni a tápra?
Miért nem tudom égetni a PIC-emet? (PIC18F25K80)? Ezt írja:
Idézet: „Target Device ID (0000ffe0) does not match expected Device ID (00006180).” Idézet: „Az analóg jeltartomány az analóg tápfeszültség tartománya lenne.” Pontosabban? Mindenképpen jobb megoldás a külső referencia, de nem simán tápra kötéssel, hanem referencia áramkörrel. Az analog közös pontot külön kell vezetni a referenciához és csak egy ponton szabad összekötni a digit testtel. Szűrések fontosak, inkább több mint kevesebb. Programból is érdemes további szűréseket végezni, feltéve, ha a sebesség ezt engedi.
Köszönöm a választ. Nem akarok külön referencia feszültséget képezni referencia táppal, a pontosságnak nem szükséges abszolút pontosságnak lennie. Elegendő a mért jeleket egymáshoz arányítanom. A szűrések fontosságát már korábban is tapasztaltam, de köszönöm, hogy felhívtad rá a figyelmemet. A külső referenciát fogom használni.
Ha nem használsz külön ref IC-t, akkor semmi értelme a külső referencia bemenetet használni, csak egyel kevesebb bemeneted lesz.
Mintha nem is látná, az összes beolvasott értékes bit 1... Jó az összeköttetés, a tápfesz értéke, a tápfesz be van kapcsolva? Nincs túlterhelés a PGC és/vagy PGD vonalon? Jó családot választottál ki?
Nem látja.
Igen sok szenvedés után rájöttem hogy azért, mert a Satronik nyákjai zárlatosak. Két panelmérőt építettem ma és mintkettőn találtam zárlatot. Kikapartam őket de még van valahol zárlat mert még mindig nem az igazi. Azt hiszem most gyártattam utoljára a Satroniknál.
Szerintem, egyenlőre csak reklamáld meg. Ne kapkodd el a döntést, lehet, hogy más félreértés történt.
Félreértés? Egy szemmel gyönyörűen látható rövidzár volt két vezetősáv közt, amit nem én terveztem oda és a többi panelon nincs is. Ez nem félreértés hanem hiba amit ők követtek el. A panelom ráadásul az általuk vállalt minimális vezetősáv-szélesség és szigetelőtávolság értékeken belül van.
Elhozom a maszkjaimat és átviszem egy másik céghez. A most gyártatott paneloknak meg visszakérem az árát.
Minden panel gyarto bizonyos hibaszazalekkal dolgozik, es a technologiai eljaras miatt van. Ha azt szeretned, hogy az osszes paneled hibamentes legyen akkor kellene kerned eletromos bemerest, ami nyilvan felaras -- annak hianyaban azonban neked kell bemerned a paneljeidet meg mielott beforrasztod...
A dsPIC30F3012-nél ha a belül kötöttem a tápra a referenciákat, sokkal zajosabban mért, mint amikor a külső referenciákon keresztül kötöttem a tápra. Az ADC specifikálását is ilyen "lábpazarló" konfigurációra adják meg.
Mivel a dsPIC33FJ64GP802 specifikálása már belső referencia kötéssel van megadva, ezért merült fel bennem, hogy ez a sorozat már nem kényes erre. Ennek megerősítésére vagy cáfolására vonatkozott volna a kérdésem.
Nem tudom, hogy mit értettél félre az adatlapból, de ennél a típusnál az analóg föld és a tápfeszültség külön lábakon ki van hozva, tehát belül nincs összekötve a digitális földdel és tápfeszültséggel. Ezért a "belső referencia kötés" itt valójában külső kötést jelent.
Látod én ezt nem is néztem! Nem is gondoltam, hogy ilyen megoldás is van! Nekem tök természetes, hogy a belső táp is lehet a referencia, de ezek szerint jobban meg kell nézni a PIC-ek adatlapját, mert érhetnek meglepetések.
|
Bejelentkezés
Hirdetés |