Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   146 / 1319
(#) gyengus hozzászólása Feb 7, 2008 /
 
Elkezdtem próbálkozni a 18f4550 pwm moduljával, eddig sikertelenül.
Így próbáltam bekapcsolni:

  1. PR2 = 0xFF; //OpenPWM1(0xFF);
  2. CCPR1L = 0b10000000; //SetDCPWM1(0);
  3. TRISCbits.TRISC2=1; // set CCP1 pin (RC2) to output
  4. TMR2 = 0;
  5. T2CON = 0b00000110; // 16os előosztó
  6. //SetOutputPWM1(SINGLE_OUT, PWM_MODE_1);
  7. CCP1CON = 0b00001100;
  8. Ki meg így:
  9. CCP1CON = 0; //ClosePWM1();

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?
(#) potyo válasza gyengus hozzászólására (») Feb 7, 2008 /
 
Idézet:
„Mit csinálok rosszul?”


Azt, hogy bemenetnek állítod a CCP1 lábat:
  1. TRISCbits.TRISC2=1
(#) gyengus válasza potyo hozzászólására (») Feb 7, 2008 /
 
Köszi, ezt elnéztem.
De sajnos nem csak ez a probléma, a helyzet nem változott.
(#) gyengus válasza gyengus hozzászólására (») Feb 7, 2008 /
 
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.
(#) gyengus válasza gyengus hozzászólására (») Feb 7, 2008 /
 
Ez már gáz: megint benéztem. Felcseréltem a 'parancskódokat' amit a picnek küldtem.
Szal úgy műxik, ahogy kell.
(#) potyo válasza gyengus hozzászólására (») Feb 7, 2008 /
 
Hát igen, a pic már csak ilyen. Azt csinálja, amire parancsot kap, nem azt, amit mi gondolunk
(#) elektroláma hozzászólása Feb 7, 2008 /
 
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.
(#) Sendi hozzászólása Feb 7, 2008 /
 
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.
(#) potyo válasza Sendi hozzászólására (») Feb 7, 2008 /
 
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.
(#) Sendi válasza potyo hozzászólására (») Feb 7, 2008 /
 
Hello potyo.

Köszi akkor buktatjuk.
Köszönettel.
(#) watt válasza elektroláma hozzászólására (») Feb 7, 2008 /
 
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.
(#) menyus válasza watt hozzászólására (») Feb 7, 2008 /
 
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.
(#) trudnai válasza Sendi hozzászólására (») Feb 7, 2008 /
 
Legyszi mondd mar meg annak a tanarnak, hogy jo penzert tolrom a chipjeit es ujrahasznalhatova teszem ha valamelyik nebulo megis bekapcsolna a kodvedelmet
(#) watt válasza trudnai hozzászólására (») Feb 7, 2008 /
 
A fenét! Nehogy már vissza adjuk a "használhatatlan selejtet! Majd mi megfelelően kezeljük! Szelektív szemétgyűjtés!
(#) elektroláma válasza watt hozzászólására (») Feb 7, 2008 /
 
OK.
18F4685
Ebben az esetben még jó is lehet.
És multiplayerben?
4gomb? (szándékosan 4)
(#) gulasoft hozzászólása Feb 7, 2008 /
 
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)
(#) gulasoft válasza gulasoft hozzászólására (») Feb 7, 2008 /
 
Hupsz megtaláltam. Már csak értelmezni kell.
http://ww1.microchip.com/downloads/en/DeviceDoc/Explorer%2016%20User%20Guide%2051589a.pdf
(#) elektroláma hozzászólása Feb 8, 2008 /
 
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.
(#) watt válasza elektroláma hozzászólására (») Feb 8, 2008 /
 
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!
(#) AQLMGabor hozzászólása Feb 8, 2008 /
 
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?
(#) szilva válasza AQLMGabor hozzászólására (») Feb 8, 2008 /
 
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.
(#) AQLMGabor válasza szilva hozzászólására (») Feb 8, 2008 /
 
Valami ilyesmit sejtettem.
De így a biztos, köszönöm szépen.
(#) szilva válasza szilva hozzászólására (») Feb 8, 2008 /
 
Persze, pont a lényeg maradt le: 0xFF=-1...
(#) trudnai válasza szilva hozzászólására (») Feb 8, 2008 /
 
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.
(#) AQLMGabor válasza szilva hozzászólására (») Feb 8, 2008 /
 
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' ?
(#) AQLMGabor válasza trudnai hozzászólására (») Feb 8, 2008 /
 
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.
(#) potyo válasza AQLMGabor hozzászólására (») Feb 8, 2008 /
 
A legfelső bit nem csak előjel.
(#) Iron Man hozzászólása Feb 8, 2008 /
 
Sziasztok,lenne egy keresem,le tudna e passzolni nekem valaki,egy mukodokepes oshon fele programozo komplett doksijat?kerlek benneteket.Koszi elore is
(#) eSDi válasza Iron Man hozzászólására (») Feb 8, 2008 /
 
Üdv néked!

ITT megtalálsz mindent ami kell róla.
(#) potyo válasza Iron Man hozzászólására (») Feb 8, 2008 /
 
watt oldalán is van ez-az róla.
Következő: »»   146 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem