Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Azt még megakarom kérdezni, hogy hogyan lehet kinyírni a PIC-et? Mit ne csináljak majd? Mire figyeljek?
I az ipari (industrial) hőmérséklettartomány,
SP a keskeny DIP (dkinny DIP) tokozás. Az A jelzés mindezek előtt (a kötőjel előtt) van, mert az a típusszám része.
Ezt épp potyonak mondod el? Van nem neki akartál válaszolni?
Na akkor térjünk vissza a kérdésemre, mert látom az Fosc/4 megoldódott.
Hogy is van az a BRA és GOTO? Hogyan szervezed meg a két megszakítás belépési pontot és hol állítod be, hogy prioritásos legyen, vagy ne? Aki megmondja lelövöm! :violent: Idézet: „Hogy is van az a BRA és GOTO?” A BRA egy szavas, a GOTO pedig két szavas. A BRA-val legfeljebb 1024 utasítást ugorhatunk előre vagy hátra. A GOTO-val pedig sokkal többet. Tehát a GOTO jobb, mert nagyobbat tud ugrani. De akkor miért van mégis BRA, ha a GOTO jobb? Idézet: „Hogyan szervezed meg a két megszakítás belépési pontot és hol állítod be, hogy prioritásos legyen, vagy ne?” org 0x008 után írom a magasabb prioritású megszakítást, az org 0x018 után pedig az alacsonyabbat. Ha nem akarok prioritást beállítani, akkor ezt írom:
Ezt így csináltam most is, és működik rendesen. Most megszakításból villogtatok épp egy LED-et.
Sziasztok!
Egy C-s kérdésem lenne. Szeretnék megépíteni egy műszert amit a neten találtam, de egy-két dolgot módosítani szeretnék a szoftverében. C-ben írta a szerző, elérhetővé tette a forráskódot és a HEX-et is. Azt írja, Hi-Tech PICC-el fordította a kódot. Itt jön az én gondom. Nem vagyok pontosan tisztában a dolog menetével. Van egy csomó fájl, nem tudom melyiket kell bevonnom a projectbe, melyiket nem. Próbaképp mindet betettem, de fordításkor hibák sorozatát küldte a Hi-Tech PICC. Biztos nem jól csináltam valamit. MPLAB alá telepítettem a Hi-Tech PICC-et, majd az MPLAB project varázslójával csináltam egy új projectet az összes fájl bevonásával. A C kódban módosítottam amit akartam, majd fordítás. Nem sikerült. A fő gondja az, hogy néhány C-s utasítást nem ismer fel. Próbáltam az eredeti C fájl-al is (hátha én rontottam el valamit a belenyúláskor), úgy sem jó. Mellékelem az eredeti forráskódokat. Valaki elmondaná röviden, hogyan kellene csinálni, hogy le lehessen fordítani ? Hozzáteszem, hogy kezdő vagyok C-ben. Meg assemblyben is majdnem . Köszönök minden segíséget. Üdv: Laci. Idézet: „De akkor miért van mégis BRA, ha a GOTO jobb?” Jobb? Mindig az a jobb, ami a célnak megfelel. Ha nem kell messzire ugrani, elég a BRA, fele annyi helyet foglal, és olyan szerkezetekben is jól működik, amit te szeretnél. Tehát ott jobb a BRA! Idézet: „Ezt így csináltam most is, és működik rendesen. Most megszakításból villogtatok épp egy LED-et.” Ezt félig jól csináltad, mert ha nem kell prioritásos megszakítás, akkor ki kell kapcsolni(akkor is ki kell, ha netán alapból ki van, mert akkor lehetsz biztos benne.). Ha kikapcsolod, akkor biztos, hogy nem lép a 0x18-ra egy megszakítás sem, hanem marad a 0x08-as cím egyedül. Ezzel némi memóriát spórolsz és egyszerűsödik a kód is. Idézet: „Tehát ott jobb a BRA!” Foleg ha 38 D a holgy aki viseli... (bocs, nem birtam kihagyni )
Sziasztok!
Problémába ütköztem a programozói lábak felhasználásával az áramkörben. Addig világos, hogy le kell választani az áramkört egy ellenállással a programozói lábról, de az nem teljesen világos, hogy így is lehet-e használni ki- és bemenetként is. A másik probléma, hogy az MCLR lábat nem elég leválasztani, még fel is kell húzni tápra. Az elgondolásom szerint megrajzoltam a sémát, legyetek szívesek ránézni, hogy működőképes-e. MCLR-t kimenetnek szeretném használni, PGD-t és PGC-t pedig kimenetnek.
Szia!
Lehet használni a portlábakat ki/bemenetként egyaránt. Az ellenállással való leválasztás azért kell, hogy a periférián levő áramköröket és a programozót is megvédjük az esetleges túláramtól. Az MCLR lábat viszont nem tudod kimenetként használni, csak bemenetként használható. Felhúzni pedig csak akkor szükséges, ha engedélyezve van az MCLR funkció, vagy open-draines a lábat meghajtó fokozat kimenete. Üdv.
En meg annyit fuznek hozza, hogy hidegito kondikat ne felejts el betenni a tap es a fold koze minden IC-hez (bele ertve a PIC-et is...), meghozza az IC labaihoz olyan kozel amilyen kozel csak lehet. 100nF keramia-t szokas bele pakolgatni.
UI: Ja es meg valami: A DIP kapcsolo-t valosznuleg be tudod egyetlen anaog labbal is olvasni ha ugyesen rakod ossze az ellenallas halozatot... es akkor felszabaditasz egy csomo labat...
El_Pinyo már írta, hogy az MCLR csak bemenet lehet, ezt fontosnak tartottam én is kiemelni, valamint a kommunikációs vonalakba 10k-t betenni nem túl szerencsés. Oda akkora ellenállás kell, amekkora nem zavarja a jelet, és még a programozó kimenetét sem teszi tönkre. Én olyan 330ohm körülire saccolnék, de lehet, hogy 470,vagy 1k lesz a jó. Ha egyik sem, akkor jumper!
Trudnai mester szavait is fogadd meg, már a rajzról sem szabad lehagyni a hidegítő kondikat! Az ötlet, az analog megoldásról pedig megfogadandó, miután kellene még egy láb az MCLR helyett!
Köszönöm az információkat! Szóval akkor lényegében a rajzon szereplő megoldás használható kisebb ellenállásokkal. A rajz még elég kezdetleges, kondenzátorok nem fognak kimaradni, csak nem az volt az elsődleges, hogy berajzoljam.
Idézet: „Szóval akkor lényegében a rajzon szereplő megoldás használható kisebb ellenállásokkal.” Ha az ICSP vonalak leválasztását kérded, akkor igen, egyébként a rajz nem működik a jelenlegi formájában, de erről írtunk. Nekem a kondik az elsők!
Igen, persze, mert az MCLR-t kimenetként használtam volna, amit csak bemenetként lehet, viszont ez meg nem alkalmas megszakítás generálására. Ezzel kapcsolatban jól értelmeztem a 16f616 katalógusát, hogy az A port lábain külső változás hatására alkalmas megszakítani, vagy erre csak az INT láb jó? Ledet hogy tudok meghajtani az MCLR-ről, hogy le is legyen választva a programozáshoz?
írod:
Idézet: „Igen, persze, mert az MCLR-t kimenetként használtam volna, amit csak bemenetként lehet ” erre: Idézet: „Ledet hogy tudok meghajtani az MCLR-ről, hogy le is legyen választva a programozáshoz?” Nem értelek! Miért akarod, hogy megszakítással működjön, nem elég, ha észreveszed, hogy a kapcsolót átkapcsoltad? Vagy nem az lesz rajta? Ha nem akkor mi?
Jah, kicsit szórakozott vagyok.. Persze, hogy nem lehet LED-et hajtani róla...
Az A port használható elvileg megszakításra is, a kapcsolók pedig a C portra kerültek. Azt akarom, hogy ha érkezik egy 0 szintű jel, akkor szakítson meg, addig pedig sleep üzemmódban legyen a PIC.
Ezt a klónt építette már meg valaki, jól működik?
Bővebben: Link
Igen sokan megépítették(én nem), és jól működik! Azt tudni kell, hogy alapból csak az 5V-os PIC-eket tudja égetni! Egyébként hibátlan. (Van amúgy a PICKit2 topic, ott sok ilyen jellegű kérdésre megtalálod a választ, csak használd a keresőt!)
Az IC1 és IC3 1-es lábain jön jel. Mind a két átalakító alap esetben vételre van állítva, és amelyikről jön egy start bit, azaz logikai 0, akkor a másikat átállítja adásba. Ezért szeretném megszakításból kezelni, hogy ne vesszenek el bitek a késleltetés miatt.
Mi köze ennek a kapcsolókhoz?
Nem igazán értem mi a probléma. Keresned kell egy olyan lábat, ami L szintű élre megszakítást okoz, illetve felébreszti a PIC-et. Most fejből nem tudom, hogy a választott PIC esetében az RA1 ilyen funkcióval el van e látva, meg kell nézzed az adatlapban, és ha nem, akkor másikat kell keress! De még egyszer kérdem, mi köze ennek a kapcsolókhoz? Mire kellenek a kapcsolók?
Hello,
csak egy kis megjegyzés; szerintem az ok, amiért nem érkezett még javaslat a problémád kiküszöbölésére az az, hogy magát a hibaüzeneteket nem mutattad meg, plusz magát a hardware -i részét sem a projektednek (de nem szeretem ezt a szót), esetleg, hogy miket változtattál. Nem azt mondom, hogy lehetetlen mindezek nélkül megtalálni az okokat, de jóval rugalmasabb és hatékonyabb módszer lenne, és te is előbb kapnál megoldásokat, tanácsokat. Nem rossz indulat, tényleg csak egy észrevétel volt! Idézet: „magát a hardware -i részét sem a projektednek (de nem szeretem ezt a szót)” Akkor írd magyarul: hardver
Akkor lényegében leírom, hogy mi a célja az áramkörnek. Ez egy RS485 hálózatú jelismétlő. Ha valamelyik átalakítóra bejön adat, azt tovább kell adnia a másikra. IC1, és IC3 egy RS232-RS485 konverter 1-es lába az RX, 4-es a TX, 2 és 3 lábával választom ki, hogy adásra, vagy vételre álljon. Alapesetben mind a kettő vételre van állítva, és amelyik RX láb 0 szintre vált, azaz a kommunikációban ez a start bit, akkor a mikrovezérlővel a másik átalakítót adásba állítom, hogy az adat kimenjen rajta. A kapcsolók arra valók, hogy be lehessen állítani a baud rate-et, és azt, hogy a kommunikáció hány bites, ezzel kiszámolva azt az időt, hogy meddig kell adásban tartani az átalakítót. A pic adatlapján azt találtam, hogy az A port egészében tudja az "Interrupt-on-change" funkciót, amit úgy értelmeztem, hogy külső változás hatására, azaz a start bit lefutó élére is képes megszakítást generálni. Vagy félreértelmeztem, és csak az INT elnevezésű láb képes külső esemény hatására megszakítani? A sleep funkció annyira nem lényeges, de két bemenet kellene, ami képes megszakítani.
Végül is amit írni fogok, már leírtuk.
1. A kapcsolókat vagy mátrixba kellene tenni, ez 2+3 vezetéket kívánna a 6 kapcsolóhoz, vagy az A/D modullal detektálni egy ellenállás hálót a kapcsolón, amiből lehetne következtetni a kapcsoló állására az osztó feszültségértékeiből. Ez utóbbi egy vezetéket igényelne, maradna 5, a mátrixosnál pedig 1 vezeték maradna, ami szintén elég. 2. Két vonal kell, ami megszakítást okoz. Jól láttad, a PORTA mindegyik lába képes megszakítást okozni, és feléleszteni a PIC-et(bár a felélesztésnek nem néztem utána az adatlapban, ezt még tedd meg.). 3. Az MCLR-t így csak a Vpp-nek szentelheted, jobb is így. A feladat így biztosan megoldható. |
Bejelentkezés
Hirdetés |