Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   43 / 1207
(#) potyo válasza mdemcsik hozzászólására (») Jan 14, 2010 /
 
Sebesség jeladóról szerintem nem tud olyan gyorsan jönni a jel, hogy a tranzisztor ne kapcsoljon ki két jel között.
(#) mdemcsik válasza potyo hozzászólására (») Jan 14, 2010 /
 
Én is az hittem!
De sajna nem így van, kb 3 mm fordulásra ad egy jelet!!! Nincs sajna frekimérőm de szivesen megmérném, vagy egy jelszámolóval, hogy egy fordulatra mennyi jelet ad, de elég sokat!
Próbáltam 4n25el, de egy bizonyos fordulat felett már folyamatosan nyitva volt.
(#) Hp41C válasza mdemcsik hozzászólására (») Jan 15, 2010 /
 
Szia!

Próbáld meg 6N136-tal...

Szia
(#) pajti2 válasza mdemcsik hozzászólására (») Jan 15, 2010 /
 
Kihagytál egy ellenállást, amit még javasoltam: a pic és a tranzisztor collectora közé.

Remélem nem egy nagyobb programot futtatsz egészben, aminek csak beleszúrtál pár apró részletet a kellős közepébe. Ha azt az RC3-at bárhol kimenetnek programozod magas jellel, és meghúz a tranzisztor, kinyírhatod a pic-edet.
:bummafejbe:
(#) pajti2 válasza mdemcsik hozzászólására (») Jan 15, 2010 /
 
Nem tudom mekkora a teljes kerülete annak a tengelynek, és milyen gyorsan forog, de akármilyen jelet is produkál a kimeneten, az a tranzisztor olyan 4-500 kHz-ig tuti működni képes neked C üzemben, ergo ilyen jelet még simán megmérhetnél.

Ha oszcilloszkóp nincs is kéznél, de van egy PK2-d, a jel analizátora mérni tud egész türhető sebességgel is. Szerintem elég lesz az is. Valószínűbb, hogy valamit elkötöttél, mint hogy mechanika tudjon neked MHz-es jeleket produkálni.
(#) mdemcsik válasza pajti2 hozzászólására (») Jan 15, 2010 /
 
Beteszem oda is az ellenállást.
Nem szurkáltam sorokat, a program része, hogy számolja az impulzusok között eltelt időt. Az RC3 a pic18f442n a CCP1 láb amit kimenetre állítva használ a CCP modul capture üzemmód esetén. Ide érkezik invertálva a tranyó kollektora. Az invert jel nem gond. Tegnap összeraktam és ki is próbáltam, működött, de azért még egy ellenállást oda beszúrok. A pk2t még nem kötöttem rá, de majd megnézem azzal is.
(#) pajti2 válasza mdemcsik hozzászólására (») Jan 15, 2010 / 1
 
Bizonyára csak elírtad: a CCP a 18f442-n az RC1 és 2 lábakat használja bemenetként. Az RC3-al nem tudom mit akarsz ("RC3/SCK/SCL").

Ezt az egészet amúgy sem egyben kellene, mert így nem lesz meg egy eldugott hiba. Rakj egy indikátor ledet arra a pic-re valahova (pld C4-re) soros 1..2K-val +táp felé, program starton oltsd ki (kimeneti H), aztán csak ciklusban figyeld a bemeneti lábat alacsonyra. Akkor kigyújtod a ledet, és ledögleszted a programot.

Pld:
  1. LATbits.LATC4= 1; //Indikátor led.
  2. TRISbits.TRISC4= 0;
  3. TRISbits.TRISC3= 1; //Külső tranzisztor kollektora.
  4. while(1) {
  5.   if (!PORTbits.PORTC3) break;
  6.   continue;}
  7. LATbits.LATC4= 0;
  8. while(1);


Ha felvillant a led, akkor legalább a kötögetéseidet nem szúrtad el nagyon. Ugyanezt futtasd le magas szintre is, hogy lásd, nincsen "beragadva" a bemenet:
  1. if (PORTbits.PORTC3) break;


Ha így is felvillant a led, akkor lehet nekiesni megnézni, miért is rendetlenkedik a CCP. Amíg a bemenet működésében sem vagy biztos, addig a CCP-re rászállni még korai lesz.
(#) mdemcsik válasza pajti2 hozzászólására (») Jan 15, 2010 /
 
Valóban elírtam, RC2 természetesen. A CCPvel nincs gondom, sem kimenettel sem bemenettel, azért ezen már rég túl vagyok
Csupán csak jel-illesztési gondom van, de most kipróbálom a tranyós megoldást, meg egy 6n137 optosat is.
Közben pedig kimértem, hogy egy 61K körüli ellenállás pont lég ahhoz, hogy ne zavarjam össze a műszerfal kilométer óráját. Egyéként pedig fokozat kijelzőt csinálok motorra, a kerék (sebesség) jeladó és a fordulatszám jeladó segítségével. Mindenem működik, csak ez volt az utolsó problémám.
(#) mdemcsik válasza pajti2 hozzászólására (») Jan 15, 2010 /
 
Egyébként, pontosan erre gondoltam, hogy kontollal fogom lepróbálni, hogy mennyire veszi a bemenetet.
(#) zsoltee0001 hozzászólása Jan 20, 2010 /
 
Sziasztok

El tud e szálni PIC attól, ha rosszul lett megírva a program, és a bemenet felcserélődött a kimenettel?
Tudom, hogy képtelenség, de az előbb felprogramoztam a PIC-et a PK2-vel sikeresen (de a rossz programmal), na azóta nem ismeri föl a PIC-t.
(#) icserny válasza zsoltee0001 hozzászólására (») Jan 20, 2010 /
 
Lehet, hogy ez az az eset, amikor a PICkit2 kezelőprogramjában a "Tools-> use VPP first program entry" menüpontot kell megpróbálni? (feltételezem, hogy a PICkit2 adja programozáskor a Vdd-t is!)
(#) zsoltee0001 válasza icserny hozzászólására (») Jan 21, 2010 /
 
Szia
Én úgy gondolom, hogy inkább X aktákba való esetről van szó.
Ma reggel kipróbáltam és tökéletesen működik
Tegnap du. se a PK2, se a Lpt_mini nem vitte.
Viccet félretéve a számítógépemmel lesz valami gond inkább. Másnál is volt már ilyen eset?
Üdv
(#) watt válasza zsoltee0001 hozzászólására (») Jan 21, 2010 /
 
Az MPLAB+PK2 képes a renszert összezavarni, nálam is volt már ilyen néhányszor(XP alatt. W7 óta nem.).
(#) Sendi hozzászólása Jan 22, 2010 /
 
Üdv Mindenkinek.

Építettem egy pontmátrixos kijelzőt.
Működik is rendesen, amíg nem akarom az ékezetes betűket is használni.

A karaktertáblában jól tárolja el a ASCII kódját (hexában), de a beírt szövegnél a visszaolvasáskor (DT "......") már hibás kódot ad vissza.
Míg az ASCII 127-re azt olvassa,hogy 0x7F (D'127'), addig a ASCII 130-ra (é) az olvassa hogy 0xE9 (D'233')

Miért van ez?
Köszönettel.

(#) icserny válasza Sendi hozzászólására (») Jan 22, 2010 /
 
Biztosan azért, mert Windows-ban (ahol a DT "..." szöveget írod az MPLAB-ban, vagy hol) az é karakter kódja 0xE9.
(#) Sendi válasza icserny hozzászólására (») Jan 23, 2010 /
 
Helló Icserny.

OK, MPLAB-t használok.
És akkor mi a megoldás, hogy be tudjak vinni ékezetes karaktert is a "DT" után?


Köszönettel.
(#) Hp41C válasza Sendi hozzászólására (») Jan 23, 2010 /
 
Szia!

DT "Sz", 0x130, "p napot"

Szia
(#) icserny válasza Sendi hozzászólására (») Jan 23, 2010 /
 
Számtalan lehetőség van: pl. használj szabványos kódtáblát a kijelződhöz (ISO8859-2 vagy Win1250, esetleg UTF-8), vagy fordítás előtt konvertáld a forráskódot a megfelelő kódtáblához (DOS?), vagy hexadecimális kóddal írd be a nem ASCII tartományba eső karaktereket.
(#) Sendi válasza icserny hozzászólására (») Jan 23, 2010 /
 
Helló Icserny.

Köszönöm a válaszodat.
Ez egy pontmátrixos kijelző.
Az utolsó lehetőséget az megértettem, a többit csak sejtem.
De így is segítettél.

Köszönettel.
(#) Mezoas hozzászólása Jan 24, 2010 /
 
PICCOLO projecthez lenne kérdésem, főleg icsernyhez, de más is segíthet. Az ügyetlenkedéseket leszámítva könnyen munkára bírtam a 18F14K50-et. Viszont a konfigurálással vannak gondjaim. A PIC 16 MHz-en fut (4MIPS), ami a belső oszcillátor, de én a 12 MHz-es külső kvarcot szeretném használni. Szoftveresen nem tudom átírni, az bonyolult. Ami furcsa, hogy a bootloader.hex-szel eleve olyan config word íródik be, hogy HS oscillator. Vagy az nem íródik be??
Az assembly kód elején elhelyeztem egy ilyet:
  1. config  FOSC = HS
Majd HIDBootloader.exe - Allow Config. W. Programming pipa be és programozás: erasing... please wait... és ezt nézhetem percekig. Majd bontom az USB kapcsolatot, és elbúcsúzhatok a PIC-től egy kis időre, mert nem ismeri fel többet a PC, ha ismét csatlakoztatom az USB kábelt. Bootloader ismételt betöltése: újra működik.
Nem tiszta, hogyan történik a konfigurálás. Vagy csak nagyon béna vagyok?

(#) Mezoas válasza Mezoas hozzászólására (») Jan 24, 2010 /
 
Jelentem, a helyes válasz a kérdésre: "nagyon béna vagyok".
A fürdőkádban összeállt a kép! Dolgozott a 12 MHz-es kvarc, még szép, hogy dolgozott! A PLL-el együtt. Azért hittem, hogy csak 16 MHz, mert a LED villogtató delay rutint nem gondoltam át elég alaposan, és rosszul kalkuláltam a periódusidőt a konstansokból. Így éppen a 48 MHz harmadát kaptam a stopperes mérésekből visszaszámolva, amit rögtön azonosítottam a belső oszcillátor frekvenciájával.
Most nem szórakoztam saját delay-jel, generáltam egy 0,5 s-ost 48 MHz-re, és lám, tényleg kijött az ~1 Hz.

Az USB-s kifagyásos jelenséghez pedig annyit, hogy lehet nem elég csak az oszcillátort beállítani. Gondolom a többi beállítás ilyenkor nem marad USB-re hangolva, és borul az egész. Ezzel még próbálkozok egy kicsit.
(#) Mezoas válasza Mezoas hozzászólására (») Jan 25, 2010 /
 
Friss blogbejegyzés:
Ha úgy programozom be a bootloadert, hogy a PLL-t letiltom, akkor nem ismeri fel a WinXP a PIC-et USB-n (???).
Kipróbáltam úgy is, hogy bemásoltam a kód elejére icserny #576562-számú hozzászólásából az összes tételt, azzal a különbséggel, hogy PLL=OFF. USB megint kampec betöltéskor. Sehogy sem jó, a PLL kell.
Akkor a kódban PLL on, BORV=1,9V-ra le, valami mégis változzon. Eredmény: az USB nem romlik el, de hibát jelez betöltéskor. Ismét elővettem a PICkit2-t, és a bootloader beégetésekor állítottam be a BORV bitjeit. Végre sikerült! Áttörést értem el, módosítottam a konfigurációt!

Olyat nem is lehet akkor bootloader mellett, hogy kikapcsolom a PLL-t, mondjuk a programmal? Vagy lehet, csak akkor viszlát USB kapcsolat.
(#) watt válasza Mezoas hozzászólására (») Jan 25, 2010 /
 
Az USB modul a PLL-en keresztül kapja az órajelet...
(#) Hp41C válasza Mezoas hozzászólására (») Jan 25, 2010 /
 
Szia!

Az USB kapcsolat sebességét - Low, High, Full - több dolog is meghatározza:
- A D- és D+ jelek passzív DC szintje: Az USB Hub-nál mind a két jel földre van húzva 15k-val. Az eszköz velemelyiket - esetleg egyiket sem vagy mind a kettőt a táp fele húzza 1.5K-val. Ld.: USB 2.0 szabvány.
- Az órajelnek ehhez a sebességhez kell igazodnia: Adatlap 2.4 (low speed) és 2.5 (high speed) táblázatai.

Szia
(#) icserny válasza Mezoas hozzászólására (») Jan 25, 2010 /
 
A bootloaderrel együtt természetesen a konfigurációs bitek egy bizonyos kombinációja is beégetésre kerül. A bootloader forráskódjából (is) ki lehet lesni, hogy mi az alapbeállítás. Nekem még nem volt rá szükségem, hogy hozzányúljak. Éppen ezért a példaprogramokban nem használok konfigurációs beállítást.

A Full-speed USB működéséhez be kell tartani az időzítéseket, emiatt az USB interface a 96 MHz-es PLL frekvencia felével, 48 MHz-en kell, hogy ketyegjen. A CPU elvileg mehetne lassabban is, de értelmét sem látom, meg a gyári demóprogramok (USB keretrendszer) sem úgy készültek, ezért a 48 MHz-es CPU frekvencia használata ajánlott, ez van a HID bootloaderben is konfigurálva:

  1. #pragma config CPUDIV = NOCLKDIV
  2.         #pragma config USBDIV = OFF
  3.         #pragma config FOSC   = HS
  4.         #pragma config PLLEN  = ON

(#) icserny válasza Mezoas hozzászólására (») Jan 25, 2010 /
 
Idézet:
„A fürdőkádban összeállt a kép!”
Nyilván "tisztábban láttad a problémát"...
Idézet:
„Gondolom a többi beállítás ilyenkor nem marad USB-re hangolva, és borul az egész.”
Valóban, hiszen a konfigurációs szó nem specifikált bitjei ilyenkor az alapértelmezett állapotba lesznek beállítva.
(#) Mezoas hozzászólása Feb 1, 2010 /
 
Köszönöm mindenkinek a választ így utólag is!
Icsernynek szeretnék még külön köszönetet nyilvánítani, hogy összerakta a PICCOLO projektet. Az este megbirkóztam a megszakításokkal, szóval azt a részt várom még.
(#) dkarcsi73 hozzászólása Feb 1, 2010 /
 
Sziasztok Mindenki! A következőt szeretném kérdezni a hozzáértőktől.: adva vagyon egy 16F628-as PIC, amit Picbasicban felprogramoztam egy garázsajtó mozgató ciklusra, ami abból áll hogy: gomb megnyom:indul, időt visszaszámol:megáll, gombmegyom:becsuk. Amennyiben nyitás vagy zárás közben impulzust adok akkor megáll és ismételt gombnyomásra iránytvált. A program eddig van készen. Ki szeretném egésziteni oly módon, hogy a panelon elhelyezett gombokkal a nyitási-zárási időt tudjam léptetni. Még ezt is meg tudom oldani !
A kérdésem az lenne, hogy hogyan tudom EEPROM-ba irni az általam gombokkal beállitott időt, hogy áramszünet esetén azt visszaolvassa. Mellékeltem a programot.

garage.bas
    
(#) bodgabo válasza dkarcsi73 hozzászólására (») Feb 1, 2010 /
 
Jól értelmezem hogy a nyitási folyamat (amíg kinyílik a kapu) van időzítve? Miért nem egy végállás kapcsolóval figyeled, hogy mikor nyílik ki teljesen? Vagy lényeges hogy részlegesen kinyílt állapotban is megálljon és ezt szeretnéd az időzítéssel állítani?
Picbasic-ül nem tudok, de -elvileg- beilleszthetők asm rutinok amik az adatlapban figyelnek.
(#) vilmosd válasza dkarcsi73 hozzászólására (») Feb 1, 2010 /
 
Hali
Nem tudom milyen basic-et hasznalsz de itt egy kod az EEPROM irasara es olvasasara:
  1. ' EEPROM, READ and WRITE Commands
  2. '
  3. ' Demonstate commands for EEPROM. Works on targets with data EE only!!!
  4. ' Initialized address 0..3 and 8. Writes 10..63.
  5.  
  6.  
  7.         Include "modedefs.bas"          ' Include serial modes
  8.  
  9. SO      con     0                       ' Define serial output pin
  10. B0      var     byte
  11. B1      var     byte
  12. B2      var     byte
  13.  
  14. EEPROM  ["wxyz"]                        ' EEPROM[0..3] = 119..122
  15. EEPROM  8,[100]                         ' EEPROM[8] = 100
  16.  
  17. loop:   B0 = 63                         ' Set Size of EEPROM
  18.  
  19.         For B1 = 10 To B0               ' Check WRITE Command
  20.                 B2 = B1 + 100           ' EEPROM[10..63] = 110..163
  21.                Write B1,B2
  22.         Next B1
  23.  
  24.         For B1 = 0 To B0                ' Check READ Command
  25.                 Read B1,B2              ' Dump EEPROM Contents
  26.                Serout SO,N2400,[#B2," "]
  27.         Next B1
  28.        Serout SO,N2400,[10,10]         ' Skip 2 Lines
  29.  
  30.         Goto loop                       ' Forever

Igaz en nem hasznalok BASIC-et, de ez a kod a PBP sampleban talalhato
Udv Vili
Következő: »»   43 / 1207
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