| 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 | 









