Ir ao conteúdo
  • Cadastre-se

Alane Pontes

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

0
  1. Bom pessoal, obrigada pela ajuda e pelas respostas. Foi bem interessante essa fase com pic. Acabei apredendo muito. A lógica do meu algoritmo final ficou bastante diferente da primeira que mandei para vocês e trabalhei com muita coisa diferente. No mais, obrigada
  2. Bom pessoal, continuo com problemas pra alocar o vetor que eu gostaria, ainda não consigo nem com 250. Coloquei abaixo o meu código refatorado, pra ficar melhor de enteder, também coloquei LINKER SCRIPT que eu fiz. Eu tô usando o MPLABX, como mencionei, e o compilador é o C18. Com 250 elementos no vetor, o MPLABX não me deixa nem compilar e mostra esse erro: CLEAN SUCCESSFUL (total time: 63ms) make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf make[1]: Entering directory 'C:/Users/alane/Documents/escalonadorx.X' make -f nbproject/Makefile-default.mk dist/default/production/escalonadorx.X.production.hex make[2]: Entering directory 'C:/Users/alane/Documents/escalonadorx.X' "C:\Program Files (x86)\Microchip\mplabc18\v3.47\bin\mcc18.exe" -p18F4550 -ms -oa- -I "C:\Program Files (x86)\Microchip\mplabc18\v3.47\bin"\\..\\h -fo build/default/production/escalonador.o escalonador.c make[2]: *** [build/default/production/escalonador.o] Error 3 MPLAB C18 3.47 (feature limited) Copyright 2000-2011 Microchip Technology Inc. make[1]: *** [.build-conf] Error 2 This version of MPLAB C18 does not support the extended mode make: *** [.build-impl] Error 2 and will not perform all optimizations. To purchase a full copy of MPLAB C18, please contact your local distributor or visit buy.microchip.com. WARNING: This version of MPLAB C18 does not support procedural abstraction. Procedural abstraction will not be run. C:\Users\alane\Documents\escalonadorx.X\escalonador.c:33:Error: syntax error nbproject/Makefile-default.mk:102: recipe for target 'build/default/production/escalonador.o' failed make[2]: Leaving directory 'C:/Users/alane/Documents/escalonadorx.X' nbproject/Makefile-default.mk:78: recipe for target '.build-conf' failed make[1]: Leaving directory 'C:/Users/alane/Documents/escalonadorx.X' nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed BUILD FAILED (exit value 2, total time: 399ms) MEU CÓDIGO #include #include #include #include #include /*------------------------------------- * Bits de configuração do PIC18F4550 *--------------------------------------*/ // Oscilador e outras definicoes de registradores #pragma config FOSC = HS // (8 MHz) #pragma config IESO = OFF #pragma config PWRT = OFF #pragma config BORV = 3 #pragma config WDT = OFF #pragma config WDTPS = 32768 #pragma config MCLRE = OFF #pragma config LPT1OSC = OFF #pragma config PBADEN = OFF #pragma config STVREN = ON #pragma config LVP = OFF /** Definação das Constantes: * TAMANHO = Nº DE ELEMENTOS NO VETOR * CABECA_DA_FILA = REFERE-SE AO PONTO DE PARTIDA DO ALGORITMO * ULTIMO_DA_FILA = REFERE-SE AO PONTO FINAL DO ALGORITMO **/ #define TAMANHO 250 #define CABECA_DA_FILA 50 #define ULTIMO_DA_FILA 9999 // Assinaturas das funções imprime(); ssf(int tamanhoVetor, int cabecaDaFila); menuInicial(); inicializarSerial(); //Variáveis globais char mensagem[40]; char *numero; char opcao[1]; // VETOR COM 1000 ELEMENTOS //rom int vetor[TAMANHO] = //{1105,1645,636,58,1014,1136,1507,1917,1981,1020,1646,1537,1382,1873,1906,553,1742,1589,1586,89,1324,187,1827,608,1759,1855,1228,875,1201,590,1400,599,1964,262,682,1884,120,462,731,1058,1008,1960,1208,973,1154,131,279,393,1534,1189,1148,1532,1679,567,1346,1366,578,1294,1985,783,841,709,703,197,1104,358,523,692,141,414,1332,299,646,468,1205,1515,1158,1032,1300,628,1096,597,534,1968,381,1600,755,667,1597,1120,1644,16,1178,675,1046,29,575,1946,973,291,884,1775,1968,692,893,285,1079,140,1020,459,1137,1848,123,31,1571,286,625,1023,1480,1390,1953,776,166,127,729,824,863,11,713,444,1874,1651,1937,233,1832,1941,1026,1555,309,1978,1148,203,1487,298,587,1112,1118,531,1391,1476,1476,1069,66,110,1542,827,793,1400,117,1716,131,677,102,895,668,381,646,410,1607,830,401,318,731,1960,1582,1878,746,868,1065,1906,1438,507,1233,1893,1637,1378,1797,1981,1451,551,306,373,1727,876,1561,1302,228,1721,662,1115,476,1068,894,604,1740,1332,183,146,1136,1733,334,767,1306,571,1768,710,1649,1239,984,1611,1562,332,455,868,677,680,1191,1309,1548,661,667,1732,758,1632,1359,435,926,1827,1583,316,574,1548,878,631,1318,1027,634,1022,364,762,1189,1896,769,707,1124,1743,442,1131,959,509,1341,512,1976,591,855,294,1396,1570,1823,860,1605,1257,161,1560,1682,167,1577,141,1911,988,1327,1419,529,1170,1496,1541,401,1195,759,679,1864,1650,100,1494,437,680,454,1229,638,1919,745,1752,1606,1496,1277,421,760,1202,1967,1086,213,1423,1365,1090,1152,1925,948,611,1908,1079,1651,1181,1938,638,100,734,429,1642,520,1020,750,1554,786,1731,470,1215,1584,192,1159,720,155,1941,684,1799,584,61,1238,807,1111,1595,797,904,1421,1900,244,533,1399,264,861,1776,1302,656,1425,698,1824,1930,617,252,1025,338,957,859,1587,1691,999,243,374,1024,997,621,751,81,1752,1839,651,1503,874,1553,1834,1020,1174,38,329,1533,391,1733,517,1389,1995,103,1824,1730,1263,916,1491,228,1366,1540,1402,1077,672,326,1419,1562,985,706,208,66,954,1073,1023,849,1341,41,410,1452,1405,1198,304,1054,84,1918,486,646,217,1343,878,349,522,1128,1622,1726,535,1037,1443,1437,245,1984,1236,1070,639,1621,367,500,1866,52,1638,620,256,1787,1405,1777,1895,505,1800,772,992,1747,537,1758,1737,1106,264,881,891,28,1934,1010,807,1809,1164,1402,1116,885,1047,1631,1783,997,1385,1653,763,349,822,317,1973,328,833,1197,1790,893,1041,1064,811,225,1842,858,75,726,785,1495,1480,1973,1701,1356,605,1706,26,805,659,455,305,1569,779,1892,338,1338,389,1507,933,418,1845,702,743,1785,75,1894,151,383,455,716,670,9,604,1922,836,633,355,84,47,1492,591,664,334,1796,186,1577,518,1412,751,1816,1733,339,1422,251,1778,343,394,179,266,583,429,1739,1043,1575,50,763,841,338,646,1174,1637,66,208,518,688,167,897,725,706,1016,193,690,1143,269,1818,1772,61,67,1161,1801,546,996,426,1693,141,1125,1219,1255,268,984,792,1286,1101,1810,669,1566,1865,919,857,811,1030,534,1384,1217,1358,923,1362,655,1290,1192,302,138,628,1562,907,631,980,1495,1045,1815,1950,489,1136,1889,526,913,1666,13,1644,700,44,1466,397,254,524,141,850,423,1412,1446,942,859,274,1224,1431,632,364,762,1360,1427,1992,515,1004,179,1052,1607,1783,469,1421,722,1086,559,464,478,496,374,1341,1863,376,297,358,1847,278,1116,64,1749,1158,958,1319,453,1859,1573,57,1086,824,784,946,218,520,478,689,1211,531,1955,157,1791,1799,996,1098,441,973,1480,1622,716,337,916,1192,1058,1290,1703,329,226,1840,485,766,913,1090,442,256,660,170,1848,753,1655,1603,753,1191,1505,1557,127,587,1589,1959,312,1658,67,1943,121,1708,1156,590,433,1977,759,1445,627,1179,1037,1758,697,1451,1025,1944,391,1430,884,1205,1221,1670,1878,1802,1684,132,677,933,540,1949,1071,1698,1496,195,701,1104,1121,882,887,1597,366,1884,157,1070,499,29,562,838,828,1067,386,1524,37,1725,1322,1349,1486,1589,729,1776,1317,1010,54,1986,713,1765,1008,157,148,1690,1601,1,1976,1002,626,1547,203,523,1676,1625,784,543,303,25,284,1520,405,1793,1262,344,430,649,1203,388,501,974,353,63,48,356,299,1083,48,1142,1638,185,455,1990,1574,493,1927,864,790,1268,1436,1457,1450,1250,1854,1512,644,1314,118,1996,162,662,1050,609,1899,1263,450,1590,766,1770,1532,290,1439,617,1312,1485,1778,534,35,890,286,1184,1240,1848,1431,1142,550,1663,1174,949,1786,542,1567,1440,1497,619,1743,74,1497,1028,1149,493,1512,1491,1371,1013,518,1395,1391,271,1872,1823,1616,762,1827,508,527,1453,1531,184,295,1229,1088,1291,196,1362,794,513,1183,1733,1129,1122,1450,26,1605,1576,1333,1617,1054,1367,394,360,468,1563,30,1006,1966,30,1448,472,1991,1798,1362,1666,1329,1530,233,101,1049,1582,423,8,1943,1603,81,1173,1582,156,1131,208,1554,1329,175,487,10,1792,1685,1451,1081}; //rom int vetor[] = {0, 11, 34, 50, 62, 64, 95, 119, 123, 180, 199}; #pragma romdata DATAX //VETOR COM 250 ELEMENTOS rom int vetor[] = {1105,1645,636,58,1014,1136,1507,1917,1981,1020,1646,1537,1382,1873,1906,553,1742,1589,1586,89,1324,187,1827,608,1759,1855,1228,875,1201,590,1400,599,1964,262,682,1884,120,462,731,1058,1008,1960,1208,973,1154,131,279,393,1534,1189,1148,1532,1679,567,1346,1366,578,1294,1985,783,841,709,703,197,1104,358,523,692,141,414,1332,299,646,468,1205,1515,1158,1032,1300,628,1096,597,534,1968,381,1600,755,667,1597,1120,1644,16,1178,675,1046,29,575,1946,973,291,884,1775,1968,692,893,285,1079,140,1020,459,1137,1848,123,31,1571,286,625,1023,1480,1390,1953,776,166,127,729,824,863,11,713,444,1874,1651,1937,233,1832,1941,1026,1555,309,1978,1148,203,1487,298,587,1112,1118,531,1391,1476,1476,1069,66,110,1542,827,793,1400,117,1716,131,677,102,895,668,381,646,410,1607,830,401,318,731,1960,1582,1878,746,868,1065,1906,1438,507,1233,1893,1637,1378,1797,1981,1451,551,306,373,1727,876,1561,1302,228,1721,662,1115,476,1068,894,604,1740,1332,183,146,1136,1733,334,767,1306,571,1768,710,1649,1239,984,1611,1562,332,455,868,677,680,1191,1309,1548,661,667,1732,758,1632,1359,435,926,1827,1583,316,574,1548,878,631,1318,1027,634,1022,364,9999}; #pragma romdata #pragma udata bigdata int vetorAuxiliar[TAMANHO+1]; #pragma udata void main() { inicializarSerial(); menuInicial(); //Limpar sujeira no buffer da serial. sprintf(opcao,"\r\r\r"); getsUSART(opcao, 1); putrsUSART("\r \n"); switch(opcao){ case '1': ssf(TAMANHO, CABECA_DA_FILA); break; case '0': sprintf(mensagem, "Reset...\n\r"); putsUSART(mensagem); Reset(); break; default: sprintf(mensagem, "Opcao invalida\n\r"); putsUSART(mensagem); } } /*Configura e habilita a comunicação serial*/ void inicializarSerial() { OpenUSART( USART_TX_INT_ON & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,51); //putrsUSART("HELLO! "); } void imprime(){ int i; for(i= 0; i < TAMANHO;i ++){ itoa(vetorAuxiliar, numero); putsUSART(numero); putrsUSART(" "); } putrsUSART("|\n "); } void ssf(int tamanhoVetor, int cabecaDaFila){ int deslocamento=0; int auxiliaSwap=0; int menorDeslocamento=0; int posicaoDeMenorDeslocamento=0; int totalDescolamentos=0; int i = 0; int j = 0; /** * Insere a cabeca da fila na primeira posicao do vetor auxiliar **/ vetorAuxiliar[0]=cabecaDaFila; /** * Copia o vetor principal em um vetor auxilia, garantindo que o vetor original * não seja modificado. **/ for(i=1;i<=tamanhoVetor;i++) vetorAuxiliar=vetor[i-1]; /** * Remove do vetor auxiliar a duplicidade da cabeca **/ i = 1; while (vetorAuxiliar != ULTIMO_DA_FILA) { if (vetorAuxiliar == CABECA_DA_FILA) { vetorAuxiliar = vetorAuxiliar[i + 1]; if (vetorAuxiliar != ULTIMO_DA_FILA) vetorAuxiliar[i + 1] = CABECA_DA_FILA; } i++; } /** * A partir da cabeca do vetor, faz comparacao buscando o menor deslocamento, * ao encontrar, leva-o para o inicio do vetor. **/ for(i = 0; i < tamanhoVetor; i++){ menorDeslocamento = 10000; for(j = i+1; j <= tamanhoVetor; j++){ if(vetorAuxiliar > vetorAuxiliar[j]) deslocamento = vetorAuxiliar - vetorAuxiliar[j]; else deslocamento = vetorAuxiliar[j] - vetorAuxiliar; if(deslocamento < menorDeslocamento){ menorDeslocamento = deslocamento; posicaoDeMenorDeslocamento = j; } } totalDescolamentos += menorDeslocamento; // SWAP auxiliaSwap = vetorAuxiliar[i+1]; vetorAuxiliar[i+1] = vetorAuxiliar[posicaoDeMenorDeslocamento]; vetorAuxiliar[posicaoDeMenorDeslocamento] = auxiliaSwap; } putrsUSART("Terminou"); //imprime vetor saida imprime(); } void menuInicial(){ sprintf(mensagem, "1 - Imprimir SSF\n\r"); putsUSART(mensagem); sprintf(mensagem, "2 - Imprimir SCAN \n\r"); sprintf(mensagem, "0 - Reset\n\r"); putsUSART(mensagem); } CÓDIGO REFERENTE AO MAPED LINKER // File: 18f4550_g.lkr // Generic linker script for the PIC18F4550 processor #DEFINE _CODEEND _DEBUGCODESTART - 1 #DEFINE _CEND _CODEEND + _DEBUGCODELEN #DEFINE _DATAEND _DEBUGDATASTART - 1 #DEFINE _DEND _DATAEND + _DEBUGDATALEN LIBPATH . #IFDEF _CRUNTIME #IFDEF _EXTENDEDMODE FILES c018i_e.o FILES clib_e.lib FILES p18f4550_e.lib #ELSE FILES c018i.o FILES clib.lib FILES p18f4550.lib #FI #FI #IFDEF _DEBUGCODESTART CODEPAGE NAME=page START=0x0 END=_CODEEND CODEPAGE NAME=debug START=_DEBUGCODESTART END=_CEND PROTECTED #ELSE CODEPAGE NAME=page START=0x0 END=0x7FFF #FI CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED #IFDEF _EXTENDEDMODE DATABANK NAME=gpre START=0x0 END=0x5F #ELSE ACCESSBANK NAME=accessram START=0x0 END=0x5F #FI DATABANK NAME=gpr0 START=0x60 END=0xFF DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF #IFDEF _DEBUGDATASTART DATABANK NAME=gpr3 START=0x300 END=_DATAEND DATABANK NAME=dbgspr START=_DEBUGDATASTART END=_DEND PROTECTED #ELSE //no debug DATABANK NAME=gpr3 START=0x300 END=0x3FF #FI DATABANK NAME=bigdata START=0x400 END=0x4FF PROTECTED DATABANK NAME=bigdata START=0x500 END=0x5FF PROTECTED DATABANK NAME=bigdata START=0x600 END=0x6FF PROTECTED DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED #IFDEF _CRUNTIME SECTION NAME=CONFIG ROM=config #IFDEF _DEBUGDATASTART STACK SIZE=0x100 RAM=gpr2 #ELSE STACK SIZE=0x100 RAM=gpr3 #FI #FI SECTION NAME=BIGDATA RAM=bigdata
  3. Opa, Isadora, bom, pelo que eu vi até agora, eu tenho de usar um LINKER SCRIPT. Tô usando o MPLAX e o C18. Mas ainda não entendi muito bem como funciona. Você saberia explicar? O código tá nesse link, se você poder dá uma olhada... http://pastebin.com/JN9JXwR8
  4. Boa tarde. Pessoal, estou com problemas em relação a usar todas os blocos de memória do PIC18F4550. Li inúmeros tutoriais, mas nenhum me ajudou completamente em solucionar o problema. Bom, o que acontece é o seguinte: Preciso alocar um vetor de 1000 elementos no PIC. Sem nenhum gerenciamento de memória, eu consigo, no máximo, alocar um vetor de 100 elementos. Tentei alocar a memória com o memset, mas sempre quebra minha aplicação. E outra, o pic tem 32k de memória flash, somente leitura, 2k de SRAM e 256bytes de EEPROM. A ideia que eu tenho é de janelar entre as memórias para poder alocar o vetor de 1000 posições na flash, ir lendo ao poucos a medida que preciso dos dados para fazer mudanças, escrita ou sobreescrita, isso porque estou simulando escalonamento de discos com os algoritmos do SSF e SCAN. Alguém poderia me dar uma luz de como fazer isso? Funções e maneiras de usar. Obrigada, desda ja. Responder
  5. Boa tarde. Pessoal, estou com problemas em relação a usar todas os blocos de memória do PIC18F4550. Li inúmeros tutoriais, mas nenhum me ajudou completamente em solucionar o problema. Bom, o que acontece é o seguinte: Preciso alocar um vetor de 1000 elementos no PIC. Sem nenhum gerenciamento de memória, eu consigo, no máximo, alocar um vetor de 100 elementos. Tentei alocar a memória com o memset, mas sempre quebra minha aplicação. E outra, o pic tem 32k de memória flash, somente leitura, 2k de SRAM e 256bytes de EEPROM. A ideia que eu tenho é de janelar entre as memórias para poder alocar o vetor de 1000 posições na flash, ir lendo ao poucos a medida que preciso dos dados para fazer mudanças, escrita ou sobreescrita, isso porque estou simulando escalonamento de discos com os algoritmos do SSF e SCAN. Alguém poderia me dar uma luz de como fazer isso? Funções e maneiras de usar. Obrigada, desda ja.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...