Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   120 / 1320
(#) szilva válasza gulasoft hozzászólására (») Dec 31, 2007 /
 
Közvetlenül portlábra nem illik kondit tenni, főleg elkót. Amikor bekapcsolod a portbitet, akkora áramot ránt megába, hogy valszeg még a tápfesz is megcsuklik, aztán attól vagy resetel a PIC (ha be van kapcsolva a védelme), vagy meghülyül.

A LED halványításához egyébként nem kell kondenzátor. A PWM kimenetet egy soros ellenálláson keresztül a LED-re kell kötni, aztán valami nem látható frekvencián "villogtatni" a LED-et. A kitöltési tényezővel lehet beállítani a fényerőt. Arra figyelj majd, hogy az érzékelt fényerő közel sem arányos a kitöltési tényezővel, valószínűleg célszerű egy táblázatot felépíteni ahhoz, hogy nagyjából egyenletesnek érzékeld a fényerőcsökkenést-erősödést.
(#) szilva válasza gulasoft hozzászólására (») Dec 31, 2007 /
 
Ugye nem szoftveresen akarsz PWM-et megvalósítani, hanem a PIC beépített modulját használod?
(#) gulasoft hozzászólása Jan 1, 2008 /
 
Boldog új évet kívánok minden fórumozónak!
(#) gulasoft válasza szilva hozzászólására (») Jan 1, 2008 /
 
Láttam az adatlapon a PWM-et, köszi!
(#) bmateusz hozzászólása Jan 1, 2008 /
 
Boldog új évet!
(#) bmateusz válasza gulasoft hozzászólására (») Jan 1, 2008 /
 
A PIC16F887-emre megcsináltam ezt a PWM dolgot. Azt az apróságot kifelejtettem, hogy csak a CCP1 (RC2) lábon működik a dolog De végülis működik. Megosztom, hátha jó lesz 877-re is. Megjegyzem egy led életébe került
A ledet az RC2 és GND közé kell kötni, ellenállással persze.

PWM.rar
    
(#) gulasoft válasza bmateusz hozzászólására (») Jan 1, 2008 /
 
Működik, csak az első pá sort (config-ig végéig) kellett kicserélni.
Köszi, bár nekem több porton is kéne ezt tudni, meg vannak benne érdekes számok, csatra angol tudásommal megpróbálom kisilabizálni a leírásokból mi mire való, a késleltetéssel már sikerült jól lelassítani most még meg is kell majd fordítani a folyamatot, de kiindulásnak jó.
Köszi szépen.
(#) bmateusz válasza gulasoft hozzászólására (») Jan 1, 2008 /
 
Az angolt a dokumentációból másoltam a szöveget. Az volt még benne, hogy össz 2 ilyen kimenet van. A CCP2-t is ugyan úgy lehet aktiválni elvileg. Ki is próbálom
(#) bmateusz hozzászólása Jan 1, 2008 /
 
Ment is, csak ahol 1 van, oda 2-t kell írni, és a TRISC-nél nem csak az 2, hanem az 1 bitet is írogatni kell.
(#) gulasoft válasza bmateusz hozzászólására (») Jan 1, 2008 /
 
A baj az, hogy nekem kéne vagy 8 ilyen.
Viszont megírtam az elhalványítást meg a teljesen kialszikhoz tettem még egy kis várakozást, így már egyészen pofás. A ledet körbenyomtam ragasztópisztollyal, mehet a lufiba, aztán a jégbe, azután ráérek még a többi port birizgálásával.
(#) bmateusz válasza gulasoft hozzászólására (») Jan 1, 2008 /
 
Ha 8 ilyen kéne, azt nem tudom hogy lehetne, mivel 2 ilyen kimenetet látok.. Szoftveresen talán? Vagy külső alkatrészekkel? Elektronikához annyira nem értek, valakinek van erre ötlete?
(#) szilva válasza bmateusz hozzászólására (») Jan 1, 2008 /
 
8 az bajos lesz. Nekem 4 kellett volna feszültségkimenetként, egy DC-vezérelt hangerő-hangszínszabályozóhoz (TDA1524), és az lett a megoldás, hogy csináltam 12F683-akból (DIP8 tok, van benne PWM modul) 4db egycsatornás, paranccsal vezérelt PWM "kockát", amiket egy soros buszra felfűztem, és egy ötödik PIC-kel küldtem ki a parancsokat nekik. Ez az ötödik PIC adja a kezelői felületet is.
(#) potyo válasza bmateusz hozzászólására (») Jan 1, 2008 /
 
Az a kérdés, hogy egymástól függetlenül kell-e a ledeknak halványodni/erősödni? Mert ha egyidőben kell halványodni/erősödni, akkor elég egy pwm láb, a többi lábbal meg csak ki-be kapcsolgatjuk azokat a ledeket, amelyek kell, hogy produkálják az átmenetet az adott időszakban.
(#) gulasoft válasza potyo hozzászólására (») Jan 1, 2008 /
 
Végül is amikor az egyik halványodik a másiknak erősödni kell, és két port van, tehát így elég lehet. Gondolom a kapcsolgatásra tranyók a földre a megoldás, és a ccp1-ccp2-őn lévő ledeket így lehet külön kapcsolni.
(#) zolli hozzászólása Jan 2, 2008 /
 
Nekem tudna abban valaki segíteni hogy MPLab 8-al (Vagy végülis akármelyikkel) hogyan tudok meglévő lefordított fájlt (HEX) beégetni? Odáig én is eljutok hogy forrásból (ASM, C) le tudom fordítani és beégetni. De mi a tehendő ha csak a HEX file van meg?
(#) potyo válasza zolli hozzászólására (») Jan 2, 2008 /
 
A Select Device-nál a megfelelő chipet kiválasztod, majd File-->Import-al beolvasod a hex fájlt. Ezután Programmer-->Program.
(#) deguss hozzászólása Jan 2, 2008 /
 
Egy nagyon érdekes, számomra felfoghatalan problémával szembesültem minap. Illetve szembesülök folyamatosan már két napja:


Írtam C-ben (PICC) egy pár függvényt karakteres LCD modul kezelésére. Egy PIC18F4520-on, de egy 16F877A-n is TÖKÉLETESEN működik.
4-bites módot használok, van bőven delay mindenhol, nagyon stabil.

Ezt 1 az 1-ben átültetve a Microchip C30-ba (dsPIC-ekhez) sikeresen lefordul, van itt is bőven delay, részletek működnek, az LCD-t letörli, de egyszerűen nem ír ki rá semmit. Egy dsPIC30F4013-asom van.
1 teljes napot (24 órát) szórakoztam már vele. Megvizsgáltam az LCD-t, többel is ezt csinálja.

Az LCD-t kötöttem más PIN-re is, megnéztem ott is, de ott se ment. Megmértem és meg is néztem egy LED-del a PIN-ek egyenáramú tulajdonságait, tudnak elég áramot szolgáltatni, mindegyik PIN tud fel és lehúzni (sink & source).

Egyszerűen eldobom az agyam, mert már majdnem kivágtam az LCD-t, egy normál 18-as vagy 16-os PIC-kel megy, ezzel meg nem. Pedig levettem a frekit, egy 4 MHz-es kvarc van, PLL deaktiválva.

Csatoltom a PIC18F4520-ra írt libraryt (PICC: LCD.c) és a dsPIC30F4013-ra (C30: lcd_4bit).

Kérem aki dolgozott már dsPIC-ekkel segítsen egy kicsit. Mi szerepe van a LATx és PORTx registereknek _írás_-nál?

Köszönettel: deguss

Megj. Csak írok az LCD-re, R/W testen van.
(#) watt válasza deguss hozzászólására (») Jan 2, 2008 /
 
Nézted már, hogy azok a lábak, amiket használsz milyen más funkciókra vannak még felkészítve? Lehet, hogy valamelyik lehetőség nem lett letíltva. (tudom, hogy más lábakon is próbáltad, ez csak egy ötlet)
(#) deguss válasza watt hozzászólására (») Jan 2, 2008 /
 
Egyenáramilag mindegyik tud testet és tápot kiadni, megmértem.
(#) szilva válasza deguss hozzászólására (») Jan 2, 2008 /
 
Nem tudom, csak egy tipp: az elején, az init-nél a HD44780 adatlapjában nem ez a szekvencia van megadva, amit a c progidban látok. Ott 2-szer vagy 3-szor van elég nagy időzítésekkel kiküldve mód parancs, és a legvégén ez a 4-bites, ami a tiedben is. Lehet, érdemes lenne végigpróbálni az ajánlott szekvenciát. De persze könnyen lehet, hogy nem ez a gond.
(#) deguss válasza watt hozzászólására (») Jan 2, 2008 /
 
Topi adott tippet a szinkron kiírásról, vagy valami ilyesmi. Erről hallotta valaki valamit? buffer_flush?
(#) watt válasza deguss hozzászólására (») Jan 2, 2008 /
 
Értem. Pedig amikor úgy tűnik, minden rendben, és még sem működik valami, akkor nekem ilyen doglok szoktak bekavarni. Lehet, hogy valamelyik belső periféria(milyen paradoxon! ) valami okból belekutyul a jelbe. Mert egyszerűen nehéz elhinni, hogy a jelek rendben vannak, mert akkor működne.
(#) potyo válasza deguss hozzászólására (») Jan 2, 2008 / 4
 
Ha az egész portot írjuk egyben, akkor elvileg mindegy, hogy LATx vagy PORTx regiszterbe írunk, de egyetlen bit módosításánál csak a LATx regisztert szabad használni. Legjobb, ha megszokjuk, hogyha a portot olvassuk, akkor PORTx, ha írjuk, akkor LATx, és akkor biztosan nem lesz gond.

Nem biztos, hogy ez a megoldás, de a #define soroknál cseréld ki, hogy az illetékes bitek a LATx regiszterekre mutassanak. Gondolom _RB9 helyett _LATB9, stb.
(#) szilva válasza szilva hozzászólására (») Jan 2, 2008 /
 
PORTB|=mask; //OR mask

Ebben nem vagyok biztos, hogy jól működik, bár igaz, hogy előtte ott van az and-os kimaszkolása a portbiteknek. Tisztábbnak érezném, ha egy belső változóban állítanád elő a kiküldendő tartalmat. Valahogy így gondoltam:

int mask;

mask = ((0x000F & n)<<9) | (PORTB&0xE1FF);
PORTB=mask;
>>
(#) deguss válasza potyo hozzászólására (») Jan 2, 2008 /
 
Potyó, Istenítelek!

Ez eddig nem jutott eszembe, mert simán mentek a dolgok, mikor az egész portot módosítottam (maszkolással), csak nem néztem meg, hogy kifejezetten mi történik, ha az E = 1; utasítás végrehajtódik, (PORTxbits-ként deklarálva).
De tényleg az lehetett, hogy RS-et is "felrántotta", és az LCD adatként értelmezte.

Mindenkinek aki egyszer ilyen helyzetbe kerül:
Jól nézzétek meg, hogy mit is kapcsoltok, PORTA vagy LATA, vagy MIA fenét, mert nem mindegy!

LATEbits.LATE1 -ként már működik! Köszönet. Nekem 200 pontot is megért a segítséged, de csak 50-et tudok adni. Köszönöm!

(#) potyo válasza deguss hozzászólására (») Jan 2, 2008 /
 
Kösz

Mondjuk ugyanez az elv érvényes a 18F sorozatnál is, valószínűleg a fordító ott másként fordította, és azért működött.
(#) histu1985 hozzászólása Jan 2, 2008 /
 
Sziasztok

18f4550 procinál az a portok nem akarnak menni digitális bementnek.
beállítottam pedig digitálisnak, bemenetnek is. Ennek ellenére ha ráadom a magasat, max két bementen meg jelenik, de a többin nem.

AN0- tól AN7 ig tartó lábakról van szó.

Ötlet?

István
(#) potyo válasza histu1985 hozzászólására (») Jan 2, 2008 /
 
Mindkét regisztert beállítottad?

  1. MOVLW 0Fh ; Configure A/D
  2. MOVWF ADCON1 ; for digital inputs
  3. MOVLW 07h ; Configure comparators
  4. MOVWF CMCON ; for digital input
(#) benjami válasza potyo hozzászólására (») Jan 2, 2008 /
 
Ebbe én is belefutottam egyszer, és a legbosszantóbb az volt hogy lépésenként debuggolva jól müködött, csak rendesen futtatva nem (ott ugye volt ideje a kimeneti lábnak átállni).
A LATx-et használva aztán persze jó lett, csak hát addig .....
(#) histu1985 válasza benjami hozzászólására (») Jan 3, 2008 /
 
Hogy is van ez a Latx -es dolog? Mert sajnos nem működik jelenleg.

C-ben igy próbálom:

#define ERZ1 PORTAbits.RA0
#define ERZ2 PORTAbits.RA1
#define ERZ3 PORTAbits.RA2
#define ERZ4 PORTAbits.RA3
#define ERZ5 PORTAbits.RA4
#define ERZ6 PORTAbits.RA5
#define ERZ7 PORTEbits.RE0
#define ERZ8 PORTEbits.RE1
#define ERZ9 PORTEbits.RE2

a portokat itt írjam át lat-ra?
Következő: »»   120 / 1320
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