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   705 / 1210
(#) BESENYII hozzászólása Szept 28, 2015 /
 
Sziasztok.

Érdeklődöm, tudja valaki DSPIC33EP256GP506 B-portját ha olvasni szeretném RB4 től RB11-ig a TRIS-en kívül kell még mást is állítani. Jelenleg ezekből 1bitet, az RB8-at csak írni tudom.
(#) Hp41C válasza BESENYII hozzászólására (») Szept 28, 2015 /
 
ANSELB
(#) BESENYII válasza Hp41C hozzászólására (») Szept 28, 2015 /
 
Így működik: ANSELB=0;
Igaz egyenként nem sikerült állítani pl: az ANSB8-at nem ismeri az xc16.
(#) benjami válasza BESENYII hozzászólására (») Szept 28, 2015 /
 
Miért nem nézed meg az adott típus header fájlját (p33EP256GP506.h) ? Az alapján az ANSELBbits.ANSB8 -t ismernie kell.
(#) BESENYII válasza benjami hozzászólására (») Szept 29, 2015 /
 
Igaz, fordítja az ANSELBbits.ANSB8-at lehet rosszul írtam ezért nem ismerte a fordító.
Köszönöm.
(#) cross51 válasza BESENYII hozzászólására (») Szept 29, 2015 /
 
Gondolom XC16-ot használsz

Itt úgy lett elkészítve a fordító, hogy nincs lehetőség, mint a 8 bites PIC-eknél, hogy az adott bit nevét írod egyedül. Itt ha bitre (struktúra) hivatkozol akkor struktúranév . és a struktúra elem pl.: ANSELxbits.ANSxy (csak, hogy a későbbiekben ne legyen problémád ebből).
(#) BESENYII válasza cross51 hozzászólására (») Szept 29, 2015 /
 
Szia!
Igen XC16-ot használok és DSPIC33-at, pontosabban még most ismerkedek velük, így jó tudni
az alapvető dolgokat - van belölük bőven.
(#) bbalazs_ hozzászólása Okt 3, 2015 /
 
Sracok, segitseget kell kernem ebben a topicban, mivel elakadtam egy 18F4525-os orajel-beallitasaban. Belso, 8MHz-es oscillatort allitottam be es PLL-t szeretnek hasznalni. Ez nem akar menni. Az adatlapban 2.4.6 alatt leirtakat betartom, nincs valtozas akar 0 akar 1 a PLLEN bit.
A config bitek ellenorizve, jo a 1000 vagy a 1001 beallitas a FOSC biteknel.
Rosszul csinalok valamit? Az adatlap szerint kepes kell legyen ra.
Bar megszakitasbol nezem az irled0 allapotat, de az oscillator abrajan azt latom, hogy a timerek is a fo orajelforrasrol mukodnek, nincsenek kivul a pll hataskoren. Probaltam mar 4MHz-n is.

(A mov egy sima macro, ami movlw/movwf parossal mukodik.)

Elore is koszi, ha valaki mar talalkozott ilyennel vagy tud okosat mondani, mit probaljak meg ki.

  1. list            p=18f4525
  2.         #include        <p18f4525.inc>
  3.  
  4. radix hex
  5.  
  6. ; PIC18f4525-tel infrakapuk erzekelese
  7. ; Attervezett,uj panel felhasznalasaval
  8. ; a ket irled 40kHz-el hajtva, megszakitasban.
  9. ; ket kulon kor, sajat ledekkel
  10. ; 2015.10.03
  11.  
  12. CONFIG  OSC = INTIO67
  13. CONFIG  PWRT = ON            ;Enabled
  14. CONFIG  BOREN = OFF          ;Disabled
  15. CONFIG  BORV = 25            ;2.5V
  16. CONFIG  WDT = OFF            ;Disabled
  17. CONFIG  MCLRE = ON           ;Enabled
  18. CONFIG  PBADEN = OFF         ;Port B<4:0> digital on RESET
  19. CONFIG  LVP = ON             ;Enabled
  20. CONFIG  ENHCPU = OFF         ;Disabled
  21. CONFIG  DEBUG = OFF          ;Disabled
  22.  
  23.  
  24. #define zoldled         LATB,4
  25. #define irled0          LATA,1
  26. #define irled1          LATE,2
  27. #define irport1         PORTA,2
  28. #define irport2         PORTA,3
  29. #define irport3         PORTA,4
  30. #define irport4         PORTA,5
  31. #define irport5         PORTE,0
  32. #define irport6         PORTE,1
  33. #define fet0            LATD,0
  34. #define fet1            LATD,1
  35.  
  36. #DEFINE orajel  D'8000000'              ;mert a kristaly ellenere belso oszcirol megy
  37.  
  38. ;***** VALTOZOK
  39.  
  40. cblock 0x00
  41. TEMPVK1
  42. TEMPVK2
  43. TEMPVK3
  44. endc
  45.  
  46.  
  47. ;**********************************************************************
  48. ORG 0x0000
  49.         goto Start
  50. org 0x0008
  51.         goto interrupt  ;high priority interrupt
  52. org 0x0018
  53.         retfie          ;low priority interrupt
  54.  
  55. ORG 0x002A
  56. ;----------------------------------------------------------- IRQ-k jonnek-----
  57. interrupt:
  58.         bcf INTCON,TMR0IF       ;clear timer0 interupt flag
  59.                  
  60.           mov TMR0H,0ffh
  61.           mov TMR0L,0f2h        ;f2
  62.  
  63.         btg irled1     
  64.         btg irled0     
  65.  
  66. vegeterirq:
  67.         retfie                  ;ret from interrupt
  68.  
  69. ;--------------------------------------------------------------- Progi jon!
  70.  
  71. Start
  72.         mov OSCTUNE, B'01000000'
  73.         mov OSCCON,  B'11110010'
  74.  
  75.         clrf    PORTA
  76.         clrf    PORTB
  77.         clrf    PORTC
  78.         clrf    PORTD
  79.         clrf    PORTE
  80.  
  81.         mov TRISA, B'11111101'  ;irled1
  82.         mov TRISB, B'11100000'  ;zoldled,DAC0
  83.         mov TRISC, B'11110000'  ;DAC1
  84.         mov TRISD, B'11111100'  ;Fet0/1 output
  85.         mov TRISE, B'11111011'  ;re2 irled0
  86.  
  87.         mov ADCON0, B'00000000'
  88.         mov ADCON1, B'00001111' ;all digital i/o
  89.  
  90.         mov TMR0H, 0ffh
  91.         mov TMR0L, 0f2h
  92.         bsf INTCON,TMR0IE
  93.         mov T0CON,B'11001000'   ;16 bit, on, pin source, no prescaler
  94.         bsf INTCON,GIE
(#) morzsa15 hozzászólása Okt 3, 2015 /
 
Sziasztok!

Segítségetekre lenne szükségem. Van ez a programkód azt meglehetne oldani esetleg hogy gomb nyomásra kiírja a maximum illetve a minimum hőmérsékletet?

Köszönöm a segítséget előre is!
(#) matheattila válasza bbalazs_ hozzászólására (») Okt 4, 2015 /
 
Szia, gondolom csak elírtad a fejezet címet, mert ha nem akkor rosszat állítottál be (2.4.6 - RCIO mód). Neked a 2.6.4 fejezet kell (INTOSC), aminek a végén megemlítik, hogy:
"Additionally, the PLL will only function when the selected output frequency is either 4 MHz or 8 MHz (OSCCON<6:4> = 111 or 110). If both of these conditions are not met, the PLL is disabled. The PLLEN control bit is only functional in those internal oscillator modes where the PLL is available. In all other modes, it is forced to ‘0’ and is effectively unavailable."

Amúgy a BORV csak 2 kellene legyen és nem 25...
Leteszteltem mplab-ban a következő kódot (a te beállításaiddal) és minden tökéletesen működik:
  1. #include <p18f4525.h>
  2.  
  3. #pragma config  OSC = INTIO67
  4. #pragma config  PWRT = ON            //Enabled
  5. #pragma config  BOREN = OFF          //Disabled
  6. #pragma config  BORV = 2            //2.5V
  7. #pragma config  WDT = OFF            //Disabled
  8. #pragma config  MCLRE = ON           //Enabled
  9. #pragma config  PBADEN = OFF         //Port B<4:0> digital on RESET
  10. #pragma config  LVP = ON             //Enabled
  11. #pragma config  DEBUG = OFF          //Disabled
  12.  
  13. void main()
  14. {
  15.     OSCTUNE = 0b01000000;
  16.     OSCCON  = 0b11110010;
  17.     TRISD = 0x00;
  18.     LATD = 0x00;
  19.    
  20.     while(1)
  21.     {
  22.             LATD = ~LATD;
  23.     }
  24. }

Ebben a példában minden port kapcsolgatás 4 utasítás ciklus (16 órajel ciklus) ami 32MHz (8MHz x4PLL) esetén 0.5us. Mplab szimulátorában is és Proteus-ban is ennyi, úgy, hogy jók a beállítások.
Ha van oszcilloszkópod akkor próbáld a legegyszerűbb megoldást, csak egy egyszerű port kapcsolgatást és nézzed a jelet, majd ha ez jó akkor jöhet a többi is (megszakítások...).
(#) bbalazs_ válasza matheattila hozzászólására (») Okt 4, 2015 /
 
Koszonom, Attila, persze eliras.
Szkoppal neztem, eppen ez a gondom, hogy akar van pllen, akar nincs, mindig ugyanannyi a megszakitas szamlalojanak futasi ideje.
En egy egyszeru :
bsf portbit
bcf portbit
goto 10
utasitassort alkalmaztam es 1MHz korul mertem a portbit negyszogjelet, ha irq nem volt.

De adja az Uristen, hogy ne a PIC legyen rossz, mert az osszes laba be van forrasztva es o egy DIP44-es tokozasu ize.
(#) don_peter válasza morzsa15 hozzászólására (») Okt 5, 2015 /
 
Feltételezem, hogy tudsz valamennyire programozni.
A lényeg az lenne, hogy kellene 2 globális változót létrehozni, amibe tárolod a maximum és minimum hőmérsékleteket.
Használhatod a PIC Eprom memóriáját is az adatok elmentésére és tárolására, így ha elmegy az áram vagy kikapcsolod a készüléket, akkor sem felejti el az utoljára elmentett minimum és maximum értékeket.

A továbbiakban pedig egy meghatározott időközzel vizsgálgatod az éppen aktuális hőmérsékletet.

A program indulásánál feltöltöd a két változót amit majd a programon belül folyamatosan vizsgálhatsz.
Pl:
  1. unsigned int magas = hominta;
  2. unsigned int alacsony = hominta;

Nyilván az első indulásnál, ha még nincs érvényes adat a PIC memóriájába elmentve, akkor ugyan az lesz az eljárás mint a sima változónál, vagy is fel kell tölteni az aktuálisan mért hőmintával.

Aztán jöhet a mérés és kiértékelés + mentés.
A feltétel rendszert úgy kell megírnod, hogy a méréseknél vizsgálja meg mind a 2 elmentett értéket.
Pl:
  1. if(hominta>magas){    // ha hőminta nagyobb mint az elmentett, akkor elmenti az új magasabb mérést.
  2.         magas = hominta;
  3.         // ide mehet a többi, ha Eprom-ba is mentenéd az új adatot
  4. }else if(hominta<alacsony){    // ha hőminta kisebb mint az elmentett, akkor elmenti az új alacsony hőmérsékletet
  5.         alacsony = hominta;
  6.         // ide mehet a többi, ha Eprom-ba is mentenéd az új adatot
  7. }

Más eseteben kiírod a régit.
A gombnyomásra kiírás meg gondolom menni fog, csak egy sima feltétel.
Pl:
  1. if(!GOMB){    // Ha megnyomjuk a gombot
  2.         where(!GOMB);    // Várakozunk gomb felengedéséig
  3.         // kiírjuk az adatot
  4.         printr("Magas: %i", magas);
  5.         printr("Alacsony: %i", alcsony);
  6. }

Nyilván a változókat típusa aszerint fog változni, hogy miképpen akarod az adatokat kezelni, float, int, char...stb.
A gombnál feltételezem, hogy bemenetként van definiálva és fel van huzva 5v-ra egy 10k-os ellenállással.
Remélem tudtam segíteni.
Én C18-as vagyok, így a kódok struktúrája változhat.
A hozzászólás módosítva: Okt 5, 2015
(#) bbalazs_ válasza bbalazs_ hozzászólására (») Okt 5, 2015 /
 
Valaszolok sajat magamnak. Megneztem az interneten es mas is kuzdott ezzel a problemaval.

A megoldas az, hogy a HULYE mikrocsipp NEM az Internal Oscillatort keri beallitani az Osccon regiszterben, MIKENT AZ AZ ADATLAPBAN SZEREPEL, hanem a Primary Oscillatort.
Mas is szivott miatta es mas is eppen ilyen duhos volt a megoldasra. Am ok meg 2007-ben tettek ezt - azota sem javitottak ki az adatlapban...
(#) Pali79 hozzászólása Okt 5, 2015 /
 
Sziasztok!
Elsősorban Hp41C-hez szól a kérdés, mert az alap program tőle származik, de ha másnak van ötlete, ne tartsa magában!
PIC16F628A-val próbálok összehozni szoftveres I2C kommunikációt, de valamiért nem megy. Rengeteg példaprogramot megnéztem, de egyikkel sem boldogultam. Most a mellékletben lévő progival próbálkoztam, de ez sem működik nálam. A lényege annyi lenne, hogy a START jel után az 10001000 címre elküldi egymás után a forrásban szereplő byte-okat. A mellékelt képen látszik ahogy a PK2 logic analyzer-rel vizsgáltam a jeleket. Az ellenállások a vonalon megvannak, a feszültségek rendben vannak. A kérdés, hogy rontom el?
A hozzászólás módosítva: Okt 5, 2015
(#) Hp41C válasza Pali79 hozzászólására (») Okt 6, 2015 /
 
Kezdetnek annyit látok, hogy az RB4 és RB5 kimenetnek van beálltva az inicializáló részben. Az I2C vonalakat nyitott kollektorosan kell meghajtani. A PIC esetében csak akkor állítjuk kimenetnek, ha alacsony szintet szeretnénk vele tartani a vonalon, magas szint eléréséhez a lábat bemenetnek állítjuk.
(#) Dempsey hozzászólása Okt 6, 2015 /
 
Sziasztok!
Van egy PIC-em ami 3,3V-ról működik és van egy TC35-ös GSM modulom ami szintén 3,3V-os. Jól tudom hogy ebben az esetben nem kell szintillesztés a soros vonalra (Tx/Rx)? Simán összekötöm és kész?
(#) Zsolt2 válasza Dempsey hozzászólására (») Okt 6, 2015 /
 
Siman ossze lehet kotni. Kell ugyelni, hogy a TX/RX labak keresztbe legyenek kotve. TX lab az RX-re es az RX a TX-re.
(#) Dempsey válasza Zsolt2 hozzászólására (») Okt 6, 2015 /
 
Köszi! A keresztbe kötés itt nem működik jelen esetben, mert Tx-Tx, Rx-Rx-el működik. Keresztbe kötés esetén nincs kommunikáció. A szintillesztést azért kérdeztem mert néha hülye karakterek jelennek meg.
(#) Hp41C válasza Pali79 hozzászólására (») Okt 6, 2015 /
 
Az I2C vonalakat közvetlenül kötötted a PICkit2 bemeneteire? A PICkit2 PGC és PGD vonalain 4k7 lehúzó ellenállások vannak. Így a felhúzó ellenállás és a beépített 4k7 egy feszültségosztót képez, ami megakadályozhatja a vonalon a magas szint kialakulását. A cikkben ajánlottam egy 74HC(T)125 meghajtóra épülő illesztőt a PICkit2 elé...
(#) Pali79 válasza Hp41C hozzászólására (») Okt 6, 2015 /
 
Igen közvetlenül kötöttem rá. Olvastam a cikket, tudok az illesztőről, de még nem csináltam meg. Este átállítom a TRIS regisztert bemenetre, kíváncsi leszek, úgy is egyből látszik, hogy működik-e vagy sem.
(#) Pali79 válasza Hp41C hozzászólására (») Okt 6, 2015 /
 
Átállítottam bemenetre a lábakat, de semmi változás. Azon gondolkodtam, hogy az időzítéssel nem lehet-e gond? Nálam a PIC belső 4 MHz-ről megy és a slave adatlapjában max. 100 kbits/s órajel van írva.
(#) Hp41C válasza Pali79 hozzászólására (») Okt 6, 2015 /
 
Meg kellene vizsgálni a jelalakot... Ilyen nincs véletlenül kéznél?
A hozzászólás módosítva: Okt 6, 2015
(#) Pali79 válasza Hp41C hozzászólására (») Okt 6, 2015 /
 
Olyan nincs sajnos, csak egycsatornás digiszkóp.
(#) zotyimotyi hozzászólása Okt 7, 2015 /
 
Sziasztok !

PIC / EPROM-gurukhoz szeretnék szólni

Van egy zenei cuccom (egy Motu Timepiece 8x8 midi interface / USB verzió), amiben a régebbi firmware (2.0.0, amint a képen is látszik, egy Atmel chip) és régebbi "usb chip"-nek nevezett valami (v 1.1) van (állítólag ez egy EPROM, de nincs rajta UV ablakocska..)

..ámde az újabb (2.0.1 firmware és 1.32-es usb chip) az, ami hajlandó Intel procikkal is működni (tehát PC-vel, illetve újabb, Intel-es Mac-kel).

A gyár régebben kínált upgrade-et, de már nem.

Mivel ez így-is úgy-is egy régebbi cucc, nem éri meg súlyos tízezreket költeni ennek a két chipnek a lemásolására, de engem azért érdekelne, hogy egyáltalán meg lehet-e csinálni, milyen chip kéne hozzá, stb..

Csatolok két fotót az én cuccomban lévő két chipről, amiről szó van.

Köszönöm előre is !!

Z
(#) Pali79 válasza zotyimotyi hozzászólására (») Okt 7, 2015 /
 
Ez PIC topik, az Atmel teljesen más tészta.
(#) bbalazs_ válasza zotyimotyi hozzászólására (») Okt 7, 2015 /
 
Meg lehet csinalni PIC-el is, csak a belso program az, ami a lelke az egesznek es ez lemasolhatatlan. Itt elsosorban ezt kell megfizetni. Ha ez ismert lenne, siman atirhato barmilyen, USB-s mikrokontrollerre, pl. PIC-re is..
De maga a hardver nem hiszem, hogy kulonosen bonyolult lenne.
(#) kameleon2 válasza zotyimotyi hozzászólására (») Okt 7, 2015 /
 
Van rá többféle megoldás is. Vannak nyílt MIDI megoldások, Atmelre és PIC-re is. A legjobban akkor járnál, ha kiváltanád egy saját programmal. A MIDI leírása elég precíz, könnyen leprogramozható - hacsak nem valami nagyon spéci a cucc- mert erről kevesebbet írtál. Én egy másik mikrokontrollert - sikerrel úgy is kiváltottam, hogy más gyártó termékét raktam bele egy adapterpanellel. Egy 8bites mikrokontrollert váltottam ki 32 bitessel. Röhögve megcsinálja azt a feladatot, igaz kicsit molyolni kellett a lábak kiosztásával a jelszintekkel és a szoftverrel.
(#) zotyimotyi válasza bbalazs_ hozzászólására (») Okt 8, 2015 /
 
Szia Balázs ! Válaszolok alább, "új hozzászólás"-ban, próbálok képet is csatolni.
(#) zotyimotyi válasza Pali79 hozzászólására (») Okt 8, 2015 /
 
Egy Motu Timepiece-ről van szó (alább csatolok egy fotót a belsejéről, és a két chipről, amiről szó van - az első fotón még látszik a rajtuk lévő fehér címke, ezeket később levakartam, hogy látszódjon a chip-ek típusjelzése).

Az egyik a firmware chip (az Atmel), erre már találtam egy havert, aki viszonylag egyszerűen le tudja másolni. A másik viszont (a vékonyabbik) az "usb chip", a guru haver szerint ez egy mikrokontroller, ami valószínűleg védve van kiolvasás ellen (?).. és azt mondja hogy azt ő nem tudja programozni.. :-/

De gondolom, hogy ez azért nem űrtechnológia.. .. és hátha akad itt valaki, akinek akadnak jó meglátásai / ötletei

A Motu gyárat természetesen már kérdeztem (de nem voltak túlságosan segítőkészek ... )
(#) icserny válasza zotyimotyi hozzászólására (») Okt 9, 2015 /
 
Az ATMEL chip az adatlapja szerint egy egyszer programozható EPROM (64kB). Azért nincs rajta ablak, mert nem törölhető (ennélfogva nem újraírható).

A keskeny chip elvileg lehet Cypress CY7C64013 USB képes mikrovezérlő, de ha nem tudod specifikálni, hogy mit csináljon, akkor egy Snóbli díja programozó sem fogja megírni rá a programot.

Egy biztos: ez a téma ebben a topikba nem való: se nem PIC, se nem kezdőknek való.
Következő: »»   705 / 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