Fórum témák
» Több friss téma |
Mindig, ha elindítom a PICKIT2 programot akkor is rögtön, meg ha MPLAB-ba csatlakozni akarok akkor is kidobja. De megvan a VPP
Tegyél fel egy képet az MpLab PICKit2 ablakáról.
Csináltam képet mindenről:
Kábel, programozandó kontroller nélkül is a hibaüzenetet kapod?
Igen.
C4 helyén 47µF / 25V van?
47µF 100V
Sziasztok!
Köszönöm mindenkinek aki segített. Most, hogy működik a pic szeretnék elkanyarodni, kicsit bensőségesebb irányba a C18-on belül. Tehát: Van valamilyen függvény amit ha meghívok egy ideig áll a program? pl
Nem, hanem 10ms ideig egy helyben pörög. Megszakítás előfordulhat, annak a lekezelése megnöveli ezt az időt. Úgy kell értelmezni, hogy legalább 10ms ideig vár valamire.
A hozzászólás módosítva: Okt 12, 2012
Jó, úgy értettem, bocsi.
De, hogy hívom meg? Amúgy meg a timerjei nem állnak le ha megszakítás történik, mért növekszik mégis az idő, ha csak a megszakítás lekezelése ki nem lóg az időkeretből? Amúgy el tudom küldeni aludni és ha tulcsordul a timer vagy egyéb megszakítás történik felébred. A hozzászólás módosítva: Okt 12, 2012
Mert a 10ms időt nem timer alapján, hanem az órajelből számított számolással végzi. Egy üres ciklusnak kell felfogni, ami körülbelül annyi ideig tart.
És azt HOGY HíVOM meg???
Ja itt is, köszi
Mit kell hozzá include-olni? A hozzászólás módosítva: Okt 12, 2012
C18 alatt is van ilyen beépített késleltető függvény?
Csak mert DelayxxxTCYx( ) függvényekről tudok, amelyek bizonyos mennyiségű utasításciklust kivárnak, de konkrétan delay_ms() -el nem találkoztam. adamhollos: Az általam ismert késleltető függvények használatához a delays.h filet kell include-olni. Egyébként a fordító dokumentációja megtalálható a C18 telepítési könyvtárában a \doc mappában.
Igen én is erre az eredményre jutottam, azért köszi!
Megszakításokat szeretnék használni, első körben timer0 és RB változás megszakításokat. Ezt én úgy gondoltam, hogy ha valamelyik interrupot csinál, a program átugrik egy másik szálra, ahol kinullázom a flegbitet csinálok valamit, majd a progi tovább fut az elugrás helyétől. Hogyan tudom ezt megvalósítani? Tudom, hogy user guide meg minden, de nem igazán értettem meg belőle és az rb-s megszakítással nem is foglalkozik. A kódom, most itt tart:
A timer0-át direkt kapcsolom be aztán ki, mert most csak a rb-s interrupot akarom megvalósítani (egyenlőre) A hozzászólás módosítva: Okt 13, 2012
Közben rájöttem, hogy pl a RCONbits.7 nem helyes, úgyhogy cseréltem RCONbits.IPEN=1; -re
Idézet: „C18 alatt is van ilyen beépített késleltető függvény?” Ilyen késleltető függvényt te is írhatsz magadnak. A Delay100TCYx paramétere (ami csak konstans lehet, változó nem!) az utasítsáfrekvencia (FCPU/4) legyen, 100 kHz-es egységekben megadva. Például: 10 MHz-es kvarc és PLL esetén FOSC=40 MHz, az FCY ennek a negyede, azaz FCY = 10 MHz. Ez 100 kHz-es egységekben 100. Amíg 100 x 100 utasításciklus lemegy (lásd Delay100TCYx(100); ), addig 1 ms idő telik el. ebből leszámolunk annyit, amennyit a Delay_MS() függvény d paramétere előír. Ha más a frekvencia, pl. USB miatt 48 MHz, akkor FCY = 12 MHz, a Delay100TCYx() paramétere 120 legyen.
A hozzászólás módosítva: Okt 13, 2012
Értem, köszi!
Üdv!
A microchip PIC-es táblázatában a Single Supply Voltage az mit takar?
Ha nincs szükség extrém nagy pontosságra (pl. Lcd inicializálásnál és hasonló helyeken), kiindulhatsz az alábbiból:
Ekkor nem kell külön számolgatni hogy milyen órajelhez mekkora értékkel kell meghívni a függvényt, hanem elég a felhasznált órajelet megadnod. Idézet: „A microchip PIC-es táblázatában a Single Supply Voltage az mit takar?” Az AN910 Application Note írja le. VIHL-lel jelölik azt a feszültséget, amelyet a MCLR és PGM lábakra adva egytápfeszültségű programozási módba lép a mikrovezérlő (ha ezt korábbna nem tiltottuk le...). Az egytápfeszültségű programozás pedig azt jelenti, hogy nem kell a VDD-nél magasabb (VPP = 9 - 13 V-ot) adni az MCLR lábra, hanem belső töltéspumpa áramkör állítja elő a FLASH írásához szükséges magasabb feszültséget. Idézet: „SINGLE-SUPPLY PROGRAMMING An additional advantage of many devices with Flash program memory is that they are capable of in-system programming without the regulated 13V source. This method is known as single-supply programming, since only VDD is required. Historically, Microchip has referred to this mode as low-voltage programming to contrast it with standard ICSP operation and its “high-voltage” VPP requirement. Using this method does involve some trade-offs, however. Single-supply ICSP programming uses an additional programming pin, labeled PGM, with the other pins required by the normal (High-Voltage) mode. The programming voltage for the memory array is generated by an internal charge pump when normal operating voltage (VDD) is placed on the pin. When the PGC and PGD pins are held to logic low at the same time as VDD is applied to both PGM and MCLR,” A hozzászólás módosítva: Okt 13, 2012
Szia!
Rémlem, hogy nem haragszol meg amiért folyton berakom neked a nemműködő programom, de előre haladtam az interrupokkal, viszont a következő program, valamiért nem működik:
a cv váltózó valamiért sosem lesz 1, mit rontottam el?
Idézet: Azt sem tudom, hogy mit szeretnél, hogy csináljon. Írj kommenteket, és használd a C18 mellé kapott fejléc állományokban definiált szimbolikus neveket, hogy érthető legyen a program!„valamiért nem működik:” Példa 18f4550-hez (neked nem biztos, hogy ez jó, mert van más felépítésű PIC18 is!
Ezt se felejtsük ki:
Bővebben: Link A hozzászólás módosítva: Okt 13, 2012
Na most akkor ez a PGM sem világos nekem. Most kinéztem egy 18F-es PIC-et amihez ilyen egytápfeszültség kell a táblázat szerint. Az adatlapján rákerestem a PGM-re és 0 találatot ad, tehát nincs. OshonSoft-os égetőm van. Akkor most ezzel ugyanúgy feltudom programozni ezt a 18F-es PIC-et is? Az MCLR-re ugyanúgy mehet a 12V? Eddig PGM-mel rendelkező 16F-eset programoztam úgy, hogy a PGM-et nem használtam semmire.
És most megnéztem a 18F-es "társát" ami nem tud ilyen egytápfeszültségű programozást és ennek sincs PGM-je. Át kell alakítanom a programozót vagy sem? Homályosíts már fel kérlek ez ügyben.
18f25k80-at használok A hozzászólás módosítva: Okt 13, 2012
Idézet: Nem kell, ez csak lehetőség.„Most kinéztem egy 18F-es PIC-et amihez ilyen egytápfeszültség kell a táblázat szerint.” Idézet: Meg kell nézni, hogy konkrátan melyik típust nézted ki, s meg kell nézni, hogy az szerepel-e a programozód támogatói listáján. Ha a "magasfeszültségű" programozási módot használod, akkor célszerű az "alacsonyfeszültségű" programozást (LVP) letiltani a konfigurációs biteknél.„Át kell alakítanom a programozót vagy sem?”
1. Az INTCONbits.RBIF=0; utasítást tedd hátrább (a megszakytási rutin végére), hogy a bemenetnek legyen ideje "konszolidálódni". Legalább egy NOP kell, de mivel úgyis van feladat, elég a sorrendet megváltoztatni. 2. A LATB regiszter nem a bemenet, hanem a kimenti adatregiszter állapotát tükrözi. Olvasd a PORTB regisztert, vagy jelen esetben vizsgáld azt az "a" változót, amibe már beolvastad a vizsgálandó regisztert! Például: if(a & 0x20) {stb...} Ha jól számolom, 0x20 a BIT5 helyiértéke. Itt bitenként ÉS művelet (&) kell, nem pedig a logikai változók közötti ÉS művelet (&&), erre vigyázz!
Király, működik
Most például kinéztem a 18F26K22-t, elég jó és gyors PIC-nek tűnik és még kompatibilis lenne a 16F-es panelommal is. Ha jól nézem a PIC18(L)F2XK22/4XK22 Flash Memory Programming dokumentumban az MCLR-re maximum 9V kapcsolható, de azt is írja hogy Vdd+4.5V a minimum feszültség, amit nem értek mert ha a Vdd = 5V akkor már 9.5V jön ki.
Akkor elég csak letiltalni az LVP-t és ugyanúgy lehet programozni, mint a 16F-eseket csak a 12V Vpp helyett 9V-ot adhatok neki maximum? A szoftver is támogatná ezt a PIC típust. A hardver meg OshonSoft-os lenne. |
Bejelentkezés
Hirdetés |