Fórum témák
» Több friss téma |
Sziasztok. Továbbra is hiába nézem, nem jövök rá, hogy miért villog az az istenverte led. Ha a főprogramban bekapcsolom, és a megszakításban ki szeretném kapcsolni akkor is ugyan úgy villog, csak akkor bekapcsolva marad, és világít folyamatosan, amíg nem nyomkodom a távirányítót. Meg tudná mondani valaki, hogy miért?
Idézet: „__CONFIG (DEBUG_ON & LVP_OFF & FCMEN_OFF & IESO_OFF & BOREN_OFF & CPD_OFF & CP_OFF & MCLRE_ON & WDTE_OFF & FOSC_INTRC_NOCLKOUT & BOR4V_BOR21V);” Nem jó gyakorlat a config szóban a DEBUG_ON szerepeltetése. A ICD, PICKit -tell való nyomkövetéshez Debug, az önnálló működéshez Release módú fordítás kell.
Az előző hozzászólásom inkább Speeddump -nak szólt...
Működik végre, csak azt kéne megoldanom, hogy kicsit stabilabb legyen, mert most nem minden gombnyomásra reagál ugyan úgy, a jelsorozat hosszából adódóan gondolom.
Erre más ötletem nincs, csak késleltetés a megszakításba (jujj), hogy addig ne térjen vissza, amíg vissza nem áll a bemenet.
Sziasztok! PIC programozásban jártas kollegát keresek egy-egy kisebb program elkészítéséhez... Most sokan azt kérditek, hogy miért nem én írom meg ezeket? Áramkörök tervezését és kivitelezését megcsinálom (elektronikai műszerész a szakmám), de programozáshoz láma vagyok. Jó pár irodalmat elolvastam, példákkal is teletűzdelve, de én már pár led villogtatásánál is simán elakadtam. Alap fogalmak magyarázatával is hadilábon állok (soha nem tanultam programnyelveket, számítógépeket hardwer szinten javítok és szoftver szinten használok, már több mint 25 éve), így maradt az, hogy "nem veszek egy tehenet csak azért, mert tejet szeretnék inni". Van prog-matos ismerősöm is, aki pc-re cél orientált programrendszereket ír, de mikor kiejtem a PIC programozás szavakat, csak a száját húzza! Biztosan boldogulnék, ha valaki segítene megértenem ezt az egészet, de mivel ez szinte kivitelezhetetlen, ezért így lenne egyszerűbb és gyorsabb megoldani a feladatot.
Szóval... Ha valaki tudna segíteni egy-két egyszerű feladaton át célt érni, nagyon örülnék neki! Megköszönve figyelmeteket... Maradok a témával kapcsolatos fórumok további lelkes, de kicsit sikertelen olvasója... Üdv!
Ajanlanam a konyvespolcomat. Talalsz alapveto konyveket, mintapeldakat, gyakorlo panelokat, es meg sokminden mast is. Be kell szerezni valami programozo eszkozt, es csinalni egy demo panelt. A talalhato mintapeldakkal el lehet kezdeni gyakorolni akar HW nelkul is a MLAB SIM segitsegevel. A programozot tudnam ajanlani a PK2 gyarit, vagy utanepitettet. Itt a forumon talalsz kulon temat errol.
Sziasztok!
Egy dvd olvasóból kiszedet 3 kivezetésű motort lehet pic-el vezérelni??
Köszönöm a lelkesítő és segítőkész leveleket! Hogy mindenki értse, hogy mit is agyaltam ki, ide teszek egy linket, amiből gyorsan rá lehet érezni a lényegre. Üdv Mindenkinek! Link: https://rapidshare.com/files/3582815569/Jammer.zip
Idézet: „Egy dvd olvasóból kiszedet 3 kivezetésű motort lehet pic-el vezérelni??” Igen, lehet. Nezd at a "HDD motor vezerlese" c. topicot.
Köszönöm a segítséget... Máris megyek és mazsolázok a könyvespolcodon! Égetőt már elkészítettem s működik is! Most jön a tudomány... Üdv! fatti
Nézegettem ezt a CCP modult, de arra nem jöttem rá, hogyan lehet kikapcsolni, sőt, a blokkdiagramm szerint nem is lehet kikapcsolni.
Szóval ha mondjuk az RB3-ra van beállítva a CCP2MX konfigbit (vagyis a CCP2 láb), és beállítom a LATB3-at 1-be, majd 0-ba, akkor az egy fel-le futó élet jelent az RB3-as lábon, ami megszakítást generálhat. Tehát arra jutottam hogy ki kell kapcsolni a CCP megszakítást. Viszont mivel nem használok megszakítást a programban, ezért kikapcsolom az összes megszakítást (INTCON/GIE).
Nem írod, milyen típusú a kontroller. A 18F2550 CCP moduljainak leírásából:
Idézet: „bit 3-0 CCPxM3:CCPxM0: CCPx Module Mode Select bits 0000 = Capture/Compare/PWM disabled (resets CCPx module)”
Igen, 18F2550-ről van szó.
Én vaksi, pedig néztem ezt a regisztert, köszi, hogy írtál!
Sziasztok,
A topic fejlécében van a következő sor: "- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre." Értem az okát, de nem lehet ugyanezt elérni a __CONFIG (MCLRE_ON) sorral? Ez ha jól értem az IC-ben belülről Vdd-re húzza az MCLR lábat. Köszönöm
Szia!
Úgy van, ahogy mondod, de ha kívülről húzod fel Vdd-re, akkor lehetőség van gnd-re húzni is, ami reseteli a kontrollert.
Aha! Na most már értem. Ez a jelentéktelen apróság eddig elkerülte a figyelmemet
![]() Idézet: „...de nem lehet ugyanezt elérni a __CONFIG (MCLRE_ON) sorral...” - A config szóban a MCLRE_OFF letiltja a külső reset vonalat. Ez az, amit szeretnél. A MCLRE_ON a külső MCLR lábhoz a reset funkciót rendeli. - A MCLR lábat nem csak azért kell ellenállással a Vdd re húzni, hogy alacsony szintet tudjunk rá adni. Ha a külső reset le van tiltva, akkor is kell a felhúzó ellenállás. A MCLR lábon ugyanis nincs belső, a Vdd -re menő védődióda (hiszen a Vdd -nél magasabb Vpp feszültséget is el kell viselnie). A dióda hiánya érzékenyebbé teszi a bemenetet a zavarokra. A lábon megjelenő töltés az ellenállás hiányában nem tud eltávozni, felgyülemlik, a kontrollert programozási módba viheti, szélsőséges esetben a bemenetet tönkreteheti.
Sziasztok!
Egy furcsa problémával állok szemben, és már hetek óta nem tudom megoldani. Pic18f45k20 mikrovezérlőt kötöttem össze hardveres spi buszon néhány perifériával (sram, flash, lcd). Ezekkel külön-külön tudok kommunikálni, de ha mind be van kötve egyszerre, akkor a pic hibásan olvas tőlük adatot. Először arra gondoltam, hogy érintkezési hiba, de kész nyákon is tapasztaltam a hibát. Több mikrovezérlővel is próbáltam (pic18f46k22, pic18f24k22, pic18f45k20) A ic-k mindig megkapják a nekik szánt adatokat, és válaszolnak is rá. Olyan mint ha a pic 'si' lábát zavarná valami. Mi okozhatja a problémát?
Igen, lehet, hogy elírtam (még zöldfülű vagyok). Kösz a részletes felhomályosítást!
Milyen nyelven programozod? Forditok lehetnek ludasok
Ha lassitasz a sebessegen, javul a dolog? Biztos, hogy a jo adatokat kapjak meg a periferiak? Hova irsz bit/byte muveletnel? PORT vagy LAT regiszterbe?
Szia!
- Ha belső MSSI modult használod: Az SDI bemenet ST típusú 0.8*Vdd minimális magas szinttel. Kialakul ez a feszültségszint? - Ha programozottan vezérled: Melyik kivezetés az SDI? Milyen típusú azon a lábon a bemenet? Ha itt is ST, akkor a 0.8*Vdd minimális magas szint itt is követelmény. Ha a Vdd kisebb, mint 2.4V, akkor 0.9*Vdd lesz mindkét esetben a minimális magas szint.
Járt már valaki úgy, hogy a PIC külső oszciról nem akart menni?
SMD 18F2550 nem akar menni, csak belső oszciról. Külső oszciról (HS, XT, +PLL...) elindul, aztán randomba megáll. Ugyanaz az áramkör és program próbapanelon tökéletesen megy egy DIP tokos PIC-kel. Bár kapott hideget-meleget, lehet az a baja.
Jó lenne ismerni, hogy mekkora a tápfesz és a kvarc, illetve milyen frekit akarsz beállítani. Az LVP ki van kapcsolva? MCLR fel van húzva?
Tápfesz 5V, kvarc 8MHz, illetve 4MHz-en is ugyanazt csinálja, LVP ki van kapcsolva, MCLR fel van húzva.
Tulajdonképpen nem feltétlenül a hibára vagyok kíváncsi (főleg hogy valószínűleg nincs hiba), mert szerintem a PIC döglődik, hanem hogy járt már így valaki.
Lenne még egy kérdésem.
Van egy PIC, meg egy LCD kijelző. Tanácsos-e a PIC lábak és az LCD lábak közé rakni egy pár száz (220-330) ohmos ellenállást? Sokan direktbe kötik össze, de pár helyen láttam, hogy raknak ellenállást, gondolom áramkorlátozás miatt, ha valami baj lenne, ne okozzon nagyobb kárt az áram.
Sziasztok!
Asm-ben programozom, és a pic hardveres ssp modulját használom. A pic 16MHz-ről jár, az spi órajel osztója 4-re van állítva, de nagyobb osztóval is ez a helyzet. A perifériáknak bírniuk kell (sram: 20MHz, flash 75MHz maximum órajelet tud adatlap szerint). Olvasás után a LATB-be írom az eredményt. Most két egyforma sram (23k256) és egy w25x64 flash memória van bekötve. A programom a következőket csinálja: - Inicializálja az első sram-ot. - A legelső címre ír egy bájtot (b'10101010'). - Visszaolvassa a beírt bájtot, és kiírja portb-re (latb). - Kis várakozás után ugyan ezt csinálja a második sram-al is, csak ide (b'01010101')-t ír - Végül kiolvassa a flash legelső bájtját ami b'01000100'. Ez idáig stabilan működik, viszont ha rákötöm az lcd-t is, akkor már a flash olvasásakor b'00000000'-t, b'00010001'-t, vagy b'00000011'-t kapok. Van, amikor már a sramoktól is mást olvas. Itt is van vagy háromféle variáció, ami b'10101010' helyett jelenik meg a ledeken. Mivel az lcd-t csak írni lehet, csak 'sclk' és 'si' kivezetései vannak (tehát a pic 'si' lábához nem kapcsolódik). A kijelzőhöz még nem szól a program, a chip select lábát H-n tartja, tehát ez nem zavarhatna bele a kommunikációba (spi buszos ez is). Ha vissza lekötöm az áramkörről az lcd-t újra stabilan működik mind a három ic. A kijelző működőképes, ugyan ezekkel a beállításokkal szépen elindul. Ha az lcd helyett mást perifériát (vagy néha elég csak két üres vezeték) kötök be az is ugyan úgy belezavar az előző három ic olvasásába. Amikor pic18f46k22/24k22 párossal próbálkoztam, ott már a második ic bekötésekor is jelentkezett ugyan ez a hiba. Az egész áramkör 3.3V-ról jár, próbáltam pickit2-ről, elem és stab.ic-ről, és labortápról is, semmi válltozást nem tapasztaltam a működésben. Hp41C: Megpróbálom megmérni a feszültségszintet. Köszönöm a válaszaitokat!
Most átírtam az spi órajel osztóját 64-re, azóta nem csinál semmit az áramkör.
Visszaírtam 4-re, de úgy sem. Ezt nem hiszem el... Csatolom a programot.
Mivel programozod? Talán PICKit2 -vel? Az egyben egy 3 csatornás logikai analizátor is, amivel fel lehetne venni az SPI olvasás jelalakját is...
|
Bejelentkezés
Hirdetés |