Ir ao conteúdo
  • Cadastre-se

Drosah

Membros Plenos
  • Total de itens

    11
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

0

Sobre Drosah

  • Data de Nascimento 19/04/1991 (29 anos)

Informações gerais

  • Cidade e Estado
    Salvador
  1. Estou pensando em montar um PC dedicado tanto para trabalho quando para uso pessoal, devo usar Linux em dual boot com o Windows para eventualidades. Os programas que vou usar no PC são: - MATLAB (Esse é o meu principal programa de trabalho, faço muita simulações no Simulink e inteligência artificial, portanto preciso de um processador com uma quantidade de núcleos razoável e muita memoria RAM, o PC do trabalho tem 32 gb de RAM, mas eu pretendo colocar 64 pensando no futuro) - VS Code (Programar, escrever textos no LaTeX, Python, etc) - Python (Basicamente as bibliotecas de inteligencia artificial e big data) - Autocad (No Windows) - Outras ferramentas de engenharia elétrica (OpenDSS, programas da Cepel, etc) - VirtualBox (Para virtualizar o windows quando eu não queira dualboot) - Emuladores (Do wii, Nintendo Switch, e outros da Nintendo) Estou pensando em investir em um SSD NMVe, pois sempre tive HDD e os programas que eu uso (Principalmente o MATLAB) demoram muito para abrir, queria sentir o gostinho de um SSD. Não irei fazer Overclock nem nada do tipo. OBS.: Tem muito tempo que eu montei meu último PC, e sou meio leigo em relação a essas novas tecnologias. Meu orçamento máximo é de 10k. Setup: Eu fiz uma pesquisa rápida e montei o seguinte setup (OBS: Os que não tem indicação eu tirei da Kabum): Armazenamento: SSD Adata Falcon, 1TB, M.2 PCIe, Leituras: 3100MB/s e Gravações: 1500MB/s* - R$ 899,99 placa-mãe: ASRock H370 Pro4, Intel LGA 1151, ATX, DDR4** - R$ 876,90 Processador: Intel Core i7-9700K Cache 12MB, 3.6GHz (4.9GHz Max Turbo), LGA 1151*** - R$ 2599,90 Memórias: Corsair Vengeance LPX 64GB - (4x16GB) 2666Mhz - CMK64GX4M4A2666C16W - R$ 1975,90 Cooler do processador: DeepCool Intel/AMD GAMMAXX 400 Silente 120mm**** - R$ 129,90 Gabinete: Gabinete Gamer Mid Tower SI-5100 EN58348 Preto AEROCOOL**** - R$ 261,27 (Americanas) Placa de video: Asus Arez Dual AMD Radeon RX 580 OC Edition, 8GB - R$ 1499,90 Fonte: Deepcool 600W, 80 Plus Bronze - R$ 417,90 Wi-fi/Bt: Wi-fi Dual Band 2.4/5ghz 600 M Bluetooth 4.0 5g (Chipset: )****** - R$ 244,90 (Mercado Livre) Total: 8906,56+Frete Observações: Gostaria que verifiquem a compatibilidade dos componentes e alguma sugestão de troca de componente. Abaixo segue algumas observações: * Armazenamento: Estou pensando em investir em um SSD NMVe, pois sempre tive HDD e os programas que eu uso (Principalmente o MATLAB) demoram muito para abrir, queria sentir o gostinho de um SSD. ** placa-mãe: Eu escolhi esta placa-mãe, pois segundo o que diz no site ela tem suporte à módulos Wi-fi, mas se tiver algo mais em conta eu agradeço. *** Processador: Eu escolhi processador Intel, porque as placas mãe na minha pesquisa aparentava ter mais recursos, mas se a AMD tiver melhor custo benefício e tiver uma placa-mãe compatível com meu setup eu mudo sem problemas e edito o tópico (Eu ouvi falar que a nova geração da AMD usa 7mm enquanto Intel tá em 14nm ainda). **** Cooler do processador: Na minha época vinha um cooler na caixa do processador, mas pelo que eu vi agora não vem mais então eu comprei esse, mas se vier na caixa me avisem que eu tiro, porque atualmente não estou interessado em overclock. ***** Gabinete: Quero um gabinete com a tampa transparente para facilitar na manutenção e limpeza e que não tenha entrada de ar no topo (Ou que pelo menos possa esconder esta entrada de ar do topo), pois eu tenho um gato que adora ficar em cima das coisas. Verificar se os componentes são compatíveis com o gabinete e se há a necessidade de comprar fan frontal. OBS: Se houver um gabinete melhor com estas características e que esteja abaixo de 400, indicar. ****** Wi-fi/Bt: Quero uma solução que rode em Linux e seja integrada ao próprio PC, segundo o vendedor do ML e minha pesquisa esse chipset tem compatibilidade. PS: Me indiquem lojas para eu fazer uma pesquisa mais profunda. O Google Shopping só me recomenda Kabum, Amazon, Americanas e Mercado Livre. OBS1: Não quero comprar de muitos vendedores diferentes, porque eu moro no Acre e o frete daqui é mais caro que o normal. OBS2: Me indiquem se é necessário comprar algum componente extra como abraçadeiras ou pasta térmica, eu tenho um kit de chave de fenda aqui em casa, gostaria de comprar tudo online, porque aqui na minha cidade a maioria dos lugares estão fechados por causa do covid.
  2. Amigo, você vai no iniciar e lá na pasta do proteus e clique na pasta virtual usb depois clique em instalar, se você tiver no windows xp vai funcionar direitinho.
  3. Oi ele liga o led sim, modifiquei o código pra o led piscar e funcionou também. Já girei o potenciometro devagar e ficou na mesma, já utilizei o código do LCD.c original e inclusive uma versão do C18. Acho que o LCD é o problema. Não cheguei a testar com outro microcontrolador ainda.
  4. Oi como é que eu uso LAT em CCS? De qualquer forma grato irei testar com outro PIC da familia 16. Oi, coloquei um potenciometro e nada =x Continua a mesma coisa. Os quadrados sumiram, mas não apareceu a palavra.
  5. Eu também estou, queria acrescentar informações ao meu tópico e não conseguir
  6. O display LCD 16x2 simplesmente não transfere os dados. Aparece aqueles quadrados pretos na 2a linha do LCD. entretanto na simulação funciona perfeitamente. Eu tô usando o PIC 18f4550. E uso uma custom LCD.h. Existe um LED ligado a uma saída B7. Eu testei com o LCD.c da Microchip e aconteceu a mesma coisa. O LCD está no modo Nibble. O datasheet do LCD é: http://www.sparkfun.com/datasheets/LCD/GDM1602K.pdf Modelo: 1602GD1622Y (16x2 com backlight) #include <18F4550.h> #define TOLERANCIA 230 #fuses NOWDT,NOPROTECT #fuses NOMCLR #fuses INTRC_IO #use delay(INTERNAL=4M) #include <LCD16x2.h> void main(){ int luminosidade=0; setup_ADC_ports(ALL_ANALOG); setup_adc(ADC_CLOCK_INTERNAL); lcd_init(); while(1){ set_adc_channel(0); //Acerta o canal para o A0 // delay_ms(50); luminosidade=read_adc(); delay_ms(20); printf(lcd_putc,"Ola mundo."); if (luminosidade>TOLERANCIA) output_low(PIN_B7); else output_high(PIN_B7); } } Código do LCD.h // flex_lcd.c // These pins are for the Microchip PicDem2-Plus board, // which is what I used to test the driver. Change these // pins to fit your own board. #define LCD_DB4 PIN_D7 #define LCD_DB5 PIN_D6 #define LCD_DB6 PIN_D5 #define LCD_DB7 PIN_D4 #define LCD_E PIN_B2 #define LCD_RS PIN_B4 #define LCD_RW PIN_B3 // If you only want a 6-pin interface to your LCD, then // connect the R/W pin on the LCD to ground, and comment // out the following line. #define USE_LCD_RW 0 //======================================== #define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines #define lcd_line_two 0x40 // LCD RAM address for the 2nd line int8 const LCD_INIT_STRING[4] = { 0x20 | (lcd_type << 2), // Func set: 4-bit, 2 lines, 5x8 dots 0xc, // Display on 1, // Clear display 6 // Increment cursor }; //------------------------------------- void lcd_send_nibble(int8 nibble) { // Note: !! converts an integer expression // to a boolean (1 or 0). output_bit(LCD_DB4, !!(nibble & 1)); output_bit(LCD_DB5, !!(nibble & 2)); output_bit(LCD_DB6, !!(nibble & 4)); output_bit(LCD_DB7, !!(nibble & 8)); delay_cycles(1); output_high(LCD_E); delay_us(2); output_low(LCD_E); } //----------------------------------- // This sub-routine is only called by lcd_read_byte(). // It's not a stand-alone routine. For example, the // R/W signal is set high by lcd_read_byte() before // this routine is called. #ifdef USE_LCD_RW int8 lcd_read_nibble(void) { int8 retval; // Create bit variables so that we can easily set // individual bits in the retval variable. #bit retval_0 = retval.0 #bit retval_1 = retval.1 #bit retval_2 = retval.2 #bit retval_3 = retval.3 retval = 0; output_high(LCD_E); delay_cycles(1); retval_0 = input(LCD_DB4); retval_1 = input(LCD_DB5); retval_2 = input(LCD_DB6); retval_3 = input(LCD_DB7); output_low(LCD_E); return(retval); } #endif //--------------------------------------- // Read a byte from the LCD and return it. #ifdef USE_LCD_RW int8 lcd_read_byte(void) { int8 low; int8 high; output_high(LCD_RW); delay_cycles(1); high = lcd_read_nibble(); low = lcd_read_nibble(); return( (high<<4) | low); } #endif //---------------------------------------- // Send a byte to the LCD. void lcd_send_byte(int8 address, int8 n) { output_low(LCD_RS); #ifdef USE_LCD_RW while(bit_test(lcd_read_byte(),7)) ; #else delay_us(60); #endif if(address) output_high(LCD_RS); else output_low(LCD_RS); delay_cycles(1); #ifdef USE_LCD_RW output_low(LCD_RW); delay_cycles(1); #endif output_low(LCD_E); lcd_send_nibble(n >> 4); lcd_send_nibble(n & 0xf); } //---------------------------- void lcd_init(void) { int8 i; output_low(LCD_RS); #ifdef USE_LCD_RW output_low(LCD_RW); #endif output_low(LCD_E); delay_ms(15); for(i=0 ;i < 3; i++) { lcd_send_nibble(0x03); delay_ms(5); } lcd_send_nibble(0x02); for(i=0; i < sizeof(LCD_INIT_STRING); i++) { lcd_send_byte(0, LCD_INIT_STRING[i]); // If the R/W signal is not used, then // the busy bit can't be polled. One of // the init commands takes longer than // the hard-coded delay of 60 us, so in // that case, lets just do a 5 ms delay // after all four of them. #ifndef USE_LCD_RW delay_ms(5); #endif } } //---------------------------- void lcd_gotoxy(int8 x, int8 y) { int8 address; if(y != 1) address = lcd_line_two; else address=0; address += x-1; lcd_send_byte(0, 0x80 | address); } //----------------------------- void lcd_putc(char c) { switch(c) { case '\f': lcd_send_byte(0,1); delay_ms(2); break; case '\n': lcd_gotoxy(1,2); break; case '\b': lcd_send_byte(0,0x10); break; default: lcd_send_byte(1,c); break; } } //------------------------------ #ifdef USE_LCD_RW char lcd_getc(int8 x, int8 y) { char value; lcd_gotoxy(x,y); // Wait until busy flag is low. while(bit_test(lcd_read_byte(),7)); output_high(LCD_RS); value = lcd_read_byte(); output_low(lcd_RS); return(value); } #endif
  7. Tô com o mesmo problema =x Eu tô usando o PIC 18f4550. E uso uma custom LCD.h. Eu testei com o LCD.c da Microchip e aconteceu a mesma coisa. Existe um LED ligado a uma saída B7, ele acende quando eu comento o código do LCD, mas não acende quando eu deixo o código do LCD e nem o LCD funciona. Código do LCD.h
  8. Oi estou fazendo um trabalho de cálculo numérico para calcular o zeros de funções reais. Esse trabalho recebe como parâmetro os termos das funções que pode ser exponencial, logaritmica e polinomial (este último já feito - mais detalhes nesse post: http://forum.clubedohardware.com.br/erro-funcao-pow/1044854) Eu chamei as funções exponenciais e logaritmicas de funções transcedentes. E eles tem como parâmetro a matriz 3D, sendo TERMOS_MAX uma constante definida com #define. termos_transcendentes[2][TERMOS_MAX][3] Algumas considerações termos_transcendentes[0] <-> refere-se aos termos da função exponencial termos_transcendentes[1] <-> refere-se aos termos da função logaritmica termos_transcendentes[a][termos] <-> termos refere-se aos termos da função. Exemplo: f(x)=4*3^3x+2*3^5x <-> Essa função tem 2 termos 4*3^3x e 2*3^5x OBS: Entenda que a é um valor arbitrário termos_transcendentes[a][termos][0]<->constante do termo. termos_transcendentes[a][termos][1]<->base do termo. termos_transcendentes[a][termos][2]<->expoente do termo. Eu tô querendo fazer uma função para declarar os valores dessa matriz 3D. Segue ela: #define TERMOS_MAX 4 ... const char *nome_termos_exponencial[]={"Constante","Base","Expoente"},*nome_termos_logaritmo[]={"Constante","Base","Logaritmando"}; ... void ler_funcao_transcendente(float *termos[],int quant_termos,int tipo){ int i,j; for (i=0;i<=quant_termos;j++) for (j=0;j<=2;i++){ printf("Digite o %s do termo %d",tipo==1?nome_termos_exponencial[j]:nome_termos_logaritmo[j],i+1); scanf("f",termos[i][j]); } } void main(){ ... float coeficientes_polinomio[TERMOS_MAX+1],termos_transcendentes[2][TERMOS_MAX][3]; ... for(i=0;i<=1;i++) ler_funcao_transcendente(termos_transcendentes[i],quantidade_termos[i+1],i+1); ... A IDE (Visual C++ express 2010) diz que existe um erro na declaração de termos_transcendentes, segundo ela os tipos de dados não é compatíveis. Mas termos_transcendentes não é equivalente à um apontador para uma matriz2D? Quando eu faço isso com arranjos funciona, mas não com matrizes. Resumindo: Preciso de uma função para modificar (declarar os valores na matriz) uma matriz2D. Eu consigo resolver o problema com as seguintes modificações: void ler_funcao_transcendente(float *termos,int quant_termos,int tipo){ int i,j; for (i=0;i<=quant_termos;j++) for (j=0;j<=2;i++){ printf("Digite o %s do termo %d",tipo==1?nome_termos_exponencial[j]:nome_termos_logaritmo[j],i+1); scanf("f",termos+i*i*TERMOS_MAX+j); } } ... for(i=0;i<=1;i++) ler_funcao_transcendente(&termos_transcendentes[0][0][0]+i*TERMOS_MAX*3,quantidade_termos[i+1],i+1); Mas acho que isso é uma gambiarra, fora que fica muito mais complexa a notação. Alguma outra sugestão?
  9. Funcionou, grato
  10. Olá, sou novo aqui, me cadastrei porque tô tendo problemas com a função de potência pow em c. Estou fazendo um trabalho de cálculo numérico. O trabalho consiste em cálcular zeros de funções algébricas. Estou fazendo a fase de isolamento das raízes, para isso preciso executar a seguinte fómula: L=1+(coeficiente/an)^(1/(ordem-expoente)) Ou: L=1+raiz(coeficiente/an,ordem-expoente) Em outras palavras quero utilizar uma raiz cujo o índice é dado por ordem-expoente. Para isso utilizei a função de potência que existe na biblioteca math.h e criei a seguinte função: float calculo_limite_polinomio(int ordem, float an, float coeficiente, int expoente){ return 1.0+pow(coeficiente/an,float(1.0)/float(ordem-expoente)); } O problema é que dá um erro na hora que eu compilo o código: Tô usando o visual c++ 2010 express. Não tentei compilar no dev ainda, mas eu prefiro que funcione no visual porque tem um debug muito melhor e agiliza na construção do código. ATUALIZADO: Conseguir driblar o erro: float calculo_limite_polinomio(int ordem, float an, float coeficiente, int expoente){ float indice; indice = 1.0/(ordem-expoente); return 1.0+pow(coeficiente/an,indice); } Mas se eu por assim não funciona: float calculo_limite_polinomio(int ordem, float an, float coeficiente, int expoente){ //float indice; //indice = 1.0/(ordem-expoente); return 1.0+pow(coeficiente/an,float(1.0/(ordem-expoente))); } Alguém sabe a explicação para isso. PS: No dev também não conseguir compilar =x

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...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!