Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   606 / 1319
(#) trudnai válasza googa hozzászólására (») Nov 16, 2009 / 1
 
Idézet:
„LVP off-ban van. A jelenség akkor jelentkezik többször, ha PICKIT2-ről tápolom. Ha külső tápról megy, akkor többször beindul Most pl. fixen világít a LED-sor. Kicsit kilátástalan...”


A PICkit2 max nehany tiz mA-t kepes leadni. A sok LED meg a tobbi periferia szepen lerantja a tapot, es PIC resetel...
(#) googa válasza trudnai hozzászólására (») Nov 16, 2009 /
 
Elképzelhető... Valahogy kinyomozom.
(#) bubu hozzászólása Nov 16, 2009 /
 
Sziasztok!

Lenne egy kérdésem.
MCC18-ban szeretnék USART-ot programozni. Találtam hozzá ha jol tudom ebben a fórumban segítséget, de nem megy nekem. Egy pdf doksiban volt benne... Mi lehet a gond? Mi a baja a hosszal?
A hibaüzenet a következő:
Idézet:
„Error - section 'bigdata' can not fit the section. Section 'bigdata' length=0x0000011e”

A kód:
  1. #include "p18f45k20.h"
  2. #include "usart.h"
  3.  
  4. #pragma config FOSC = HS
  5. #pragma config WDTEN = OFF
  6. #pragma config LVP = OFF
  7. #pragma config DEBUG = ON
  8.  
  9. //
  10. void rx_handler (void);
  11.  
  12. #define BUF_SIZE 25
  13.  
  14. #pragma idata bigdata
  15. char data[11] [BUF_SIZE+1] = {
  16.         {       "String #0\n\r" },
  17.         {       "String #0\n\r" },     
  18.         {       "String #0\n\r" },
  19.         {       "String #0\n\r" },
  20.         {       "String #0\n\r" },
  21.         {       "String #0\n\r" },
  22.         {       "String #0\n\r" },
  23.         {       "String #0\n\r" },
  24.         {       "String #0\n\r" },
  25.         {       "String #0\n\r" },
  26.         {       "Invalid key (0-9 only)\n\r"}
  27. };
  28. #pragma idata
  29.  
  30. #pragma code rx_interrupt=0x8
  31. void rx_int (void)
  32. {
  33.         _asm goto rx_handler _endasm
  34. }
  35. #pragma code
  36.  
  37. #pragma interrupt rx_handler
  38. void rx_handler (void)
  39. {
  40.         unsigned char c;
  41.         /*karakter fogadása az UART-rol*/
  42.         c = ReadUSART();
  43.         if (c>= '0' && c<= '9')
  44.         {
  45.                 c -= '0';
  46.                 /*Az ertek kijelzese a ledeken*/
  47.                 PORTD = c;
  48.                 /*A kappott karakter erteket kitesszuk az UART-ra*/
  49.                 putsUSART(data[c]);
  50.         }
  51.         else
  52.         {
  53.                 /*a hiba string kijelzése*/
  54.                 putsUSART (data[10]);
  55.                 PORTD = c;
  56.         }
  57.         /* Clear the interrupt flag */
  58.         PIR1bits.RCIF = 0;
  59. }
  60. //------------------------------------------------------------------------------------
  61.  
  62. void main (void)
  63. {
  64.         /*A D port kimenetre konfigurálása*/
  65.         TRISD = 0x00;
  66.         /*
  67.          *Open the USART configurated as
  68.          *8N1, 2400 baud, in polled mode
  69.          */
  70.         OpenUSART    (  USART_TX_INT_OFF &
  71.                                         USART_RX_INT_OFF &
  72.                                         USART_ASYNCH_MODE &
  73.                                         USART_EIGHT_BIT &
  74.                                         USART_CONT_RX &
  75.                                         USART_BRGH_HIGH, 103);
  76.         /*DISPLAY PROMT TO USART*/
  77.         putrsUSART ((const far rom char*)"\n\rEnter a digit 0-9!\n\r");
  78.        
  79.         /*Enable interrupt priority*/
  80.         RCONbits.IPEN = 1;
  81.        
  82.         /*Make receive interrupt high priority*/
  83.         IPR1bits.RCIP = 1;
  84.  
  85.         /*Enable all high priority interrupts*/
  86.         INTCONbits.GIEH = 1;
  87.        
  88.         /*infinity loop*/
  89.         while(1);
  90. }


Bármilyen segítséget szívesen veszek!
Mindenkinek előre is köszönöm!

üdv, bubu9
(#) trudnai válasza Kriss hozzászólására (») Nov 16, 2009 /
 
Idézet:
„Egyébként hogyan kellett volna írni vagy mit kellene ahhoz változtatni, hogy a program megfeleljen a relocation mód szabályainak?”


Linker script cikk angolul

Korabban itt irtam
(de keresessel mas ehhez kapcsolodo hozzaszolasokat meg fogod talalni)
(#) icserny válasza Kriss hozzászólására (») Nov 16, 2009 /
 
Nagyon(!) leegyszerűsítve:
1. linker script használata
2. "CBLOCK cím" helyett UDATA_ACS (az Access Bank-nak)
3. ORG helyett CODE a programnak.

Olvasgasd a MASM és a Linker leírását és a Helpjét!
(#) trudnai válasza bubu hozzászólására (») Nov 16, 2009 /
 
Nme fer bele a tombod a bigdata nevu szekcioba. Hogy nez ki a linker scripted? A C18 manualban amugy le van irva, hogy hogyan kell nagy toboket definialni -- azt atnezted?
(#) bubu válasza trudnai hozzászólására (») Nov 16, 2009 /
 
Hu azt nem, de máris utána nézek!
Köszi!
(#) Kriss válasza trudnai hozzászólására (») Nov 16, 2009 /
 
Végülis megírtad a cikket belőle? Mert ha igen én szivesen elolvasnám!
(#) trudnai válasza Kriss hozzászólására (») Nov 16, 2009 /
 
Idézet:
„Végülis megírtad a cikket belőle? Mert ha igen én szivesen elolvasnám!”


A linken ott van -- Angolul... Ide a HE-re nem irtam meg Magyarul ha erre gondolsz. Meg a masik, hogy igazandibol egy masodik resz is tartozna hozza amit sohasem fejeztem be, az a haladoknak szolna, tobb modulbol allo programok ill overlayed memoria teruletek hasznalatarol szolna -- ha lesz idom befejezem azt is.
(#) watt válasza googa hozzászólására (») Nov 17, 2009 /
 
BOR élesítve van? (kapcsold ki!). Mekkora ellenállásokkal hajtod a 8 LED-et? MCLR hogyan van bekötve(kapcsold ki!)? IC táplábain 100n kerámia? Esetleg a programot csatolhatod...
(#) googa válasza watt hozzászólására (») Nov 17, 2009 /
 
Sziasztok! BOR ki van kapcsolva. 1K ellenállások vannak a ledeken. Az MCLR, csak a PICKIT programozó tüskére volt kivezetve, de tagnap már azt is kikapcsoltam. Ha ma haza érek meló után, akkor az ajánlás szerint be is kötöm. 100 nano megvan, a táp stabil, minden normálisnak mondható.
A program a mikrobasic (by: mikroE) nevű cuccban készült, de az tuti, hogy jó. Én leginkább elkallódott regiszterekre gondolok, vagy talán kapcsolási hiba lesz.
Minden esetre a legnyugtalanítóbb jelenség az, hogy megkapja tápot és vagy elindul, vagy nem. Ha meg elindul, akkor meg is hal és úgy is marad... (Mondom, talán az mclr lógása volt a hiba, de már konfigból kikapcsotlam és továbbra is ez van.) Lassan már sírni fogok
(#) trudnai válasza googa hozzászólására (») Nov 17, 2009 /
 
MCLR-nek semmikepp sem szabad lognia, meg akkor sem ha az ki van kapcsolva -- errol mar volt szo itt. Tul azon az MCLR-t nem szabad kozvetlen felkotni, azt felhuzni kell egy ellenallassal (10k-20k kornyeken), kulonben konnyen latch-up jelenseg keletkezhet.

Arrol is szo volt mar, hogy az osszes labnak vagy aktiv kimenetnek, vagy analog bemenetnek, vagy felhuzott ill. aktivan hajtott digitalis bemenetnek kell lennie. (Epp ezert kell az MCLR-t mindenkepp felhuzni, mert vagy azert, mert MCLR-kent viselkedik, vagy azert mert digitalis input es nincs belso felhuzoja...)

Azt az eltevedt regiszteres megjegyzest nem egeszen ertem, ha Mikro Basic-ben van irvva, akkor hogy tevedhetsz el -- PORTA helyett STATUS-t irsz a forrasban vagy hogy? Compiler hibara gyanakodsz?
(#) googa válasza trudnai hozzászólására (») Nov 17, 2009 /
 
Szia! Köszönöm, hogy vetted a fáradtságot és újra leírtad azt, amit akár meg is kereshetem volna. Az ilyen embereket nagyon tudom tisztelni!
Mindenképpen fel fogom kötni az MCLR-t, mégpedig ellenállással és diódával, meg kondival, mint ahogy azt a PICKIT leírása javasolja.
Az eltévedt regiszterek alatt azt értettem, hogy talán van néhány bit, a regisztereknél amik nem úgy indulnak, ahogy azt én várom...de ez csak bla-bla a részemről.
Egyébként szeretem azt a mikrobasic környezetet, csak jól ki kell tapasztalni mindent előre. Bár ez mindenre igaz! Este jelentkezem!
(#) potyo válasza googa hozzászólására (») Nov 17, 2009 /
 
A diódával csak óvatosan, mert az is tud problémát csinálni. Inkább maradj csak az egyszál 4k7-10k közötti ellenállásnál.
(#) googa válasza potyo hozzászólására (») Nov 17, 2009 /
 
Oké, vettem az adást
(#) pako hozzászólása Nov 17, 2009 /
 
Üdvözletem!
Egy PIC24HJ256GP610-ről lene szó. Az egyik kimeneten szükségem lenne egy 10-13 MHz körüli órajelre. Az Output Compare modult be lehet úgy állítani, hogy ekkora frekin menjen?
7.37MHz-es belső FRC oszciról megy + a PLL (ha jól sejtem ebben is 4X-ezi a frekit, de ezt az adatlap nem írja)
(#) watt válasza pako hozzászólására (») Nov 17, 2009 / 1
 
Ha jól látom, akkor ha a PRy regiszterbe 3-at teszel és az előosztó 1, valamint az FCy 40MHz, akkor a kijövő freki 10MHz lesz. Nézd meg az ide vonatkozó részt az adatlapban(EQUATION 14-1 142.oldal)
(#) pako válasza watt hozzászólására (») Nov 17, 2009 /
 
A PRy regiszterrel nem is foglalkoztam, ez volt a baj.
Sikerült kihoznom ~11MHz-et. A kimenő jelalak elég ronda, majdnem szabályos háromszög. Ezek a beállítások kellettek hozzá:
T2CON=$8000
PR2=1
OC2R=0
OC2RS=0
OC2CON=$0005

Kösz a segítséget!
(#) icserny válasza pako hozzászólására (») Nov 17, 2009 /
 
Idézet:
„7.37MHz-es belső FRC oszciról megy + a PLL (ha jól sejtem ebben is 4X-ezi a frekit”

Nem, a négyszerezés a PIC24F családnál van. A PIC24HJ család más felépítésű, inkább a dsPIC30-dsPIC33 vonulatra hasonlít.
A PIC24HJ Family Refrence Manual mintaprogramja alapján én így állítottam be a PIC órajelét:
Konfigurálás:
  1. _FOSCSEL(FNOSC_FRC);
  2. _FOSC(FCKSM_CSECMD & OSCIOFNC_OFF);

Főprogram elején az inicializálás:
  1. // PLL elő- és utószámláló és osztó beállítása
  2.    PLLFBD = 41;           // M = 43
  3.    CLKDIVbits.PLLPOST=0;  // N1 = 2
  4.    CLKDIVbits.PLLPRE=0;   // N2 = 2
  5.    // Órajelgenerátor átkapcsolása: belső FRC és PLL
  6.    __builtin_write_OSCCONH(0x01);
  7.    __builtin_write_OSCCONL(0x01);
  8.    // Megvárjuk az átkapcsolást
  9.     while (OSCCONbits.COSC != 0b001) {};
  10.     // Megvárjuk a PLL beállását
  11.     while(OSCCONbits.LOCK!=1) {};

Ezzel Fosc névleges értéke 79,22 MHz, az Fcy utasításfrekvencia ennek a fele, 39,61 MHz. Ha ennél pontosabb beállításkell (pl. UART használat), akkor hangolni lehet a belső oszcillátort (_TUN=xxx) ahol xxx egy előjeles kis szám.

Fontos, hogy OSCCON a fenti módon írható csak, direktben nem!
(#) pako válasza icserny hozzászólására (») Nov 17, 2009 /
 
Köszi az infót, egyre jobban kezd tetszeni ez a PIC család. 18F-esek után kész svédasztal amit ez tud.
Későbbiekben szükségem lesz az UART-ra is, de ahhoz már külső órajelet fogok használni. Az FRC-t csak addig használom, amíg kiismerem a lelki világát ennek a típusnak.
(#) steev hozzászólása Nov 18, 2009 /
 
Sziasztok!

Összekapcsoltam egy PICet - PCvel USB-n keresztül. A rendszer ipari környezetben működik, de az USB kapcsolat nem stabil, sokszor nem lehet csomagot küldeni a PIC felé, mert a PCs szoftver writefile hibaüzenetet küld (USB HID módban használom). A hálózati feszülségben jelentős ingadozások vannak.

Szerintetek alkalmas-e az USB ipari környezetben történő használatra? Vagy inkább az RS232 lenne a jobb megoldás?

Köszi előre is.

(#) bbalazs_ válasza steev hozzászólására (») Nov 18, 2009 /
 
Hany meter kabellel?
Biztos, hogy a kabelnel van a zavarforras?
A panel be van burkolva lagyvas dobozba?
Az erzekelo vezeteken at nem szedhet be vmi zavart?
Az USB kabel gagyi kinai vagy tisztessegesen arnyekolt darab?
Miert HID, miert nem sima soros?

Szerintem jonak kellene lennie.
(#) trudnai válasza steev hozzászólására (») Nov 19, 2009 /
 
Idézet:
„Szerintetek alkalmas-e az USB ipari környezetben történő használatra? Vagy inkább az RS232 lenne a jobb megoldás?”


Hat olyan szempontbol jobb az RS232, hogy az +-12V-tal dolgozik, igy talan kevesbe hajlamos a zavarok felszedesere. (marmint ha igazi RS232 van, nem valami gagyi, ujabb gepekben levo csalas, mert nemelyik +-5V-tal megy amit manapsag kapni). Ezenkivul a soros kommunikacio a sebesseget le lehet venni, igy talan a kabel indukcios es kapacitiv hibai kevesbe jonnek elo kevesebb baud mellett (meg a kabel impednanciaja is kevesbe zavar be). Azonkivul ketsegkivul megvan az az elonye is, hogy akar modemen keresztul is lehet uzemeltetni es igy a keszuleked akar lehet a varos masik vegen is...

Probalkozhatsz RS485-tel is ha nagyon kell -- de amugy ha teszel a geped ele egy ipari zavarszurot (ami minden normalis(tm) UPC-ben benne kell legyen, de lehet akar kulon is kapni ilyeneket), akkor talan megbizhatobb mukodest tudsz elerni. Csak ne olcso ESD vedelem legyen benne, hanem olyan ami galvanikusan valasztja el a halozattol a computered, ill. aminel feszultseg stabilizatorral allitjak elo a folyamatos es stabil 230V-ot.
(#) steev válasza bbalazs_ hozzászólására (») Nov 19, 2009 /
 
A kábel nincs egy méter, viszont nincs árnyékolása és a doboz is műanyag.
Az egész kütyü irodában működik azért gondoltam
hogy nem vesz hogy nem lesz gond a zavarjelekkel.
Azért HID, mert meg volt már írva az elődje a programnak és így nem kellett átírni.

Az érzékelőről jöhet zavar az áramkör felé (bár az árnyékolt kábel).

Trudnai:
Meg fogom próbálni a hálózati zavarszűrőt és ha az sem segít következik a soros átvitel.

Köszi a hsz-t mindkettőtöknek
(#) googa hozzászólása Nov 19, 2009 /
 
Kedves Watt, Trudnai és többiek. Sikerült elindítanom a kis művemet. Valóban okozott problémát a szabadon garázdálkodó MCLR láb, még a letiltás ellenére is.
Volt még a problémák tetézéséhez olyan vékonyan megszakadt vezetősávom is, hogy csak kimérés után találtam rá és akkor sem akartam elhinni. Meg a B-portomon van egy olyan halott lábam, ami csak gyors változástatás estén nem működik rendesen. Szerencsére volt még egy szabad lábam, amit fel tudtam használni az eredeti célra. Köszi a figyelmet és a segítségeket!
(#) googa hozzászólása Nov 19, 2009 /
 
...és akkor most tiszta lappal folytatnám az érdeklődést. De ez már egy felnőttebb probléma lesz.
Bizonyos adatokat, mondjuk txt formátumban (FAT16) mentek egy SD kártyára a PIC-el. Ez már működik.
Mi a feltétele annak, hogy egy USB képes PIC-el meghajtóként vegyek részt egy PC életében és ott ezeket a fájlokat lássam?
Ez driver oldali feltétel, vagy PIC program oldali feltétel, vagy vegyes? Kicsit segítsetek, hogy megtaláljam a helyes utat. Köszönöm előre is!
(#) trudnai válasza googa hozzászólására (») Nov 19, 2009 /
 
Idézet:
„Mi a feltétele annak, hogy egy USB képes PIC-el meghajtóként vegyek részt egy PC életében és ott ezeket a fájlokat lássam?”


Egy un. Mass Storage tipusu eszkozt kell megvalositanod a PIC-en, biztosan talalsz hozza kesz megoldasokat is. Minden modernebb operacios rendszernek kell tudnia kezelni ezt, legfeljebb jon a buborek, hogy uj eszkoz, de a hozza tartozo drivert automatan be kell tudnia regisztralni, tehat neked nem kell kulon irni ilyet.
(#) googa válasza trudnai hozzászólására (») Nov 19, 2009 /
 
Köszi! Ha ez így van, ahogy mondod, akkor nagyon jó lesz a jövőben, mert idomulni kellene a windows-on kívül, a Linuxhoz és a MAC-hez is. Ez utóbbi azért elég távol állt tőlem ezidáig. Majd meglátjuk!
(#) morgan666 hozzászólása Nov 20, 2009 /
 
Hello,

egy pic18f4620-as mikrocontrollert progizok es arra szeretnek rajonni, valaszt kapni, hogy a Configuration bits -nel mit jelent a Table Read Protect Boot mezo allitasa. A picos18-at raktam fel ra es nem mukodik ha ez az opcio nincs Disablere teve. Harom napomba telt mig rajottem

elore is koszi
(#) watt válasza morgan666 hozzászólására (») Nov 20, 2009 /
 
Vagy egy boot terület(lásd adatlap), amit olvasás ellen védeni lehet. Beprogramozod, és ha a védelem aktív, akkor nem lehet kiolvasni. De ez a lehetőség a többi területre is rendelkezésre áll. A picos18-ról lila gőzöm sincs, hogy mi, és miért csinálja, hogy nem engedi ezt a mezőt védeni.
Következő: »»   606 / 1319
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