Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1044 / 1320
(#) sirály12 hozzászólása Dec 30, 2011 /
 
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?

  1. inicializálás a main részből:
  2. setup_oscillator(OSC_8MHZ | OSC_INTRC);  
  3. setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);  
  4. enable_interrupts(INT_TIMER1);
  5.  
  6.  
  7. időzítő rutin:
  8. volatile int16 ido=0;
  9. #INT_TIMER1
  10. void timer1_isr()
  11. {
  12. output_toggle(LED);
  13. }


Í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.
(#) icserny válasza sirály12 hozzászólására (») Dec 30, 2011 /
 
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.
(#) StefuPeti hozzászólása Dec 30, 2011 /
 
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.
(#) Hp41C válasza StefuPeti hozzászólására (») Dec 30, 2011 /
 
Az adatlapja és a típus honlapja szerint -40 fokig kell bírnia...
(#) mrgrassy válasza Flambi hozzászólására (») Dec 30, 2011 /
 
Mi van az ICSP lábakkal ?
(#) sirály12 válasza icserny hozzászólására (») Dec 30, 2011 /
 
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.
(#) Flambi válasza mrgrassy hozzászólására (») Dec 30, 2011 /
 
Nem vezetted ki külön!
Ezeken programozod?

JP4-8 MCLR
+
-
JP3-1 PGD
JP3-2 PGC
(#) mrgrassy válasza Flambi hozzászólására (») Dec 30, 2011 /
 
Tudom de azok be vannak kötve mivel mindegyik láb egy i/o port is erét úgy van kivezetve.
(#) Flambi válasza mrgrassy hozzászólására (») Dec 30, 2011 /
 
Akkor OK!
(#) mrgrassy válasza Flambi hozzászólására (») Dec 30, 2011 /
 
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.
(#) StefuPeti válasza Hp41C hozzászólására (») Dec 30, 2011 /
 
Nagyon szépen köszönöm a válaszod.
(#) sirály12 hozzászólása Jan 1, 2012 /
 
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.
(#) icserny válasza sirály12 hozzászólására (») Jan 1, 2012 /
 
Idézet:
„Miért nem tudom működésre bírni egy pic18f4550-ben az int2-őt?”
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.

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...
(#) kelektronic hozzászólása Jan 1, 2012 2 /
 
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
(#) Attila86 hozzászólása Jan 2, 2012 /
 
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
(#) potyo válasza Attila86 hozzászólására (») Jan 2, 2012 / 1
 
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.
(#) Attila86 válasza potyo hozzászólására (») Jan 2, 2012 /
 
Értem, köszi!
(#) guliver83 hozzászólása Jan 4, 2012 /
 
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!
(#) kaqkk válasza guliver83 hozzászólására (») Jan 4, 2012 /
 
Ha nem kódvédett akkor egyszerűen kiolvasod pickit 2 vel és beégeted a másik picbe .
(#) guliver83 válasza kaqkk hozzászólására (») Jan 4, 2012 /
 
És, ha kódvédett? Mert szerintem tuti az!
Mindenki le védi a saját kódját?
(#) potyo válasza guliver83 hozzászólására (») Jan 4, 2012 /
 
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.
(#) icserny válasza guliver83 hozzászólására (») Jan 4, 2012 /
 
Ha kódvédett, akkor SEHOGY.
(#) trudnai válasza guliver83 hozzászólására (») Jan 5, 2012 /
 
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...
(#) VSzabi hozzászólása Jan 5, 2012 /
 
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)
(#) icserny válasza VSzabi hozzászólására (») Jan 5, 2012 /
 
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.
(#) potyo hozzászólása Jan 5, 2012 /
 
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.
(#) icserny válasza potyo hozzászólására (») Jan 6, 2012 /
 
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?
(#) potyo válasza icserny hozzászólására (») Jan 6, 2012 /
 
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.
(#) guliver83 válasza trudnai hozzászólására (») Jan 6, 2012 /
 
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!
(#) Hp41C válasza guliver83 hozzászólására (») Jan 6, 2012 /
 
Esetleg egy link vagy egy rajz, meg némi leírás a működéséről..
Következő: »»   1044 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem