Fórum témák
» Több friss téma |
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.
É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.
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:
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.
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.
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:
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:
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.
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.
Egyébként, pontosan erre gondoltam, hogy kontollal fogom lepróbálni, hogy mennyire veszi a bemenetet.
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.
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!)
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
Az MPLAB+PK2 képes a renszert összezavarni, nálam is volt már ilyen néhányszor(XP alatt. W7 óta nem.).
Ü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.
Biztosan azért, mert Windows-ban (ahol a DT "..." szöveget írod az MPLAB-ban, vagy hol) az é karakter kódja 0xE9.
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.
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.
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.
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:
Nem tiszta, hogyan történik a konfigurálás. Vagy csak nagyon béna vagyok?
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.
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.
Az USB modul a PLL-en keresztül kapja az órajelet...
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
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:
Idézet: Nyilván "tisztábban láttad a problémát"... „A fürdőkádban összeállt a kép!” Idézet: Valóban, hiszen a konfigurációs szó nem specifikált bitjei ilyenkor az alapértelmezett állapotba lesznek beállítva. „Gondolom a többi beállítás ilyenkor nem marad USB-re hangolva, és borul az egész.”
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.
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.
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.
Hali
Nem tudom milyen basic-et hasznalsz de itt egy kod az EEPROM irasara es olvasasara:
Igaz en nem hasznalok BASIC-et, de ez a kod a PBP sampleban talalhato Udv Vili |
Bejelentkezés
Hirdetés |