Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   388 / 1210
(#) aroxol válasza nedudgi hozzászólására (») Márc 24, 2013 /
 
Mégegy kicsit letisztáztam hátha igy érthetöbb. Az IDO-t szertném a 0000, és a 0008-al párhuzamosan futattni. Gondolom a 0018-ba. A 0000 és a 0008 most ebben az állapotban tökéletesen megy párhuzamosan. Hibajelenség az hogy Mplab-ban tesztelve valamelyik részre (0000, 0008 , 0018) nem ugrik, bárhogy probálom.
  1. org 0000h
  2.         goto LED
  3.  
  4.         org 0008h
  5.         call HANG,1
  6.         RETFIE 1
  7.        
  8. LED
  9.         RETURN 
  10. HANG
  11.         RETURN,1       
  12. IDO
  13.         CALL TIMER
  14.         BRA IDO
  15.        
  16. TIMER
  17.  
  18.         XXX
A hozzászólás módosítva: Márc 24, 2013
(#) kissi válasza bbalazs_ hozzászólására (») Márc 24, 2013 /
 
Így mit szólsz hozzá ?!
(#) bbalazs_ válasza kissi hozzászólására (») Márc 24, 2013 /
 
Nagyon koszonom, igy remekul megy!
Elnezest a folyamatos ertetlenkedesert, de nekem ezek a szintaxisok igen nehezen mennek...

Bar hogy mit keres egy ORG a relokalhato kodban, azt nem ertem. Ezek szerint eddig en is relokalhato kodot irtam, csak nem tudtam rola

Mindenesetre hálám uldozzon sokaig!
(#) kissi válasza bbalazs_ hozzászólására (») Márc 24, 2013 /
 
Nincs mit !
Idézet:
„Bar hogy mit keres egy ORG a relokalhato kodban, azt nem ertem.”
Írtam, hogy ettől függetlenül bizonyos dolgoknak meg akarjuk szabni a helyét ! Én is "erőből" szoktam kiosztani a dolgokat ( abszolút kód ), csak 1 v. 2 ilyen progit csináltam még, úgy, hogy ilyenkor nézem én is a help-et és a Kónya-féle könyvet is !
(#) nedudgi válasza aroxol hozzászólására (») Márc 24, 2013 /
 
Párhuzamos futás ezeken az "egymagos" kontrollereken nem létezik. A kontroller programja egyszerre csak egy programágon fut.
A 0000h a reset címe, Tápfeszültség megjelenésekor, vagy a reset gomb/utasítás hatására innen indul a program.
A 00008h a magas prioritású megszakítás vektora a kontrollereden. Ide ugrik magas priorítás esetén.
A 00018h az alacsony megszaktás vektora. Ide ugrik a program alacsony megszakításkor.
Ahhoz, hogy valamelyik megszakítás létrejöjjön, be kell állítani a megfelelő perifériát, hogy megszakításjelet generáljon. Ahhoz, hogy a tényleges megszakítás megtörténjen, engedélyezni kell a megfelelő megszakítást, illetve egyáltalán a megszakítást. A megszakítás kezelő programrész szükség esetén mentse el a fontosabb regisztereket, majd a megszakításkérő biteket megvizsgálva át kell adni a vezérlést a megfelelő lekezelő rutinnak.
(#) zoox válasza matheattila hozzászólására (») Márc 24, 2013 /
 
Bocsi elkavarodtam a portok között nem RB hanm RC4-5 ami pont az USB porja is és ezt IO nak csak I -nek lehet deffiniálni (ha jól látom ) ,de ha nem igy van akkor bocsi.A proteusban nem nagyon akar jól futni a szimuláció a 18F tipusnál ,pedig ugyan ez a kapcsolás 16F887 el tökéletesen ment.de át kellett térnem a 18F-re mert nem fértem bele a ROMba illetve 2K nál nagyobb lett egy függvényem és ROM hibára elszált .Most HW-n jól müködik a kod csak a szimulátorban nem és ez nagyon bosszanto mer szimulálni is akarom.
(#) Beles hozzászólása Márc 24, 2013 /
 
Sziasztok!
PIC18F2550-el próbálok i2c kapcsolatot létrehozni egy ds1621 hőmérővel. A megírt kód PIC16f877A-val működik, de a 2550-el nem. Természetesen a portot átírtam a megfelelőre. Raktam felhúzó ellenállást az SDA és SCL lábakra. A 16F-re pic hi-tech fordítót használtam, a 18F-es családnál a Microchip C18-as-at, amit viszot nem ismerek annyira. Talán valamit nem jól írtam a kódban? Illetve az oszcillátor config jelen beállítása szerint a processzor frekvenciája így a (20MHz-es) kristály frekvenciájának a negyede? Próbáltam Pickit2 logic tool-al nézni a jelet, míg 16F-nél szépen látszik a jelsorozat, addig a 18f-nél nem jön ki semmi
  1. #include <p18f2550.h>
  2.  
  3.  
  4. #pragma config PLLDIV   = 5       // (20 MHz input)
  5. #pragma config CPUDIV   = OSC1_PLL2
  6. #pragma config USBDIV   = 2       // Clock source from 96MHz PLL/2
  7. #pragma config FOSC     = HS
  8. #pragma config FCMEN    = OFF
  9. #pragma config IESO     = OFF
  10. #pragma config PWRT     = OFF
  11. #pragma config BOR      = ON
  12. #pragma config BORV     = 3
  13. #pragma config VREGEN   = ON
  14. #pragma config WDT      = OFF
  15. #pragma config WDTPS    = 32768
  16. #pragma config MCLRE    = ON
  17. #pragma config LPT1OSC  = OFF
  18. #pragma config PBADEN   = OFF
  19. #pragma config CCP2MX   = ON
  20. #pragma config STVREN   = ON
  21. #pragma config LVP      = OFF
  22. //#pragma config ICPRT    = OFF       // Dedicated In-Circuit Debug/Programming
  23. #pragma config XINST    = OFF       // Extended Instruction Set
  24. #pragma config CP0      = OFF
  25. #pragma config CP1      = OFF
  26. #pragma config CP2      = OFF
  27. //#pragma config CP3      = OFF
  28. #pragma config CPB      = OFF
  29. #pragma config CPD      = OFF
  30. #pragma config WRT0     = OFF
  31. #pragma config WRT1     = OFF
  32. #pragma config WRT2     = OFF
  33. //#pragma config WRT3     = OFF
  34. #pragma config WRTB     = OFF       // Boot Block Write Protection
  35. #pragma config WRTC     = OFF
  36. #pragma config WRTD     = OFF
  37. #pragma config EBTR0    = OFF
  38. #pragma config EBTR1    = OFF
  39. #pragma config EBTR2    = OFF
  40. //#pragma config EBTR3    = OFF
  41. #pragma config EBTRB    = OFF
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. unsigned char CIM;      //A megcímzendő eszköz
  49. unsigned char adat;     //A küldendő adat
  50.  
  51. void WAIT (void)
  52. {
  53.         while (SSPCON2bits.ACKEN == 1 || SSPCON2bits.SEN == 1 || SSPCON2bits.RSEN == 1 || SSPCON2bits.PEN == 1 || SSPCON2bits.ACKSTAT ==1 || SSPSTATbits.BF == 1 || SSPSTATbits.R_W == 1)
  54.         {
  55.                 Nop ();
  56.         }
  57. }
  58.  
  59. void initI2C ( void )   // I2C master mód enable
  60. {
  61.         SSPBUF = 0;
  62.         SSPSTAT = 0b10000000;
  63.         SSPCON1 = 0b00101000;
  64.         SSPCON2 = 0b00000000;
  65.         SSPADD = 49;
  66.         TRISB = 0b00000011;
  67.  
  68.  
  69.  
  70. }
  71.  
  72.  
  73. void START ( unsigned char CIM )
  74. {
  75.         SSPCON2bits.SEN = 1;                    //START
  76.         WAIT();
  77.                                                 //CÍM küldés
  78.         SSPBUF = CIM;
  79.         WAIT();
  80. }
  81.  
  82. void RSTART(char cim)
  83. {
  84.         SSPCON2bits.RSEN = 1;                   //START
  85.         WAIT();
  86.         SSPBUF = cim;
  87.         WAIT();
  88.  
  89.  
  90. }
  91.  
  92.  
  93. void ADAT (unsigned char adat)
  94. {
  95.         SSPBUF = adat;                          //ADAT küldés
  96.         WAIT();
  97. }
  98.  
  99.        
  100.  
  101.  
  102. void STOP (void)
  103. {
  104.         SSPCON2bits.PEN = 1;                    //STOP
  105.         WAIT();
  106. }
  107.  
  108. unsigned char RECEIVE (char cim)
  109. {
  110.         char erkezett;
  111.         RSTART(cim);
  112.         SSPCON2bits.RCEN = 1;
  113.         WAIT();
  114.         erkezett = SSPBUF;     
  115.         SSPCON2bits.ACKEN = 1;
  116.         WAIT();
  117.         SSPCON2bits.RCEN = 1;
  118.         WAIT();
  119.         erkezett = SSPBUF;
  120.         SSPCON2bits.ACKEN = 1;
  121.         WAIT();
  122.         return erkezett;
  123. }
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130. void main (void)
  131. {
  132.         TRISB = 0;
  133.         LATB = 0b00000011;
  134.         initI2C();
  135.         CIM = 0b10010000;
  136.         adat = 0xAC;
  137.         START(CIM);
  138.         ADAT(adat);
  139.         adat = 0;
  140.         ADAT(adat);
  141.         STOP();
  142.         START(CIM);
  143.         adat = 0xEE;
  144.         ADAT(adat);
  145.         STOP();
  146.         START(CIM);
  147.         adat = 0xAA;
  148.         ADAT(adat);
  149.         CIM = 0b10010001;
  150.         adat = RECEIVE(CIM);
  151.        
  152.         while (1)
  153.         {
  154.                 Nop();
  155.         }
  156. }
(#) foxi63 válasza Beles hozzászólására (») Márc 24, 2013 /
 
Szia!
A jelen beállításban a 20MHz kristályt leosztja 4MHz-re és a pll felszorozza 96 MHz-re az USB használatához. Ebból a frekiből 2-vel oszva meg is van a 48MHz frekvencia, amiről megy a PIC.
Tehát 1 utasítás ideje 1/12.000.000 sec
A config biteket piszkálva letiltható az AD modul felső 4 bitje (8-9-10-12) a Bport alsó 4 bitjéről, mert AD portként inicializálódik és nem i/o portként. Ez lehet a hiba. Nézz körül az ADCON0 regiszter körül is.
üdv.
Foxi
A hozzászólás módosítva: Márc 24, 2013
(#) viktorio333 hozzászólása Márc 24, 2013 /
 
szasztok. Szeretném a segítségeteket kérni egy probléma megoldásában írtam eggy programot PIC16F877 -re amit mellékeltem is . Azt szeretném kérdezni hogyan tudnám átírni hogy PIC16F628A tipusú ic-n is működjon.
A hozzászólás módosítva: Márc 24, 2013

pic.asm
    
(#) viktorio333 válasza viktorio333 hozzászólására (») Márc 24, 2013 /
 
A program írásra PIC SIMOLATOR IDE programot használok ha netán ez befolyásolná a dolgokat . A válaszokat előre is köszönöm.
(#) bendegousius hozzászólása Márc 24, 2013 /
 
Sziasztok! Ubuntu 11.04-et használok és kéne rá egy progi amivel BASIC nyelven tudnék IC-t programozni. Utána néztem már és csak olyat találtam, ami a C-t tudja. Előre is köszi a válaszokat ha tudtok segíteni.
(#) Beles válasza foxi63 hozzászólására (») Márc 25, 2013 /
 
Szia!
De hát a PBADEN-nek nem OFF-on kell lennie ahoz, hogy tiltva legyen az A/D? ADCON1 regisztert tényleg át kellett írni, de még így sem jó.
(#) icserny válasza Beles hozzászólására (») Márc 25, 2013 /
 
"Az ADCON1 regiszter Power on RESET-kor a PBADEN konfigurációs bit beállításától függő értékre inicializálódik: PBADEN=0 esetén 7-re, PBADEN=1 esetén pedig 0-ra. "
(#) proba válasza viktorio333 hozzászólására (») Márc 25, 2013 /
 
Szerintem 628 on is működik,mi a bajod vele,esetleg némi probléma ,hogy az "A" változód használata előtt a bankváltás hiányzik. Vagy ezt kell beletenni ,utána nem elfelejteni visszaállítani a portB re,vagy a változót a közös részbe deklarálni (70).
(#) proba válasza aroxol hozzászólására (») Márc 25, 2013 /
 
Esetleg az első goto utasításon elgondolkodnék. Goto led ---- return ( hova is )
(#) viktorio333 válasza proba hozzászólására (») Márc 25, 2013 /
 
Próbáltam szimulatorba nem működött nem tudná valaki nekem kijavítani mert csak most kezdtem a pihenést és nem igazán vagom.
(#) Szpisti hozzászólása Márc 25, 2013 /
 
Sziasztok!
Találtam egy egyszerű kis kapcsolást PIC16C54-el.
Meg is van hozzá a hex, csak fel kellene tölteni.
Azzal tisztában vagyok hogy ezt a chipet csak egyszer lehet írni.
Olvastam hogy azonos aPIC16F54-el, tehát elvileg abba is betölthető.
A helyi üzletben viszont porosodik a polcon jópár 16C54.
Az nem lenne gond ha nem tudom újra írni, besütöm oszt' kész.
De ott akadtam el, hogy megnéztem egy itthon elfekvő C54-el a PicKit2 nem is vállalja az égetését de még a kiolvasást sem. Mst vegyek egy PicKit3-at is ?
Van egy JDM égetőm is. Néztem MplabIde, WinPic800, PicPGM programokkal , egykkel sem hajlandó a C típust égetni?
Valami megoldás?
A hozzászólás módosítva: Márc 25, 2013
(#) proba válasza viktorio333 hozzászólására (») Márc 25, 2013 /
 
Nem tudom a szimulátor milyen körítést kér hozzá (processzornév ,portnevek ,szabványos programkezdet ,programvég...) de szerintem ennek működnie kellene.

pic.asm
    
(#) Beles válasza icserny hozzászólására (») Márc 25, 2013 /
 
Azaz jól van beállítva. Akkor mi lehet a probléma?
(#) Szpisti válasza Szpisti hozzászólására (») Márc 25, 2013 /
 
Igen, belátom a C verzióhoz egy magasagg égetőfeszű áramkör kell, de inkább nem építek mégegy programozót emiatt az őskövület miatt.
Akkor marad a másik verzió, és a kérdés : Kompatibilis-e a PIC16F54 , mert azt a pickit2 programban a Baseline alatt látom lehetne pörkölni.
(#) pjg válasza Szpisti hozzászólására (») Márc 25, 2013 /
 
Van egy Parallax -os égetőm. Az tudja. Igaz bő 20 éve nem használtam. A programok is DOS-alatt futnak.
C52-őm is van pár darab meg C84 is 2.

Egy PICKIT2 ért elcserélem az egész bazárt.
A hozzászólás módosítva: Márc 25, 2013
(#) icserny válasza Beles hozzászólására (») Márc 25, 2013 /
 
Idézet:
„Akkor mi lehet a probléma?”

Azt én nem tudom. De ezen az oldalon közzétett i2c függvényeim működtek PIC18F4550-en, s emezen az oldalon pedig leírtam a DS1621 sajátosságait. Nézd, meg, hátha ad valami ötletet!
(#) Hp41C válasza Szpisti hozzászólására (») Márc 25, 2013 /
 
Szia!
Idézet:
„Igen, belátom a C verzióhoz egy magasagg égetőfeszű áramkör kell”

Ugyan az az égető feszültség (12..13V) kell, az áramigényük lényegesen nagyobb, mint az F típusoké.
Idézet:
„.. Most vegyek egy PicKit3-at is?”

Ne vegyél, az sem képes annyi áramot kiadni a Vpp kivezetésen, amennyi a C típusokhoz kell. Kivétel a 16C84 és a 16C84, amik léneyegében többször újraprogramozható flash -es típusok, csak a nevük még nem tükrözi. Őskőkori típusok...
Idézet:
„Kompatibilis-e a PIC16F54 -vel”

Igen.
(#) Beles válasza icserny hozzászólására (») Márc 25, 2013 /
 
Rendben, köszönöm, megnézem!
(#) Szpisti válasza Hp41C hozzászólására (») Márc 25, 2013 /
 
Igen láttam egy kapcsolást, 15V 200mA táplálás szükséges az égetőhöz.
Köszönöm a választ.
Még annyit - megvan a beégetendő hex-hez tartozó asm is, amiben a fejlécen ez szerepel :
Idézet:
„device pic16c54,xt_osc,wdt_on,protect_off”

Ettől még feltölthető az F verzióba?
Bocs a dilettáns kérdésekért
(#) Hp41C válasza Szpisti hozzászólására (») Márc 25, 2013 /
 
Add meg a linket a forrásra vagy töltsd fel az asm -et.
(#) Szpisti válasza Hp41C hozzászólására (») Márc 25, 2013 /
 
Ment pm.
(#) viktorio333 válasza proba hozzászólására (») Márc 25, 2013 /
 
Megpróbálom bocsi ebben kezdő vagyok az analóg technikában vagyok járatos ezért elnézést ha rosszat mondok válaszodat köszönöm.
(#) agressiv válasza Hp41C hozzászólására (») Márc 25, 2013 /
 
Ha már így belendültetek, nekem épp az a gondom, hogy a willem programozó legkissebb beállítható feszültsége 12.75V és azzal nem tudja írni a PIF16F877-et, pedig elvileg kellene tudnia olyat is programozni? Ilyenkor mivan?
(#) kzteam hozzászólása Márc 25, 2013 /
 
Tisztelt Sporttársak,

2-3 napja szívok egy érthetetlen hibával, van-e valakinek ötlete?:

-PIC18f14K22 RX-TX lábak mennek 75176 bemeneteire, plusz alkatrész nélkül
-csak adásra van kapcsolva 9600 baud
-75176-nak 130Ohm A-B között A 820Ohmmal +5V-n, B 820Ohmmal GND
-10cm 3eres vezeték A-B-GND
- fogadó 75176 130Ohmos ellenállás lezárással, annélkül,fel lehúzóval több variációban kipróbálva
-fogadó oldani TTL szinten hibás és hiányos bájtok érkeznek az adó oldalhoz képest

Miért vesznek el a bájtok és sérülnek? Az adó TTL-jét vizsgálva minden OK, egyszer sem hibázik.

Előre is köszönöm!!
Következő: »»   388 / 1210
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