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   676 / 1210
(#) ativagyok hozzászólása Jún 4, 2015 /
 
..Viszont további kérdések merültek fel:
Terheletlenül nagyon szépen működik, viszont ha a kimenetre rákötök egy FET-et (IRL3803), megint ugrálni kezd. Itt már inkább valami hardveres probléma lehet. Mit tehetek ez ellen?
(#) sonajkniz válasza ativagyok hozzászólására (») Jún 4, 2015 /
 
Szűrd meg a motort. Ha azonos tápon van a motor a PIC-el, még ha a PIC előtt van is stabilizátor, akkor is bezavar.
Itt egy mórickarajz:

PWM.JPG
    
(#) ativagyok válasza sonajkniz hozzászólására (») Jún 4, 2015 /
 
Köszönöm
A motoron van szűrés, más volta a gond. Gyenge volt a pufferkondi, és "megrángatta" a FET a PIC tápját.
(#) Balagemann2031 hozzászólása Jún 7, 2015 /
 
Sziasztok! Egy kis segítségre lenne szükségem! ASM30-ban hogyan tudom címre tenni a pogram memóriába írt táblázatot? .ascii direktívával elhelyezem az értékeket, de szeretném ha fix helyen lenne, nem pedig a porgrammal együtt tolódna ide oda. Előre is köszi!
(#) Pali79 válasza Balagemann2031 hozzászólására (») Jún 7, 2015 /
 
Ha jól értem a kérdést akkor az adott táblázat elején elhelyezett ORG kell neked. Az, hogy milyen értéket kell utána írni, az a pic- től is függ.
(#) patrik81 válasza Hp41C hozzászólására (») Jún 7, 2015 /
 
Megtörtént a kommunkáció.Ha a TXREG-be egy 'c'-karaktert teszek,akkor megjelenik a PCkit2 USART/tools menüjében folyamatosan egy csomó c-betű,de ha TXREG-be RCREG-et teszek,akkor nem látok semmit.Miért?
  1. #include "config.h" //belso orajel 4 MHz
  2.  
  3. void interrupt ISR()
  4. {
  5.     if(PIR1bits.RCIF)//check if receive interrupt has fired
  6.     {
  7.         while(!TXSTAbits.TRMT);//wait until transmit register is empty
  8.         TXREG=RCREG;
  9.         PIR1bits.RCIF=0;
  10.     }
  11. }
  12. int main()
  13. {
  14.     TXSTAbits.TXEN = 1;//enable transmitter
  15.     RCSTAbits.CREN=1;//enable ccontinous receiving
  16.     //configure I/O pins
  17.     ANSEL=ANSELH=0;
  18.     TRISBbits.TRISB5=1;//RX in is input
  19.     TRISBbits.TRISB7=1;//TX pin is input (automatic)
  20.     SPBRG = 5;//set baud rate to 10417 baud
  21.     PIE1bits.RCIE=1;//enable USART receive interrupt
  22.     RCSTAbits.SPEN = 1;//enable USART
  23.    
  24.     INTCONbits.PEIE=1;//enable peripheral interrupts
  25.     INTCONbits.GIE = 1;
  26.    
  27.     while(1);
  28. }
(#) zenetom válasza patrik81 hozzászólására (») Jún 7, 2015 /
 
Szia!
Nem tudom, hogy ilyenkor a C fordító csinál-e hibakezelést, bár szerintem nem.
Az is gyanús, hogy ha "c" betűt küldesz, akkor miért küldi folyamatosan.
Annyit még érdemes lenne megcsinálni, hogy a
  1. PIR1bits.RCIF=0;
rész előtt csinálsz egy ilyet:
  1. RCSTAbits.CREN=0;
  2. Nop();
  3. RCSTAbits.CREN=1;

Illetve az RCREG-et nem közvetlenül rakod bele a TXREG-be, hanem egy segédváltozón keresztül.
De valami azt súgja, hogy máshol lesz a hiba :\

Szerk.: mondjuk USART RX interruptba szerintem nem ajánlatos TX-et rakni. Inkább így lenne illendő: RX megszakításban lemented egy változóba a beérkezett adatot (ADATBE=RXREG), és beállítasz egy változót, pl. JOTTADAT=1;
Ezt pedig figyeled a főciklusban (main), és ha 1 az értéke, akkor kiküldöd a lementett RX értékét, valahogy így:
  1. .
  2. .
  3. .
  4.         JOTTADAT=0;
  5. while (1)
  6.         if JOTTADAT==1
  7.         {
  8.                 TXREG = ADATBE;
  9.                 while(!TXSTAbits.TRMT);//wait until transmit register is empty
  10.                 JOTTADAT=0;
  11.         }
A hozzászólás módosítva: Jún 7, 2015
(#) Balagemann2031 válasza Pali79 hozzászólására (») Jún 7, 2015 /
 
Szia! Az org direktivát 16F és 18F nél használtam, de 24H nál máshogy vannak elvileg, referencia könyvben lehet átsiklottam rajta, de még majd keresem, de ha valakinek eszébejutna, megoszthatja velem
(#) Pali79 válasza Balagemann2031 hozzászólására (») Jún 7, 2015 /
 
Ez van amikor fél infók alapján kérdezel. Illett volna azzal kezdeni, hogy milyen PIC.
(#) Balagemann2031 válasza Pali79 hozzászólására (») Jún 7, 2015 /
 
Írtam hogy ASM30 fordítóval dolgozom.A direktívák a fordítótól függenek, nem a pic típusától.
(#) matheattila válasza Pali79 hozzászólására (») Jún 7, 2015 / 1
 
ASM30-ból azért lehet következtetni, hogy 24 bites PIC-ről van szó
(#) zenetom válasza Balagemann2031 hozzászólására (») Jún 7, 2015 /
 
No, ez nem mindig igaz, de ez esetben részben jogos.
(#) Balagemann2031 válasza Balagemann2031 hozzászólására (») Jún 7, 2015 /
 
Ezt jól kibeszéltük, de ötlete nincs valakinek?
Egyébként a .org direktiva, nem azt csinálja ASM30-ban mint MPASM ben.
A hozzászólás módosítva: Jún 7, 2015
(#) zenetom válasza Balagemann2031 hozzászólására (») Jún 7, 2015 / 1
 
Bővebben: Link

  1. .section kismacska, code, address(0xAA00)
  2.  
  3.      .word 0x1111, 0x2222 ...


Az "address" mögé a zárójelbe kerül gondolom a kezdőcím.
A hozzászólás módosítva: Jún 7, 2015
(#) Balagemann2031 válasza zenetom hozzászólására (») Jún 7, 2015 /
 
Köszönöm, erre van szükségem!
(#) patrik81 válasza zenetom hozzászólására (») Jún 7, 2015 /
 
Szia!
Köszi a választ.
Kezdő vagyok,a segítségeteket kérném.Csak annyit szeretnék csinálni,hogy megmérni egy akármilyen tv távirányító infra jelét,hogy egy LED-et felkapcsoljak.Odáig jutottam,hogy kommunikál a PIC a számítógéppel.Egy betűt kiír.
Kipróbáltam amit írtál,de a Nop-ot nem fogadja el a gép.A JOTTADAT-ot egy megszakítás állítja?Több adat lesz,legalább 16 egymás utáni karaktersorozatra számítok.Azt mind egyből az ADATBE nevű regiszterbe tegyem?Hogy kell?
Gondolom azért írja ki sokszor ugyanazt a betűt,mert az infra vevő adat lába 5V-ot ad ki nyugalmi helyzetben.
(#) zenetom válasza patrik81 hozzászólására (») Jún 7, 2015 /
 
Szia!
A Nop végülis nem is kell oda.. Viszont így már más a helyzet, ha távirányító jelét akarod dekódolni. Az UART-tal nem fog egykönnyen menni, máshogy kell dekódolni. Én anno pl. így "vizsgálgattam": Bővebben: Link szkóp, meg "normális" műszerek nélkül. PIC-kel tömören szólva úgy tudod dekódolni a jelet, hogy megméred mennyi ideig magas, illetve mennyi ideig van alacsony szint. Ha rákeresel az RC5 protokollra, sok okosságot lehet találni. Annyi bökkenő van, hogy amíg az egyik távirányítónal x ideig tart egy impulzus, addig egy másiknál y ideig, úgyhogy érdemes valamilyen mérőeszközzel (akár ahogy én, hangkártya segítségével) megvizsgálni a jelet.
Viszont ez így elsőnek lehet bonyolultan hangzik, de másodjára már nem annyira.
(#) zenetom válasza patrik81 hozzászólására (») Jún 7, 2015 /
 
Na közben végigolvastam az előzményeket (picit megpihentél a projektben! sebaj, én is szoktam ilyeneket csinálni... ). Szóval akkor pontosan mi is lenne a feladat? A dekódolt adatot akarod UART-on elküldeni? Hogyan dekódoltad eddig a jelet?
(#) patrik81 válasza zenetom hozzászólására (») Jún 7, 2015 /
 
próbálkoztam LCD kijelzővel,de nem jött össze.próbálkoztam i2c kommunikációval,de az sem működött.Szerintem a megszakításos méréssel jutottam a legközelebb a megoldáshoz.
(#) zenetom válasza patrik81 hozzászólására (») Jún 7, 2015 /
 
Idézet:
„Szerintem a megszakításos méréssel jutottam a legközelebb a megoldáshoz.”

Szerintem is.
Illetve anno én nem megszakítással csináltam, hanem egy főciklusban kezeltem le az egészet. Egyébként ha megépíted ezt az egyszerű kütyüt: Bővebben: Link (bár én ezt a verziót ajánlom inkább: Bővebben: Link), akkor amit kiír a Girder program, elvileg az lesz maga a kód is, legalábbis nálam megegyezett. De először szerintem valamilyen módszerrel győzödj meg róla, hogy milyen is a kódolása.. Akár a már írt hangkártyás módszerrel..
(#) matheattila válasza patrik81 hozzászólására (») Jún 7, 2015 / 1
 
Mint azt már üzenetben is írtam többször, (mert már lassan egy éve kezdted el), szépen lassan az alapoktól kellene indulni...LED villogtatás (bár ahogy már láttam még az sem működött), megszakítások, timer-ek kezelésének megtanulása, és ha mindezeket már jól begyakoroltad akkor jöhet az infra és a PC.
Mindez nem fog sikerülni ha nem olvasol dokumentációkat is (pl hogy működnek a mikrovezérlők, milyen perifériák vannak benne, melyiket mire használják és hogyan kell kezelni őket, stb.) nameg adatlapokat, protokollokat. Csak egyszerűen innen onnan megszerzett kódból nem fogod megtanulni, ha meg igen akkor már rég olvasnád az infra adatokat számítógépen...
Nem sértésnek mondom (és az üzenetben sem annak vettem) és nem akarom elvenni a kedved, de mint mindnnek ennek si megvan az elméleti része, először a mikrovezérlők lelkivilágát kell megismerni, azután már arra használod őket amire éppenséggel akarod
(#) patrik81 válasza matheattila hozzászólására (») Jún 7, 2015 /
 
Hát igen.Jó nagy falat,pedig olyan könnyűnek tűnt.A LED villogtatás már működik,még a sebességét is tudom változtatni. Nemrég írtam ezt a programot,még a p-betűt is elküldi a számítógépre.
(#) matheattila válasza patrik81 hozzászólására (») Jún 7, 2015 /
 
A main() végére még kell egy while(1); vagy while(1){//egyeb programrész} különben állandóan újrakezdi az egészet!...
A megszakításban nem a legjobb megoldás csak úgy adatot írni a TXREG-be (mi történik, ha még nem találta elküldeni a régi adatot...) inkább állíts be egy flag-et majd a while(1)-ben figyeled és ha '1' akkor ellenörzöd, hogy befejezte már a régi küldést és ha igen csak akkor írj bele újabb adatot (ahogy az előző programodban volt)...
Ezért mondogatom folyton, hogy utána kéne olvasni, hogy mit miért és hogyan...
(#) hawrlantb hozzászólása Jún 9, 2015 /
 
Sziasztok.

Az ebayen kapható pickit3 megfelelő PIC18F14K22 programozásához. Van véleményetek ezekről a programozókról?

Bővebben: Link
Bővebben: Link

Még kezdő vagyok a témában, úgyhogy elkel a segítség.

Köszönöm
A hozzászólás módosítva: Jún 9, 2015
(#) eSDi válasza hawrlantb hozzászólására (») Jún 9, 2015 /
 
Üdv!

Természetesen jó hozzá. Feltéve, ha a klónozás jól sikerült, mert kb fél áron szerintem csak klónt lehet venni újonnan. Másrészt a második link az PICKit2, ami gyárilag fekete burkolatú, tehát ez biztosan klón. Inkább tegyél hozzá még egy kis pénzt és vásárold meg innen ChipCAD az eredetit, biztos ami biztos.
(#) ativagyok hozzászólása Jún 10, 2015 /
 
Sziasztok!
Egy PIC16F630-as mikrovezérlőt PICKit3-mal programozva ezt a hibaüzenetet kapom:
Idézet:
„Programming failed at EE Data address 0x0006”

Ez az EEPROM hibájára utalhat? Lehetséges, hogy helytelen kódhasználattal tönkretettem az EEPROM-ot?
Köszönöm előre is.
Üdv,
Ati
(#) ybanez hozzászólása Jún 10, 2015 /
 
Üdv Hölgyek-Urak!
Kis segítséget kérnék PIC ügyben. Munka miatt egy ideje nem PICeltem, azóta gépet is cseréltem, egyszóval telepítettem ezt a ... MPlabX-t. No, ez nem akar velem szóbaállni. A saját examplekat megnyitja, remek. Az én régebbi (máig működő) projektjeimet már nem, sebaj, max rebuild. De már új projektet sem enged létrehozni! Kell ezt a cuccot esetleg aktiválni? Vagy esetleg valami kezesebb alternatívája van? Egyelőre ott tartok, hogy felgyújtom...
(#) eSDi válasza ybanez hozzászólására (») Jún 10, 2015 /
 
Üdv!

Ha nem Assembly-ben programozol, hanem C-ben, akkor azt külön kell telepíteni hozzá. A többinek mennie kellene. Aktíválni nem kell, csak a C fordítókat, ha megvetted valamelyik bővített változatát. Én ennyit tudtam segíteni (remélem), mert én csak az IPE-t használom belőle.
(#) ybanez válasza eSDi hozzászólására (») Jún 10, 2015 /
 
Hello!
"Természetesen" assembly. De gyanítom, hogy az OS bibije lesz ez. MPlab 8-as még ment rendesen XP alatt. Most W8.1 van fenn, ezzel akadhat össze. Holnap újra próbát teszek kompatibilitás módban, ha nem akkor teszek fel képernyőképet. Hátha az okosabb embereknek többet mond...
(#) eSDi válasza ybanez hozzászólására (») Jún 10, 2015 /
 
Az MPLAB X Java alapú és ezért szinte minden OS alatt működik. Így a Win8.1 nem lehet akadály, esetleg valami elérési úttal lehet valami baja, ami az XP alatt más volt.
Következő: »»   676 / 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