Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszönöm az infókat. Megoldottam belső oszcival. Egyébként dugdosós próbapanelon volt. És szerintem is kontakt probléma volt. Az MCLR lábat felhúztam 10k-val Vdd-re. De most átkonfigoltam úgy hogy az is I/O port legyen.
Vigyázz, az /MCLR csak bemenet lehet és ekkor is valamely határozott logikai szintre kell húzni, mert előfordulhat, hogy a bemeneten lévő kapacitás programozói feszültség szintre töltődik, de hallottam már olyat is, hogy meg is hibásodott a kontroller.
Idézet: „Basszus dollár jelet raktam.” Na az meg milyen jel? Basszus kulcs felulrol athuzva ketszer?
Erről nem tudtam. Sok szenvedéstől szabadítottál meg. Köszi.
Javaslom olvasd el azt a topicot, mert még több szevedéstőlé szabadítod meg magad! Erről is csak fél ezerszer írtunk eddig...
Sziasztok!
Nézegetem az lcd vezérlést. Van is egy példa progi 16F676-ra. De valmiért nem lépbe a macroba. Igy viszont nem is müködik a dolog. Miért van ez?
Üdv!
Egy olyan problémám lenne hogy dsPIC33F-eknél az UART-nak van egy 4*1 bájtos vevő és küldő FIFO-ja. Ha azt akarom hogy mondjuk küldök egy karaktert gépről és RX interrupton belül vissza is küldöm azt a gépnek, akkor azt küldje vissza, ne csak harmadjára, akkor le kéne tiltanom a FIFO-t vagyis csak 1*1 bájtosra kéne megválasztanom. Erre sajnos nem találtam lehetőséget a datasheet-ben. Esetleg aki már találkozott ilyen problémával, le tudná írni, hogy mit kell ilyenkor tenni, mert teljesen meg vagyok lőve ... A választ előre is kösz!
Szia!
Az UxSTA regiszter URXISEL<1..0> bitjeivel állítsd be, hogy minden karakter vételénék kérjen megszakítást. URXISEL 1..0 = b'00'
beállítottam csak sajnos az a baj, hogy kezdetben csak 0x00-ákat küld vissza. aztán amit először küldtem neki, azt küldi vissza harmadszorra és így tovább.
Szóval végig megy így is a FIFO-n, és csak aztán küldi vissza amikor már megtellt karakterekkel. Idézet: „Az /MCLR bemenethez nem feltétlenül szükséges a C3 és R2, bár elvileg hibát nem okozhat.” Elvileg nem, de gyakorlatilag ez okozta a problémát. Végre sikerült megoldani a problémát. Azt vettem észre, hogy mikor rádugtam a kütyüt az USB csatlakozóra, akkor feljött a hibaüzenet, hogy nem ismerte fel az eszközt. Ha ezután kihúztam és egyből visszadugtam, akkor felismerte az eszközt. Gondoltam, hogy vagy tápkondiknál van probléma, hogy egy tranziens jelenség még egyszer reseteli a kontrollert, vagy a /MCLR láb még resetben tartja, mikor rádugom a portra, közben a PC már elkezdi inicializálni az eszközt. És ez volt a baj. Ezért esett ki a szinkronból az eszközöm. Levettem a kondit a nyákról, és mindjárt megy rendesen. Nem gondoltam, hogy a DIP tok és a SOIC ennyire különbözően viselkedhet ilyen téren. Köszönöm szépen a segítséget!
Ne haragudjatok nagyon siettem amikor írtam, és csak gyors válaszolni akartam. Még egyszer bocs!
Vettem egy PICkit3-at, és az MPLAB ezt írja hogyha csatlakoztatom:
Idézet: „PICkit 3 detected Connecting to PICkit 3... Firmware Suite Version...... 01.26.43 Firmware type......................PIC18F PICkit 3 Connected. PK3Err0045: You must connect to a target device to use PICkit 3.” Mi baja van? Kössem rá a PIC-et? Ha rákötöm, akkor is ugyan ezt írja.
Az MPLAB-ban a "Programmer/Settings" résznél a "Power" fülön bepipáltam a "Power target circuit from PICkit 3" négyzetet, és így már tetszik neki. Sőt, ez után már a PICkit3 saját programja is működik!
Egyébként érdekes hogy nem hajlandó ugyan arról az USB kábelről működni amiről a PICkit2. Nyavalyog hogy neki kevés az USB hub árama. Az elődjének elég volt. Na mindegy, máshova kell dugni és kész.
Szerintetek a két PIC ára miért egyezik meg (chipcad) :
dsPIC30F4011-20I/P - 1180Ft - 20MIPS dsPIC30F4011-30I/P - 1180Ft - 30MIPS Van olyan aki azt mondja, hogy "ha már egyforma az ára, akkor inkább a lassabbat veszem" ? Ebben tuti van valami sunyiság
Szerintem az is lehet, hogy valamelyik már régóta pihen raktáron, a másiknak meg levitték az árát. Van aki célirányosan vásárol és nem érdekli, hogy 10MIPS-et tud nyerni... Bár ez már eléggé off.
Hali!
Tudnátok nekem ajánlani, valami oldalt, ami jól leírja, hogy hogyan tudok pl olyan progit irni asm-ben PIC18F4x -re ami két nyomógom lenyomása között századra pontos időt mér? Illetve kellene valami leírás LCD kezelésről is mert a mért eredményt ki akarom iratni Köszi
HI-TECH C-ben írok pic12 mcu-ra programot, amiben egy NTC által mért hőmérséklet alapján PWM jelet változtatnék.
Lenne 2-3 változóm (pl: maxDuty) amit bárhonnan el szeretnék érni. Bármilyik forrásfájlból és azon belül is bármely függvényből. Hogyan kellene azt a változót deklarálnom? Amúgy egy unsigned char típusú változóról van szó.
LCD kezeléséhez ajánlom ezt az oldalt. Ha a modult használod kijelzőnek, akkor meg nem is kell tudnod nagyon LCD-ül, elég a pic soros adóját megfelelően beállítani és utána az adóregiszterbe beleírni a megjelenítendő betűt/számot.
Egyik forrásfájlban létrehozod egyszerűen unsigned char maxDuty; módon, a többi forrásfájl elején pedig extern unsigned char maxDuty; módon hozod létre. Ezután mindenhol egyszerűen maxDuty néven használod.
Beállítod a CCP1 modult capture módra, majd hozzárendeled a Timer1-et(vagy a Timer3-at), amit beállítasz olyan számlálási frekire az előosztójával(esetleg a Timer1 saját külső oszcijával), ami megfelel a felbontásodnak. A CCP1 megszakítását engedélyezed, majd a bemenet élét a gombodnak megfelelően beállítod. Az első megszakításkor a CCP1 regisztereit elmented, a bemenet megszakítási élét mefordítod, valamint a gomb elengedéséig számolod azt is, hogy hányszor csordúl túl a Timer1, ha a gomb sokáig is le lehet nyomva. A gomb elengedésekor a megszakításban kivonod a CCP1 regiszter elmentett és pillanatnyi tartalmait, és hozzáadod a Timer1 túlcsordulásait is. A kapott érték arányos lesz a gombod lenyomási időtartamával a Timer1 számlálási ütemének felbontásában. A gombra hardveres prellmentesítés kell, ha század másodperces felbontást akarsz.
A mellékelt program egy beérkező impulzus szélességét méri. Nyomógombhoz meg kell cserélni a figyelt élek polaritását (előbb lefutó, majd felfutó).
LCD-re is találsz információkat és mintaprogramokat a honlapomon (itt és itt). Assemblyre is átírhatod a programokat, de én egy percig sem kínlódnék vele.
Szia!
Szerintem ez a kód időnként rosszul számol. Az alacsony szintű megszakítás huzamosabb időre tiltva lehet az USB kiszolgálása miatt. Nézzük a következő eseteket: 1. - CCP1 élet detektál és tárolja a T1 értékét, megszakítás kér. - Még mielőtt a megszakítás érvényre jutna T1 túlcsorul, megszakítás kér. - Most jut érvényre a megszakítás. A CCPR1H:CCPR1L regiszterekben nagy érték van, a tmr1_ov -t pedig növeli a megszakítási rutin. Ekkor hibásan számol... A megszakítás érvényre jutása és a T1IF tesztelése között is idő telik el. A hibás számításhoz elég, ha T1 túlcsordulása bekövetkezik addigra, amíg a CCP1 megszakítás kiszolgálása eljut a T1IF vizsgálatához. 2. - T1 túlcsorul, megszakítás kér. - Még mielőtt a megszakítás érvényre jutna CCP1 élet detektál és tárolja a T1 értékét, megszakítás kér. - Most jut érvényre a megszakítás. A CCPR1H:CCPR1L regiszterekben kicsi érték van, a tmr1_ov -t pedig növeli a megszakítási rutin. Ekkor jól számol...
Köszönöm az észrevételeket!
Szerintem nincs USB forgalom mérés közben, mert az bőven lezajlik a várakozási időben. A mások probléma viszont valós, amin esetleg a mérendő jelhez való "hangolással lehet legkönnyebben segíteni. Az ultrahangos érzékelőm esetében pl. bekapcsolható az 1:4-es Timer1 előosztó. A kb. 17 ms-on túl érkező válasz ugyanis már értelmetlen, a 83 ns-os felbontású időmérés pedig szükségtelen, tehát normális esetben beleférünk a 16 bites Timerbe...
Szia!
Csak egy problámára figyeltem fel, de az programból korrigálható. Ha a T1 túlcsordulási és a CCP1 megszakítása egyszerre jön be, meg kell vizsgálni, hogy a CCPR1H értéke mekkora. - Ha nagy, akkor a CCP1 előbb tárolt, a T1 később fordult át. - Ha kicsi, akkor a T1 előbb fordult át, aztán tárolt a CCP1. Annak a valószínűsége, hogy 256 (esetleg 32768) T1 órajel alatt ne kerüljünk a kiszolgáló rutinba már igen alacsony.
Üdv!
Watt égető kapcsolásait nézegettem, de valamit nem értek. Ebben a kapcsolásban, az mclr lábat össze kell kötni a vdd-vel az áramkörön kívül. Miért nem az áramkörön belül van elhelyezve az ellenállás? A másik kérdésem pedig, hogy ebben a kapcsolásban, pedig az mclr pont, hogy gnd-re van kötve. Most, akkor, hogy is van ez? A választ előre is köszönöm. Üdv.: mate_x
Sziasztok ! Teljes mértékben kezdő vagyok mikrovezérlők területen, de úgy gondoltam picit belekóstolnék a dologba. Találtam egy jónak tűnő leírást
Lenne néhány kérdésem. Először is jó lesz ez nekem ? (programozni régóta tudok, digitális technikát szeretem, gyakorlom, bár inkább csak papíron). Másodjára pedig örülnék egy linknek ahonnan meglehet rendelni, a leírásban szereplő Picstart Plus nevű dolgot, vagy legalább írhatnátok róla például egy árat. Illetve még annyi hogy ajánlották a PICkit 2-t is, nem tudom melyik lenne kézenfekvőbb nekem mint teljesen kezdőnek. Diák létemből adódóan, nincs felesleges 50-100 ezer forintom kezdő felszerelésre, illetve csak belekóstolni szeretnék, lehet hogy nem is igazán az én világom, de eléggé érdekel ! Előre is köszönök minden választ !
Szia!
Már több oldalon, több topokban tárgyaltuk a témát. Most itt összefoglalva: - A MCLR bemenet érzékeny a túlfeszültségre, mivel nincs benne védődióda a Vdd felé a programozó feszültség miatt. - A programozáskor a vezetéken és a láb kapacitásán maradó feszültség veszélyes a kontrollerre. - A lábon maradó töltést el kell vezetni valahová: -- Ha csak programozni szeretnénk a készülékkel, debuggolni nem, akkor a legjobb választás a MCLR földre húzása. Ez megengedi az egyes esetekben egyedül eredményre vezető "Vpp first programming entry" / "Vpp előbbi bekapcsolásával programozási módba lépés" módot is. -- Ha debuggolni is szeretnénk a készülékkel, a föld nem jó, mert engedélyezett MCLR funkcióval a kontroller el sem indul. Ekkor a MCLR tápra húzása az egyedüli út. A "Vpp first programming entry" / "Vpp előbbi bekapcsolásával programozási módba lépés" módnál problémák léphetnek fel. Az az ellenállás a kapcsolás elkészülte után, a tapasztalatok alapján került a rajzra, és azt is szimolizálja, hogy az ellenállás nem a programozó része, inkább magára a pic-re / adapterre / kártyára kell tenni.
Szia!
- A leírás jó, de a 16F84A árából csaknem 3 db 16F628A is kijön, és még sokkaltöbbet tud... - PicstartPlus a ChipCad -tól rendelhető. Nem érdemes, mert drága... - PICKit2 szintén az előbbi helyen vásárolható, itt a fórumon 2 klón leírását is megtalálod...
És hogy miért nem az égetőben kap helyet, azért nem, mert ha az égetőben és a céláramkörön is van egy 10k, akkor az már egyes 5V-os regulátort túlterhelhet, miután a felesleges áramot valahová el kell vezetni, és ez a regulátoron keresztül a föld felé történik. Ezért kell figyelni, hogy ha nincs regulátor a céláramkörben(pl. egy adapter is ilyen áramkörnek tekinthető), akkor nem szabad a Vdd felé húzni az MCLR-t, hanem a test felé kell. Ezeket a megfontolásokat jobb ha megérti az ember, mert magolva megjegyezni, hogy mikor mi a helyes megoldás, nem lehet.
Szóval PICkit 2-vel érdemesebb kezdeni ? ? És ahhoz valami bevált szakirodalom esetleg ?
|
Bejelentkezés
Hirdetés |