Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Egy kérdéssel fordulnék hozzátok!
Egy régebbi progimat egy új picre fordítom át, és egy dolog egyszerűen nem megy. Az új picben használni akarom a beépített oszcillátort, de valamiért így a timerek egyszerűen megbolondulnak, vagy csak én nézek el valamit?
Így a led durván másodpercenként 2 alkalommal villan fel, de miért? Elvileg 65,536 ms-nak kellene lennie nem pedig 500 ms-nak! Vagy én számolok rosszul valamit? A pic egyébként egy pic18f1320-as lenne. Előre is kösz az ötleteket.
Megfeledkeztél róla, hogy a Timer az utasításciklusokat számlálja, ami Fosc/4. S megfeledkeztél arról, hogy a LED csak minden második megszakításkor kerül azonos fázisba. Ez így összesen egy 8-as faktor, s magyarázza a várakozásod és a tapasztaltak közötti eltérést.
Egy gyors kérdésem lenne. 16F648A típusú PIC-ket szeretnék kültéren használni. Fogja bírni az esetleg -10 -20 fokot odakint? Az adatlapot néztem, nem találtam róla infót.
Az adatlapja és a típus honlapja szerint -40 fokig kell bírnia...
Igazad van. tényleg kicsit elbambultam már tegnap este, és sehogy sem értettem, de most már minden a helyére került. Köszönöm a segítséget.
Nem vezetted ki külön!
Ezeken programozod? JP4-8 MCLR + - JP3-1 PGD JP3-2 PGC
Tudom de azok be vannak kötve mivel mindegyik láb egy i/o port is erét úgy van kivezetve.
Sikerült detektálni a PIC-et
De megint hiba : MPLAB ICD 3 Connected. Target Detected ICD3Err0086: Target Device ID (00001200) does not match expected Device ID (00002400). If you experience persistent problems communicating, the ICD 3 test interface can be used to help diagnose the problem.
Lenne egy újabb kérdésem.
Miért nem tudom működésre bírni egy pic18f4550-ben az int2-őt? Inicializáló rész: enable_interrupts(int_ext2); ext_int_edge(2,L_TO_H); enable_interrupts(global); Megszakítás kezelése: #int_ext2 void ext_isr() { output_high(LED); } Egyszerűen nem csinál semmit. Mi lehet a hiba? Sajnos a 0 és 1 megszakítás lábakat nem tudom használni, mivel kell a hardveres i2c busz, ami jól működik. Egyébként ezek a megszakítások működnek is, ha behelyettesítem őket. Idézet: Erre azért nehéz válaszolni, mert nem tudom, hogy mit csinálnak a CCS C függvényei a háttérben, te pedig a jelek szerint nem nézted meg a fordítás eredményét.„Miért nem tudom működésre bírni egy pic18f4550-ben az int2-őt?” Az egyik dolog, ami bezavarhat, az az INT2-höz használt bemenet analóg funkciója, amit le kell tiltani. Ezzel nyilván meg kellett birkózni INT0 és INT1 estén is. A másik dolog, ami bezavarhat, hogy ezt a láb külső USB transciever-hez is kapcsolódhat. SZerencsére ez alaphelyzetben nincs engedélyezve. A harmadik dolog pedig az, hogy INT2 kezelése némiképp eltér INT0 és INT1 kezelésétől. Például INT2 prioritás-beállító bittel is rendelkezik (INT2IP), ami az INTCON3 regiszterben helyezkedik el. Ha ez nincs jól beállítva, akkor az interrupt és a a kiszolgáló rutin nem találkoznak...
Sziasztok! Keresek olyan kollégát, aki otthon van PIC vagy AVR progi írásban, és bérbe is írna. Léptető motor vezérlést kéne megoldani. (részleteke megbeszéljük) E-mailt várok. Üdv Tibi
A Microchip azt írja hogy a PIC18F26K80-nak 64KB a programmemóriája. Az MPLAB szerint viszont 32KB. Most akkor melyiknek van igaza?
Bővebben: Link
Az MPLAB nem említi, hogy kB-ról lenne szó. Amit az MPLAB mutat, az az utasításhelyek száma, ami a 18F-nél fele a bájtokban mért programmemóriaterületnek. Tehát 32768 utasítás=65536 bájt.
Sziasztok!
Van egy adott Pic ami fel van programozva, hogy lehet egy másik Pic-be is ugyan azt a programot átrakni? Van valami megoldás rá, hogy ki lehessen belőle szedni a beégetett programot? Remélem nem írtam nagy hülyeséget!
Ha nem kódvédett akkor egyszerűen kiolvasod pickit 2 vel és beégeted a másik picbe .
És, ha kódvédett? Mert szerintem tuti az!
Mindenki le védi a saját kódját?
A kódvédelem azért van, hogy ne lehessen kiolvasni a kódot.
Általában le szokás védeni a kódot, ha valaki másnak csinálja az ember és a forráskód nem kerül átadásra. Persze lehet úgy is egyezni, hogy a forráskód is átadásra kerül, akkor meg a megrendelő dolga, hogy mit csinál. Idézet: „És, ha kódvédett? Mert szerintem tuti az! Mindenki le védi a saját kódját?” Nyilvan azert vedik le a kodjaikat, hogy ne tudd csak ugy lemasolni... Nem mindenki vedi le, es fokent Kinaban speci eszkozokkel tudjak masolni a kodot, de ennek koltsege akkora, hogy csak akkor erne meg neked ha millios nagysagrendben szeretned a hamisitvanyt eladni. Olcsobb es gyorsabb szerintem ha kitalalod az eszkoz hogyan mukodik es megirod a kodot magad...
Sziasztok!
Szeretnék megvalósítani kétirányú usb kommunikációval kapcsolást. Ez 4 csatornás relé panel áram és feszültség méréssel. A vezérlő PIC14K50. A piccolo-t alapul véve próbálom megvalósítani. (Thermométer, Parancsértelmező) A teljes kódot nem küldöm csak amit átírtam, (gondolom úgyis ismeritek).A piccoloban és a microchip demoban is a c port alsó 4 bitjén vannak a ledek. (piccolo-14K50.h) #define LEDport LATC #define LEDtris TRISC /** LED-ek ********************************************************/ #define mInitAllLEDs() LATC &= 0xF0; TRISC &= 0xF0; #define mLED_1 LATCbits.LATC0 #define mLED_2 LATCbits.LATC1 #define mLED_3 LATCbits.LATC2 #define mLED_4 LATCbits.LATC3 Át szeretném tenni a ledeket (reléket) 2 B PORT-ra és 2 C PORT-ra. Erre gondoltam: #define LEDportB LATB #define LEDtrisB TRISB #define LEDportC LATC #define LEDtrisC TRISC /** LED-ek ********************************************************/ #define mInitAllLEDs() LATB &= 0xC0; TRISB &= 0xC0; LATC &= 0x30; TRISC &= 0x30; #define mLED_1 LATBbits.LATB6 #define mLED_2 LATBbits.LATB7 #define mLED_3 LATCbits.LATC4 #define mLED_4 LATCbits.LATC5 Ennek megfelelően a parancsértelmezőt is át kell írni. A kód lefordul de a hex beégetése után semmi. Próbáltam a microchip demóját is de ezzel a sikerrel. Valami beállítást nem jól állítottam valahol az alapoknál. De hol? Segítsetek ha van ötlet! Köszönöm! (Hardver valószinű rendben, eredeti verzióban működik)
Kicsit késő van már, de úgy tűnik, hogy TRISB és TRISC beállítását rontottad el:
TRISB &= 0xC0; pont azokat NEM állítja kimenetnek, amelyeket annak szeretnél! TRISB &= 0x3F; kellene. TRISC &= 0x30; helyett pedig TRISC &= 0xCF; kellene. Magyarázat: a bitenkénti ÉS művelet nullába viszi azokat a biteket, amelyekkel szemben nulla van.
Küzdök itt a PIC32MX795F512L SPI2 moduljával. A leírás szerint ha az ENHANCED BUFFER MODE-t választom, akkor amíg van szabad hely az SPI2TXB-ben, addig az SPI2STAT.SPITBF bit nulla, amikor megtelik az SPI2TSB, akkor pedig az SPITBF bit egyes lesz. Na én hiába írok be akár 20-szor egymás után értéket az SPI2BUF-ba, az SPITBF végig nulla marad, és az SPI2STAT.TXBUFELM is végig nulla marad. Kérdés, mit nézek el, amikor az SPI2CON tartalma 00000000 00000001 10000000 01101100, és az SPI2STAT.RXBUFELM szépen növekszik minden fogadott bájt után, és az SPIRBE és SPIRBF bitek is beállnak, amikor kell? Olyan, mintha nemis íródna semmi a SPI2BUF regiszterbe, közben meg íródik és ki is megy, csak épp nem tudom a hardverre bízni azt, hogy ne fussanak egymásra az írások, mert úgy néz ki, hogy semmi sem működik, ami ezzel kapcsolatos lenne. Amint látható, próbáltam azt is, hogy az STXISEL bitekkel úgy állítsam be a hardvert, hogy akkor billenjen be az SPI2TXIF megszakításjelző bit, amikor a kimeneti pufferben van hely, de ez sem működik megfelelően, folyamatosan nullában marad az SPI2TXIF bit. Olyan, mintha valamit kifelejtenék, csak épp nem tudok rájönni, hogy mi lehet az, amikor az adat meg kimegy a kontrollerből. Erratat is néztem már, de nem találtam semmi ezzel kapcsolatosat.
Adatlap alapján okoskodva első körben próba gyanánt nulláznám az SPI2CON2 regiszter SPIROVEN és SPITUREN bitjeit.
Van valami lecsupaszított tesztprogramod?
SPI2CON2 nincs ebben a kontrollerben. Én is kerestem először, de írja az említett doksi, hogy nem minden kontrollerben van, és ebben konkrétan nincsen.
Estére csinálok egyet, most munkán vagyok.
Hát igen a program írás nem az erősségem!
Lényegében meg van minden adat, hozzá vagyis a kapcsolási rajz, csak a PIC adatai kellene. Köszönöm a válaszokat!
Esetleg egy link vagy egy rajz, meg némi leírás a működéséről..
|
Bejelentkezés
Hirdetés |