Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Elkezdtem próbálkozni a 18f4550 pwm moduljával, eddig sikertelenül.
Így próbáltam bekapcsolni:
A megjegyzésekből látszik, h a C18 fveivel is próbálkoztam, mivel nem működött, inkább a regisztereket állítottam második próbálkozásra. Egy hangszórót kötöttem az RC2-es lábra (tranzisztorral, ellenállással), néztem műszerrel is 0V-ot mutatott. A hangszóró bekötése sztem jó, mert a ds1307 sqw kimenetére is így volt kötve és akkor szólt. Mit csinálok rosszul? Idézet: „Mit csinálok rosszul?” Azt, hogy bemenetnek állítod a CCP1 lábat:
Köszi, ezt elnéztem.
De sajnos nem csak ez a probléma, a helyzet nem változott.
Megszólalt a hangszóró.
Viszont pont fordítva műxik, mint sztem kéne. Erre szólal meg: CCP1CON = 0; LATCbits.LATC2 = 0; Erre kapcsolja ki: PR2 = 0xFF; CCPR1L = 0b10000000; //SetDCPWM1(0); TRISCbits.TRISC2=0; // set CCP1 pin (RC2) to output TMR2 = 0; T2CON = 0b00000110; // 16os előosztó CCP1CON = 0b00001100; Nem értem.
Ez már gáz: megint benéztem. Felcseréltem a 'parancskódokat' amit a picnek küldtem.
Szal úgy műxik, ahogy kell.
Hát igen, a pic már csak ilyen. Azt csinálja, amire parancsot kap, nem azt, amit mi gondolunk
watt!
sub procedure interrupt if TestBit(INTCON, TMR0IF) = 1 then counter = counter + 1 TMR0 = 96 ClearBit(INTCON, TMR0F) ' ClearBit is realised as an inline function, ' and may be called from within an interrupt else if TestBit(INTCON, RBIF) = 1 then #########??? ClearBit(INTCON,RBIF) end if end if end sub Így kezeli a megszakításokat a MikroB.(hehe Mikrobi ) A prioritást nem tudom, kinek adjam. RB0, vagy TMR0. Itt mind1, milyen sorrendben van(ha jól tudom), máshol lehet állítani. Ha pont egyszerre csordulna túl a timer, meg nyomják meg rb0-t is(ok kicsi az esélye, de később még jól jöhet), akkor melyik fusson le előbb? A timerreser ugye rövidebb idő, tehát én ezt választanám. A másik, ami még az előző kérdést befolyásolhatja, hogy a számítást RB0 interrupton belül kellene elvégeznem, kb így tmp=TMR0 If (tmp+valtozom)>timer_max_ideje then //ha közben volt timer reset eltelt=tmp+valtozom-timer_max _ideje else eltelt=Abs(tmp-valtozom) End if valtozom=tmp ez menne a ####??-es részhez De ha ez interrupton belül, lehet jobb lenne vmi xoros megoldás. Nem tom, ezt hogy lehetne 1*űbben.
Helló Mindenkinek.
Elnézést az előbbiek utáni egyszerü kérdésért. Egyszer már kérdeztem, hogy ha be van kapcsolva a kód védelem, utánna törölhető, illetve felülírható e a pic. A válaszotok az volt hogy igen. Most meg egy tanári diplomamunkában a következőt olvasom: "A kódvédelem kikapcsolása nagyon fontos, mert ellenkezı esetben többször nem tudjuk égetni a mikrovezérlıt, ezért erre külön is hívjuk fel a tanulók figyelmét. Egyébként az arra szolgál, hogy megvédjük szellemi termékünket attól, hogy illetéktelenek is hozzáférjenek." Most akkor mi van? Nem engedjük át a tanárjelőltet? Köszönettel.
Most csak a te kedvedért összedugtam az ICD2-t meg egy 18F2550-et, bekapcsoltam az összes kódvédelmet, és beégettem. Megpróbáltam kiolvasni, csupa nullát adott. Ezután kikapcsoltam a kódvédelmet, nyomtam egy újraprogramozást, és máris olvasható a chip tartalma.
Idézet: „Most akkor mi van? Nem engedjük át a tanárjelőltet?” Nem hát. Látszik, hogy lövése sincs a dologról.
Hello potyo.
Köszi akkor buktatjuk. Köszönettel.
Na most RB0 helyett CCP modult használnál, ahogy ezt tárgyaltuk, akkor azt ráérne később lekezelni, sőt akár a megszakítását is meg lehetne szakítani, ha prioritásos a PIC (18F-ek). Ennek oka, hogy a Timer1 a CCP1 megszakításakor eltárolódik, lekezelni ráér a következő impulzus előtt. A Timer1 megszakítása meg olyan rövid ideig tart, hogy nyugodtan lekezelhető a CCP1 lekezelése közben is.
Sziasztok!
Watt: Valószínűleg jobban átgondolom ezt az egészet.... Ez az egész nekem a következőhöz kellene: Van egy mikrofonerősítő áramkör ami AGC vezérelt (tehát a hangfrekis jelből képez kb. 300 - 1500 mV DC feszt amivel szabályozza az erősítést a bemeneten) Ezt az áramkört kell úgy kialakítanom hogy rendelkezésre álljon egy kimenet amin állapotváltozás lép fel ha a mikrofon mellett beszélnek. VOX, VAD, VAS, funkciónak is ismert ez, a diktafonoknál használják pl. Az AGC nél a villard sokszorozó után van egy soros 10 K es egy 4,7 u ami "szelidíti" (puffereli) kissé a hirtelen feszváltozásokat . Nekem kb egy sec es időtartamra kéne bebillenjen a PIC kimenet, a trigger ennél lehet hogy kevesebb lesz (0,1 sec nagyságrendű ). Gondolkodtam azon is hogy kihasználnám a PIC komparátorát, így mindjárt az érzékenységet is állítani tudnám.
Legyszi mondd mar meg annak a tanarnak, hogy jo penzert tolrom a chipjeit es ujrahasznalhatova teszem ha valamelyik nebulo megis bekapcsolna a kodvedelmet
A fenét! Nehogy már vissza adjuk a "használhatatlan selejtet! Majd mi megfelelően kezeljük! Szelektív szemétgyűjtés!
OK.
18F4685 Ebben az esetben még jó is lehet. És multiplayerben? 4gomb? (szándékosan 4)
Idézek a chipcad oldaláról.
A könyv mellé ajándékba adunk egy 25$ értékű AV16 panelt, amit az olvasó megszerelhet magának, hogy segítségével kipróbálhassa a könyv mintaprogramjait. Az AV16 a népszerű Explorer 16 fejlesztőrendszerbe illeszthető, majd az alkalmazás ICD2 vagy RealICE készülékekkel programozható illetve a programfutás nyomon követhető. Nos mivel véletlenül sem rendelkezem a fent említett Explorer 16 fejlesztőrendszerrel, esetleg valaki el tudná mondani mi van benne, és ha megkapom a kártyát (ami jelenjeg nincs raktáron, tehát talán a jövő héten tudják a könyv mellé adni), akkor mivel vehetem rá, hogy használni tudjam. (Gondolom a kivezetések vannak a csatlakozóra rakva, csak az a kérdés, hogy milyen kivezetések)
Hupsz megtaláltam. Már csak értelmezni kell.
http://ww1.microchip.com/downloads/en/DeviceDoc/Explorer%2016%20User%20Guide%2051589a.pdf
Azt jól gondolom, hogy ha van 3 int bemenet, és 3ccp, akkor az 6 megszakításos bemenetet jelent?
Persze a timereket nem árt elindítani. Tehát 6 gombot le tudnék kezelni interruptal. Vagy totál fals az elgondolásom. Persze külső elektrónikával lehetne még olyat is, hogy int-re rámegy, egy PORTD-n meg mondjuk jelzi, melyik. Csak ott már sok a hibalehetőség.
Ha 3 CCP,van benne, akkor az 3 csatorna(6 gomb).
Az indító gombnak nem a lenyomáskor kell élesednie, hanem a felengedéskor. Ezért nem kell kapkodni vele, ráér sima lábról lekezelni. A gomb figyelése mehet megszakításból időzített prellmenetesítéssel. A gomb felengedésekor lehet a gombhoz tartozó jelzést(pl. LEDx) bekapcsolni, nullázni a TIMERx-et és engedélyezni a megszakítását a CCPx-nek. Ez utóbbi 3 műveletet védeni kell megszakítás ellen, azaz high megszakításon belül kell lekezelni(tehát a gomb figyelő megszakítást high-ba kell tenni és a CCP lekezelést is. (már ami a kapott adatok letárolását érinti, mert a feldolgozást ráér kint megtenni.) Az indító gombokat úgy kell lekezelni, hogy ha bármelyik nyomva marad, attól még a többi gomb működjön! A kijelzéshez kell legalább három soros LCD(akkor már 4, mert ilyen kapható). Jó kis kezdő project és még érdekes is!
Csúnyán megijedtem az imént, mikor a
MOVLW 0xFF MOVWF T1 Hatására a Watch-ban azt láttam, hogy T1 = -1. Azután rájöttem, hogy T1 decimális megjelenítése mellett ki volt pipálva a "signed" Ez mit jelent?
Signed = előjeles.
Egy byteon 0...+255 tudsz előjel nélküli számokat ábrázolni, ha előjelesként kezeled az 1 byteos értéket, akkor -128...+127 között. Ilyenkor a legfelső bit jelzi, hogy a szám negatív, 0xFF=1, 0xFE=-2, stb.
Valami ilyesmit sejtettem.
De így a biztos, köszönöm szépen.
Persze, pont a lényeg maradt le: 0xFF=-1...
Csak egy apro kiegeszites mindehhez, AQLMGabor, ha erdekel a matekja is a hatterben, hogy miert FF a -1, akkor keress ra a 2-es komplemens-re.
binárisban jobban látszik a lényege
b'1xxxxxxx' = negatív b'0xxxxxxx' = pozitív Igy jó? Most, hogy így leírtam mi a nulla? az marad a b'00000000' ? ááá hülye kérdés persze, mert ilyenkor csak 7 bitben kell gondolkozni, a nyolcadik csak előjel. Ebben az esetben az '10000000' ugyanazt a decimális értéket adja az mint a '00000000' ?
Köszönöm, ez meg is válaszolta a kérdésem.
Huhh a rossz az benne, ezt én tanultam vagy 15éve. Sokat felejtettem, sebaj előről az egészet.
Sziasztok,lenne egy keresem,le tudna e passzolni nekem valaki,egy mukodokepes oshon fele programozo komplett doksijat?kerlek benneteket.Koszi elore is
watt oldalán is van ez-az róla.
|
Bejelentkezés
Hirdetés |