Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   606 / 1320
(#) 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!