Ir ao conteúdo
  • Cadastre-se

Pesquisar na Comunidade

Mostrando resultados para as tags ''PIC''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Categorias

  • Armazenamento
  • Áudio
  • Energia
  • Entrada
  • Feiras e Eventos
  • Gabinetes
  • Memória
  • Museu
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Rádio CdH
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Armazenamento
  • Áudio
  • Câmeras
  • Computadores
  • Consoles
  • Eletrônicos
  • Energia
  • Entrada
  • Gabinetes
  • Impressão
  • Jogos
  • Memória
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Livros disponíveis
  • Livros esgotados

Fóruns

  • Mensagens do Clube do Hardware
    • Regras gerais
    • Boletins do Clube do Hardware
    • Notícias da administração
  • Hardware
    • Recomendações de computadores
    • Placas de vídeo
    • Placas-mãe e chipsets
    • Processadores
    • Problemas de gargalo e desempenho
    • Memórias
    • Armazenamento
    • Refrigeração e superaquecimento
    • Fontes e energia
    • Gabinetes e casemods
    • Placas de som e áudio on-board
    • Periféricos
    • Mac
    • Overclock
    • Hardware - outros
  • Computação móvel
    • Notebooks
    • Tablets
    • Smartphones e apps
  • Redes e Internet
    • Redes e Internet
    • Hospedagem de sites e registro de domínios
  • Segurança da informação
    • Remoção de malware
    • Dúvidas sobre invasões e infecções
    • Programas de proteção
  • Programação e desenvolvimento
    • Java
    • C/C#/C++
    • Pascal/Delphi
    • .NET
    • Bancos de dados
    • Programação web
    • Programação - iniciantes
    • Programação de microcontroladores
    • Programação - outros
  • Software
    • Jogos
    • Pacotes de escritório
    • Computação distribuída (Folding@Home, Bitcoin etc.)
    • Virtualização
    • Design, animação e tratamento de imagens
    • Edição de áudio e vídeo
    • Programas
  • Sistemas Operacionais
    • Recomendação de sistemas operacionais
    • Windows
    • GNU/Linux, BSD, Unix-like e software livre
  • Eletrônicos
    • Equipamentos de som, home theaters e gravadores de mesa
    • Televisores e projetores
    • Câmeras e filmadoras
    • Players portáteis
    • Consoles (videogames)
    • GPS
    • Telefonia fixa
    • Eletrônica
    • Retrocomputação
  • Outros
    • Recomendações de serviços e lojas
    • Preços e promoções
    • Notícias
    • Bolsa de empregos, certificações e mercado de trabalho
    • "Causos"
    • Encontros de usuários
    • Feira do Rolo
  • Clube do Hardware
    • Comentários, elogios, críticas, sugestões e questões sobre o Clube do Hardware
    • Comentários de artigos
    • Fórum para testes de funcionalidades

Categorias

  • Hardware
  • Redes
  • Eletrônica
  • Sistemas operacionais

Encontrar resultados em...

Encontrar resultados que...


Data de criação

  • Iniciar

    FIM


Última atualização

  • Iniciar

    FIM


Filtrar pelo número de...

Data de registro

  • Iniciar

    FIM


Grupo


Caixas de som

Encontrado 123 registros

  1. Boa a tarde a todos. Estou com problemas nas minhas portas ADC's, um leitura esta influenciando nas outras, estou usando 3 saídas ADC (PIC18F4550). Uma pra medir tensão, e as outras duas temperatura de diferentes coisas. Mas toda vez que uma delas é modificada, as outras também são influenciadas. Queria saber como corrigir esse erro. Alguém sabe me dizer? Estou usando o pino de referencia GND do Pic //======== tensão ===========// Media = 0; for(y=0;y<=38;y++){ delay_us(100); Media = Media + adc_get_sample(0);} q1 = (media/38); p1 =(q1*5)/1023.0; q2 = p1*4.0; FloatToStr_FixLen(q2,txtV,5); if(q2<10&&Lim){lm = 0x01; Lim = 0x00;} if(q2>10)Lim = 0x01; //=============================== // Leitura do Ferro de Solda leds = adc_get_sample(3); leds = leds/1.33; leds = leds+27; ferr0_ = leds ; IntToStr (leds,leds_string); //TEMPERATURA DO DISSIPADOR tmp1 = adc_get_sample(1); tmp1 = tmp1*500; tmp1 = tmp1/1023; tempC= tmp1; IntToStr(tmp1,txtTe); //PWM cooler if(tempC >30 && tempC <35)cooler = 50; else if(tempC >35 && tempC <40)cooler = 150; else if(tempC >40){cooler = 200; Per = 0x01; LED = 0x01;} else if(tempC <30){cooler = 0; if(Per)lm = 0x01; Per = 0x00; LED = 0x00;}
  2. Boa noite, encontrei esse projeto na internet: Não entendo de programação mas fiz essas adaptações: coloquei um led sempre que o RX recebe com código correto, e está simulando perfeito. Porém o projeto original é pra o PIC 16F628a e eu só troquei a library no compilador e funcionou, só que tô tentando fazer o PORTC funcionar e nada...aqui estão os códigos que eu tô usando e o esquema no Proteus 8.6: TX: #chip 16F877A, 4 #define TX PORTA.0 'Define o pino RA0 como TX Dir TX Out 'Define TX como saída Dir PORTA.1 In 'Define PORTA.1 como entrada Dir PORTA.2 In 'Define PORTA.2 como entrada Dir PORTA.3 In 'Define PORTA.3 como entrada Dir PORTA.4 In 'Define PORTA.4 como entrada Dir PORTB in 'Define todo o PORTB como entrada Dir PORTC in Do Codigo.1 = PORTA.1 'Copia o valor do pino RA1 para o bit 1 da variável Código Codigo.2 = PORTA.2 'Copia o valor do pino RA2 para o bit 2 da variável Código Codigo.3 = PORTA.3 'Copia o valor do pino RA3 para o bit 3 da variável Código Codigo.4 = PORTA.4 'Copia o valor do pino RA4 para o bit 4 da variável Código Dado = PORTB 'Copia o valor do PORTB para a variável Dado Dado1 = PORTC Transmita 'Chama a sub-rotina para transmitir o dado Loop Sub Transmita ' 01 é igual a 1 ' 10 é igual a 0 'Inicio da transmissao 'Rotina para transmitir pulso longo TX = 1 Wait 2000 us TX = 0 Wait 100 us If Codigo.0 = 1 Then Transmita1 Else Transmita0 end if If Codigo.1 = 1 Then Transmita1 Else Transmita0 end if If Codigo.2 = 1 Then Transmita1 Else Transmita0 end if If Codigo.3 = 1 Then Transmita1 Else Transmita0 end if If Codigo.4 = 1 Then Transmita1 Else Transmita0 end if If Codigo.5 = 1 Then Transmita1 Else Transmita0 end if If Codigo.6 = 1 Then Transmita1 Else Transmita0 end if If Codigo.7 = 1 Then Transmita1 Else Transmita0 end if If Dado.0 = 1 Then Transmita1 Else Transmita0 end if If Dado.1 = 1 Then Transmita1 Else Transmita0 end if If Dado.2 = 1 Then Transmita1 Else Transmita0 end if If Dado.3 = 1 Then Transmita1 Else Transmita0 end if If Dado.4 = 1 Then Transmita1 Else Transmita0 end if If Dado.5 = 1 Then Transmita1 Else Transmita0 end if If Dado.6 = 1 Then Transmita1 Else Transmita0 end if If Dado.7 = 1 Then Transmita1 Else Transmita0 end if If Dado1.0 = 1 Then Transmita1 Else Transmita0 end if If Dado1.1 = 1 Then Transmita1 Else Transmita0 end if If Dado1.2 = 1 Then Transmita1 Else Transmita0 end if If Dado1.3 = 1 Then Transmita1 Else Transmita0 end if If Dado.4 = 1 Then Transmita1 Else Transmita0 end if If Dado1.5 = 1 Then Transmita1 Else Transmita0 end if If Dado1.6 = 1 Then Transmita1 Else Transmita0 end if If Dado1.7 = 1 Then Transmita1 Else Transmita0 end if end sub Sub Transmita1 TX = 0 Wait 100 us TX = 1 Wait 100 us end sub Sub Transmita0 TX = 1 Wait 100 us TX = 0 Wait 100 us end sub RX: #chip 16F877A, 4 #define RX PORTA.0 'Define o pino RA0 como RX para receber a transmisão Dir RX In 'Define a RX como entrada Dir PORTA.1 In 'Define o pino RA1 como entrada Dir PORTA.2 In 'Define o pino RA2 como entrada Dir PORTA.3 In 'Define o pino RA3 como entrada Dir PORTA.4 In 'Define o pino RA4 como entrada Dir PORTB Out 'Define todo PORTB como saida Dir PORTC out Wait 10 ms 'Zera variáveis CodigoLocal = 0 Do '============================================================================= 'Identifica Pulso de 2000 ms para iniciar a leitura do dado '============================================================================= Inicio: Contador = 0 'Zera contador Volta: If RX = 1 Then 'Testa se o sinal está em nível alto Contador = Contador + 1 'Incrementa contador wait 15 us 'Aguarda 15 microsegundos Goto Volta 'Volta para testar o pulso novamente End if 'Fim da rotina If If Contador < 95 Then 'Se contador menor que 95, cancela e volta p/ Inicio Goto Inicio end if 'Se contador maior que 95, receba o dado '============================================================================= Receba 'Chama sub-rotina para receber o dado DecodificaManchester 'Chama sub-rotina para decodificar o dado recebido DadoRecebido = dado 'Salva valor do dado recebido 'Verificar codificação dadoA = codigoA 'Copia o codigoA na variável dadoA para decodifica-lo usando a sub-rotina DecodificaManchester dadoB = codigoB 'Copia o codigoA na variável dadoA para decodifica-lo usando a sub-rotina DecodificaManchester DecodificaManchester 'Chama sub-rotina para decodificar o Código recebido CodigoRecebido = dado 'Salva valor do codigo recebido 'Lendo o código local CodigoLocal.1 = PORTA.1 'Copia o estado do pino RA1 no bit 1 da variável CodigoLocal CodigoLocal.2 = PORTA.2 'Copia o estado do pino RA2 no bit 2 da variável CodigoLocal CodigoLocal.3 = PORTA.3 'Copia o estado do pino RA3 no bit 3 da variável CodigoLocal CodigoLocal.4 = PORTA.4 'Copia o estado do pino RA4 no bit 4 da variável CodigoLocal 'Verifica se é o código correto If CodigoLocal = CodigoRecebido Then PORTB = DadoRecebido end if 'Se o código é correto, então PORTB recebe o valor do dado recebido. If CodigoLocal = CodigoRecebido Then PORTD.0 = 1 wait 100 ms PORTD.0 = 0 end if Loop Sub Receba Wait 145 us 'Aguarda 145 microsegundo para sincronizar os pulsos codigoA.0 = RX Wait 100 us codigoA.1 = RX Wait 100 us codigoA.2 = RX Wait 100 us codigoA.3 = RX Wait 100 us codigoA.4 = RX Wait 100 us codigoA.5 = RX Wait 100 us codigoA.6 = RX Wait 100 us codigoA.7 = RX wait 100 us codigoB.0 = RX Wait 100 us codigoB.1 = RX Wait 100 us codigoB.2 = RX Wait 100 us codigoB.3 = RX Wait 100 us codigoB.4 = RX Wait 100 us codigoB.5 = RX Wait 100 us codigoB.6 = RX Wait 100 us codigoB.7 = RX Wait 100 us dadoA.0 = RX Wait 100 us dadoA.1 = RX Wait 100 us dadoA.2 = RX Wait 100 us dadoA.3 = RX Wait 100 us dadoA.4 = RX Wait 100 us dadoA.5 = RX Wait 100 us dadoA.6 = RX Wait 100 us dadoA.7 = RX Wait 100 us dadoB.0 = RX Wait 100 us dadoB.1 = RX Wait 100 us dadoB.2 = RX Wait 100 us dadoB.3 = RX Wait 100 us dadoB.4 = RX Wait 100 us dadoB.5 = RX Wait 100 us dadoB.6 = RX Wait 100 us dadoB.7 = RX End sub Sub DecodificaManchester If dadoA.0=1 Then If dadoA.1=1 Then GOTO erro MyData_recebendo.0 = 0 else If dadoA.1=0 Then GOTO erro MyData_recebendo.0 = 1 end if If dadoA.2=1 Then If dadoA.3=1 Then GOTO erro MyData_recebendo.1 = 0 else If dadoA.3=0 Then GOTO erro MyData_recebendo.1 = 1 end if If dadoA.4=1 Then If dadoA.5=1 Then GOTO erro MyData_recebendo.2 = 0 else If dadoA.5=0 Then GOTO erro MyData_recebendo.2 = 1 end if If dadoA.6=1 Then If dadoA.7=1 Then GOTO erro MyData_recebendo.3 = 0 else If dadoA.7=0 Then GOTO erro MyData_recebendo.3 = 1 end if If dadoB.0=1 Then If dadoB.1=1 Then GOTO erro MyData_recebendo.4 = 0 else If dadoB.1=0 Then GOTO erro MyData_recebendo.4 = 1 end if If dadoB.2=1 Then If dadoB.3=1 Then GOTO erro MyData_recebendo.5 = 0 else If dadoB.3=0 Then GOTO erro MyData_recebendo.5 = 1 end if If dadoB.4=1 Then If dadoB.5=1 Then GOTO erro MyData_recebendo.6 = 0 else If dadoB.5=0 Then GOTO erro MyData_recebendo.6 = 1 end if If dadoB.6=1 Then If dadoB.7=1 Then GOTO erro MyData_recebendo.7 = 0 else If dadoB.7=0 Then GOTO erro MyData_recebendo.7 = 1 end if dado = MyData_recebendo end sub erro: Goto Inicio end esquema está em .rar projeto 877a.rar
  3. Estou desenvolvendo um projeto de robótica e nada mais é que a programação do PIC18F4550 (https://www.embarcados.com.br/proton-pic18f4550/) para alimentar as portas da ponte H em certos momentos. Não tenho muito conhecimento e experiencia nessa área, fiz o começo dessa programação para testes iniciais com os motores, compilou, mas não esta funcionando na pratica, a corrente não esta chegando na ponte H pelas portas que eu defini. Pode ser algo na programação? Programação.txt
  4. Estou programando no MPLAB e quero passar pra placa que esta meu PIC, ela tem porta USB B, qual software posso usar para passar do MPLAB para o PIC?
  5. Olá preciso variar o duty cycle do pwm, de acordo com uma entrada ADC via potenciometro, o problema é que preciso variar a escala do potenciometro e de acordo com a tensão o pwm varia. Por exemplo de 0 á 1,25v do ADC(pot) duty cycle vai de 0 á 77%, de 1,26 a 2.25v, duty cycle varia de 77 a 35%. Me ajudem se puder, segue código fonte. #include "config.h" // Inclui o arquivo config.h #include "delay_pic18.h" // Inclui o arquivi delay_pic18.h #include "LCD4b.h" // Inclui o arquivo LCD4b.h #include <xc.h> // Inclui o arquivo header xc.h #include <stdio.h> // Inclui o arquivo stdio.h #include <pic18f4550.h> // Inclui biblioteca do PIC18F4550. int adc = 0; // Variável de armazenamento da conversão ADC float resultado, conversao; // Váriaveis de casa decimais para conversão do ADC 0 Á 1023 P/ 0 Á 5V float tensão, calculo; // Váriaveis de casa decimais para conversão do PWM 0 Á 255 P/ 0 Á 5V int porcentagem; // Váriaveis de casa decimais para valores em porcentagem (%) de 0 á 100% do resultado do PWM void main(void) { // Função Principal //------------------------------------------------------------------------------------------------------------------// //Definição dos I/O's (Input/Output) ADCON1 = 0x0F; // Desabilita todos os canais A/D TRISB = 0b00000000; // Define todo o PORTB como sáida TRISBbits.TRISB3 = 0; // CCPR2L (saida para led) TRISAbits.RA0 = 1; // Define a PORTAN0 como entrada analógica PORTBbits.RB3 = 0; // Começa desligado a saida PORTB = 0b00000000; // Começa desligado todas as saídas dos pinos do PORTB //------------------------------------------------------------------------------------------------------------------// //Registradores configurados da entrada ADC-AN0(via/Potenciomêtro) ADCON0 = 0b00000001; /* Bit´s 7 e 6 = 0 -Não utilizados * CHS<3:0> = 0001 - Seleçção do canal analógico AN0 * GO/DONE = 0 -Conversão A/D não iniciada * ADCON = 1 -Módulo A/D habilitado */ ADCON2 = 0b10000111; /*ADFM = 1 -Resultado da conversão justificada á direita. * Bit 6 - Não utilizado * ACQT<2:0> = 0 - 0 TAD * ADCS<2:0> = 111 - Oscilador Interno para A/D */ //------------------------------------------------------------------------------------------------------------------// //Registradores configurados para uso do PWM via TIMER2 pela saída CCPR2L = PORTB.RB3 CCP2CON = 0b00001100; // Modo PWM PR2 = 255; // Frequência 250Hz > entre 0 e 255 T2CONbits.T2CKPS = 0b10; // Prescaler do timer 2 em 1:16 T2CONbits.TMR2ON = 1; // Incia o PWM CCPR2L = 0; // inicia em 0 duty cycle //------------------------------------------------------------------------------------------------------------------// //Texto de apresentação do Projeto lcd_ini(); // Inicializa o Display LCD 16X2 lcd_envia_byte(0, 0x81); // Posiciona o cursor na coluna 1 da linha 1 printf("SIST.ROBOTICOS"); // Escreve no display LCD lcd_envia_byte(0, 0xC0); // Posiciona o cursor na coluna 0 da linha 2 printf("MECATRONICA-2018"); // Escreve no display LCD __delay_ms(2000); // Aguarda 2 segundos lcd_envia_byte(0, 0x01); // Limpa o dispaly LCD __delay_ms(20); // Aguarda 20 milisegundos lcd_envia_byte(0, 0x80); // Posiciona o cursor na coluna 0 da linha 1 printf("DUTY-CYCLE:"); // Escreve no dispaly LCD lcd_envia_byte(0, 0x8B); // Posiciona o cursor na coluna 11 da linha 1 printf(" 000"); // Escreve no display LCD lcd_envia_byte(0, 0xC0); // Posiciona o cursor na coluna 0 da linha 2 printf("ADC(V):"); // Escreve no display LCD lcd_envia_byte(0, 0xCB); // Posiciona o cursor na coluna 11 da linha 2 printf("0000"); // Escreve no display LCD __delay_ms(2000); // Aguarda 2 segundos //------------------------------------------------------------------------------------------------------------------// //Entrada do loop infinito while (1) { // loop infinito __delay_ms(50); //------------------------------------------------------------------------------------------------------------------// //Conversão de 0 á 5V do ADC ADCON0bits.GO = 1; // Inicia a conversão A/D while (ADCON0bits.GO); // Aguarda a finalização da conversão adc = ADRESH; // Armazena a parte alta do resultado em ADC adc = (adc << 8 + ADRESL; /* Desloca 8 bit's á esquerda e soma com a * parte baixa do resultado da conversão A/D. */ //------------------------------------------------------------------------------------------------------------------// //ADC resultado = conversao * 1; // Multiplica o resultado da variável anterior para obter as casa decimais desejadas. conversao = adc * 5.0 / 1023; // Converte de 0 a 1023, para valores de Tensão(V) 0 á 5V (Potenciometro) //------------------------------------------------------------------------------------------------------------------// //PWM calculo = CCPR2L * 5.0 / 255; // Converte de 0 a 255, para valores de Tensão (V) 0 á 5V (PWM TIMER2) tensão = calculo * 1; // Ajusta as casas decimais da conversão //------------------------------------------------------------------------------------------------------------------// //PWM(%) porcentagem = calculo * 100 / 5.0; // Converte os valores de tensão para valores em porcentagem (%) de 0 á 100% //------------------------------------------------------------------------------------------------------------------// // Atualização do display LCD com os valores da conversão do PWM/ADC lcd_envia_byte(0, 0x80); // Posiciona o cursor na coluna 0 da linha 1 printf("DUTY-CYCLE: %03d", porcentagem); // Escreve no display LCD lcd_envia_byte(0, 0x8f); // Posiciona o cursor na coluna 0 da linha 1 printf("%c", 37); // Escreve no display LCD % de acordo com a tabela ASC|| lcd_envia_byte(0, 0xC0); // Posiciona o cursor na coluna 0 da linha 2 printf("ADC-AN0(V): %04.2f", conversao); // Escreve no display LCD //------------------------------------------------------------------------------------------------------------------// CCPR2L = adc; /* if(CCPR2L > 255){CCPR2L = 0x00;} if(CCPR2L < 0){CCPR2L = 255;} if ((conversao >= 0.0) && (conversao <= 1.25)); { CCPR2L = 196; } if ((conversao >= 1.26) && (conversao <= 2.5)); { CCPR2L = 81; } if ((conversao >= 2.51) && (conversao <= 3.75)); { CCPR2L = 109; } if ((conversao >= 3.76) && (conversao <= 5)); { CCPR2L = 229; } */ } }
  6. Olá a todos. To com sérios problemas com um MAX6675 e comunicação SPI. Mano do céu, se tem um coisa que sou, é leigo com essa negocio de I2C e SPI. RX/TX até vai. Mas Enfim... Só quero comunicar ele com meu pic e fazer aparecer no lcd a temperatura medida, só preciso que me ajudem com o código, porque eu realmente não sei muito de SPI. Quem pode me ajudar, ficaria muito agradecido. Obrigado <3
  7. Boooa noite meu povo. É o seguinte, estou com 74HC164 aqui, e vou usar suas saídas porque é mais viável passar 4 fios do que passar 10 fios pro outro lado do quarto . Comunicação ok, ja está funcionando, mas acontece, que não sei como mudar um único bit, sem ter que dizer todas as vezes como eu quero que os outro 7 bits fiquem. Tipo um PORT de um PIC, se eu quiser mudar uma unica saída, eu só vou lá e digo que "RD0 = 1", E pronto, não mudei em nada nos outros pinos. Mas via SPI eu não to conseguindo fazer isso. Eu tenho que mandar todas as vezes o valor que eu quero em todas ás 8 saídas do 74HC164, e no que eu estou usando ele, não dar pra fazer isso. Tipo, vamos dizer que meu Buffer está com 0b1000000, e eu só quero mudar o valor do ultimo zero, e quero que o valor do primeiro, continue sendo 1, ta beleza, é só eu mandar 0b1000001, SÓ QUE, o primeiro bit nunca vai ter como eu saber como ele está, porque ele sempre vai mudar de acordo com a temperatura do LM aqui, então se eu mandar 0b10000001 e o primeiro tivesse em zero, eu vou força ele a ser 1 bugando todo os resto do código que dizia q ele era 0, porque ele tanto pode está em 1 ou como em 0. Eu só quero manter o valor dele seja ele qual for, e mudar todos os outros 7 da mesma forma. Sempre que eu alterar um bit, ele manter os outros como estão. PFV me ajudem nisso, não sei se me explique da melhor forma, então se tiver alguma duvida me avise. Obrigado a todos
  8. Olá, boa noite a todos. Então, do seguinte, to com uma duvida enquanto a uma fonte ajustável via PWM. Estou montando uma, e não sei se faço via PWM de um pic, ou pelo LM317. Sem duvidas seria bem melhor pelo pic, porque não teria necessidade de usar um Potenciômetro(dois no caso, um pro ajuste fino e outro pelo grosso). Ia ser controlado por dois botões, com variação de 0.08mV. Mas minha duvida é. Tem perigo de alguma coisa q eu for ligar na saída dessa fonte que possa dar algum bug por conta da frequência que esse circuito iria oscilar por conta do PWM, ou é melhor o LM317 mesmo? Obrigado pela atenção
  9. Olá Malta, Já algum tempo (anos )que nao programo e estou meio que enferrujado, estou a tentar fazer um programa simples um programa aonde tenho 3 botões um para incrementar tempo outro decrementa tempo e outro arranca o temporizador, apos arrancar o temporizador este faz um tempo de espera depois liga a saida GPIO0 por 5 segundos espera o mesmo tempo e liga a saida 5 segundos infinitamente ate ficar sem energia. O problema estano tempo de espera eu uso uma variavel para saber o numero incrementado depois faz um calculo para passar esse numero para minutos e faz um ciclo esse ciclo nao tem como por a funcionar fica o codigo se eu puser o ciclo for (i=o;i<result;i++) se trocar o result pelo numero 12 for(i=0;i<12;i++) tudo gunciona direito usando o result nada funciona. o que estou a fazer de mal será o tipo de variavel? mas ja usei char unsigned char . Cumprimentos
  10. boa noite pessoal, estou me debatendo com um código em assembly a algumas semanas, o problema é o seguinte de uma contador de uma matriz de led 7x5 que tem como objetivo ir de a-z maiúsculo e minusculo e também números de 1 a 9, porém com todos esses valores estoura o program counter sendo assim estava procurando na internet que usando o pclath eu consigo resolver esse problema, sendo que não posso separar em duas tabelas, segue o que ja fiz, agradecido desde ja #include "p16f877a.inc" ; config ; __config 0x3f39 __config _fosc_xt & _wdte_off & _pwrte_off & _boren_off & _lvp_off & _cpd_off & _wrt_off & _cp_off offset equ 20h pointer equ 21h contint equ 22h aux equ 23h org 0x0000 ; processor reset vector goto inicio ; go to beginning of program org 0x0004 ; processor interrup vector goto intertim ; go to interrup of program inicio bsf status,5 movlw 06h movwf adcon1 clrf trisa movlw 00h ;rb0 ? movwf trisb movlw 0f8h movwf trisd movlw 60h movwf intcon movlw 84h movwf option_reg bcf status,5 clrf portd movlw 64h movwf tmr0 clrf offset clrf pointer clrf contint bsf intcon,7 ini1 nop goto ini1 intertim bsf portd,0 movlw 65h subwf contint,w btfss status,z goto inttim1 movlw 02h iorwf portd,f clrf contint movlw 05h addwf offset,f inttim1 movlw 0b9h subwf offset,w btfsc status,z clrf offset movf offset,w addwf pointer,w call tabela movwf portb rlf portb,f movf pointer,w call tabelacol movwf porta incf pointer,f movlw 05h subwf pointer,w btfsc status,z clrf pointer movlw 64h movwf tmr0 incf contint,f bcf intcon,2 bcf portd,0 retfie tabelacol addwf pcl,f retlw 10h retlw 08h retlw 04h retlw 02h retlw 01h tabela addwf pcl,f retlw 3eh; retlw 51h retlw 49h retlw 45h retlw 3eh retlw 44h;1 retlw 42h retlw 0ffh retlw 40h retlw 40h retlw 42h;2 retlw 61h retlw 51h retlw 49h retlw 46h retlw 22h;3 retlw 49h retlw 49h retlw 49h retlw 36h retlw 0fh;4 retlw 08h retlw 08h retlw 08h retlw 7fh retlw 4fh;5 retlw 49h retlw 49h retlw 49h retlw 31h retlw 3eh;6 retlw 51h retlw 49h retlw 49h retlw 31h retlw 01h;7 retlw 01h retlw 09h retlw 09h retlw 7fh retlw 36h;8 retlw 49h retlw 49h retlw 49h retlw 36h retlw 06h;9 retlw 09h retlw 09h retlw 09h retlw 7eh retlw 3eh;a retlw 09h retlw 09h retlw 09h retlw 7eh retlw 7fh;b retlw 49h retlw 49h retlw 49h retlw 36h retlw 3eh;c retlw 41h retlw 41h retlw 41h retlw 22h retlw 7fh;d retlw 41h retlw 41h retlw 41h retlw 3eh retlw 7fh;e retlw 49h retlw 49h retlw 49h retlw 41h retlw 7fh;f retlw 09h retlw 09h retlw 09h retlw 01h retlw 3eh;g retlw 49h retlw 49h retlw 49h retlw 32h retlw 7fh;h retlw 08h retlw 08h retlw 08h retlw 7fh retlw 41h;i retlw 41h retlw 7fh retlw 41h retlw 41h retlw 41h;j retlw 41h retlw 3fh retlw 01h retlw 01h retlw 7fh;k retlw 0ch retlw 12h retlw 21h retlw 40h retlw 7fh;l retlw 40h retlw 40h retlw 40h retlw 40h retlw 10h;l retlw 22h retlw 20h retlw 22h retlw 10h retlw 7fh;m retlw 02h retlw 04h retlw 02h retlw 7fh retlw 7fh;n retlw 04h retlw 08h retlw 10h retlw 7fh; 0111 1111 retlw 3eh;o retlw 41h retlw 41h retlw 41h retlw 3eh retlw 7fh;p retlw 09h retlw 09h retlw 09h retlw 06h retlw 3eh;q retlw 41h retlw 51h retlw 61h retlw 7eh retlw 7fh;r retlw 09h retlw 19h retlw 29h retlw 46h retlw 26h;s retlw 49h retlw 49h retlw 49h retlw 32h retlw 01h;t retlw 01h retlw 7fh retlw 01h retlw 01h retlw 3fh;u retlw 40h retlw 40h retlw 40h retlw 3fh retlw 1fh;v retlw 20h retlw 40h retlw 20h retlw 1fh retlw 7fh;w retlw 20h retlw 10h retlw 20h retlw 7fh retlw 63h;x retlw 14h retlw 08h retlw 14h retlw 63h retlw 03h;y retlw 04h retlw 78h retlw 04h retlw 03h retlw 21h;z retlw 51h retlw 49h retlw 45h retlw 43h retlw 3ch;a retlw 42h retlw 42h retlw 24h retlw 7fh retlw 7fh;b retlw 48h retlw 48h retlw 48h retlw 30h retlw 3ch;c retlw 42h retlw 42h retlw 42h retlw 24h retlw 30h;d retlw 48h retlw 48h retlw 48h retlw 7fh retlw 3ch;e retlw 4ah retlw 4ah retlw 4ah retlw 24h retlw 7eh;f retlw 0ah retlw 0ah retlw 0ah retlw 02h retlw 24h;g retlw 4ah retlw 4ah retlw 4ah retlw 3ch retlw 7fh;h retlw 08h retlw 08h retlw 08h retlw 78h retlw 00h;i retlw 00h retlw 7ah retlw 00h retlw 00h retlw 20h;j retlw 40h retlw 7dh retlw 00h retlw 00h retlw 7eh;k retlw 18h retlw 24h retlw 30h retlw 00h retlw 7eh;l retlw 40h retlw 40h retlw 40h retlw 40h retlw 7eh;m retlw 02h retlw 04h retlw 02h retlw 7eh retlw 78h;n retlw 04h retlw 04h retlw 04h retlw 78h retlw 3ch;o retlw 42h retlw 42h retlw 42h retlw 3ch retlw 7eh;p retlw 12h retlw 12h retlw 12h retlw 0ch retlw 04h;q retlw 0ah retlw 2ah retlw 2ah retlw 7eh retlw 00h;r retlw 00h retlw 7eh retlw 04h retlw 02h retlw 4ch;s retlw 52h retlw 52h retlw 52h retlw 64h retlw 02h;t retlw 02h retlw 7eh retlw 02h retlw 02h retlw 3eh;u retlw 40h retlw 40h retlw 40h retlw 3eh retlw 1eh;v retlw 20h retlw 40h retlw 20h retlw 1eh retlw 7eh;w retlw 40h retlw 20h retlw 40h retlw 7eh retlw 62h;x retlw 14h retlw 08h retlw 14h retlw 62h retlw 02h;y retlw 04h retlw 78h retlw 04h retlw 02h retlw 62h;z retlw 52h retlw 4ah retlw 46h retlw 42h end
  11. Olá, Pretendo desenvolver soluções de automação com recurso a microcontroladores. Estava vendo este video https://www.youtube.com/watch?v=a-GW1xF56o8 e me surgiu a seguinte dúvida "para avançar no mundo dos microcontroladores devo começar a estudar o quê e por onde? Familia PIC, AVR, ou outras coisas que nem se quer conheço ?" Todas as dicas serão bem vindas, preciso de orientação. Valeu
  12. Olá Galera. Sou novo no forum. Estou trabalhando com um display gráfico 128x64 que utiliza o driver st7920, e programando em ccs com o mplab. O problema é que não encontro um drive compatível com esse glcd para o ccs. Alguém tem alguma dica?
  13. Bom dia, estou fazendo um circuito com pic 18f4550 para utilizar o sinal de uma celula de carga e mostrar no display em porcentagem, queria saber se o código que desenvolvi pode funcionar, por que não consigo testar em casa... Segue o código: #programa orgall 0x1000 Pinos do lcd Void nivel (); Void main (void) org 0x1000 { Unsigned char [6]; Unsigned int adcvar=0; Trisa0_bit=1; Trisc=0x00; Portc=0x00; Adc_init(); Lcd_init(); Lcd_cmd(_lcd_cursor_off); Lcd_out(1,1, " nivel de gás "); While (1) { Void nivel(); } Void nivel() { Unsigned int nivel=0; Nível =(( adc_get_sample(0)*100)/1023)+48; Wordtostr(nivel , txt); Lcd_out( 2,5, txt); }
  14. Boa noite pessoal, Estou com uma plaquinha simples aqui me parece que é de uma central de alarme, ela utiliza o PIC16F630 uma EEPROM externa (24LC16B) e uma placa receptora de rf. A eeprom está ligada nos pinos ra4, ra5 e rc5 (SLK, SDA, WP) respectivamente e a placa de rf esta no ra3 (MCLR). Pelo que vi esse micro não tem I2C e nem serial, me corrija se estou errado. Minha dúvida é o seguinte: Como gravar na eeprom? Tive fazendo umas pesquisa me parece que utiliza o timer1 pra fazer esse tipo de gravação. Como ler do receptor rf? Essa placa praticamente faz a leitura do sinal de rf grava na eeprom logicamente e aciona dois reles, se alguém puder dar uma luz fico grato.
  15. Olá a todos, Estou seguinte este vídeo do Wagner Rambo: https://www.youtube.com/watch?v=RNadPhRYkX8 Consigo com que apareça a mensagem no display. Mas o display fica com todos os quadros (16 na linha 1 e 16 na linha 2) pretos! Não são totalmente pretos, pois é possível ver o que escrevi lá! Mas fica preto, a imagem não fica limpa conforme o vídeo! Acontece outra coisa interessante. Se olhar para o display de lado já consigo ver uma imagem limpa, sem os quadrados pretos. Como não tenho camera de fotografar vou tentar explicar através desta image (https://meetarduino.files.wordpress.com/2012/06/img_0264.jpg) Fica igual a essa imagem. Mas consigo ver as letras do que escrevo no ecra. Penso que tenha alguma coisa haver com a alimentação do display. O display é o rc1602b-ghy-csxd (http://skory.gylcomp.hu/alkatresz/16x2_lcd_rc1602b-ghy-csxd.pdf) O que poderei estar a fazer de errado? Valeu
  16. Ola amigo (os), Estou desenvolvendo um projeto utilizando o pic 16c505, mas o que acontece é que este pic não aparece no MikroC. Como faço para inseri-lo? ou utiliza-lo lá? Agradeço sua atenção, Obrigado
  17. Olá, estou trabalhando em um projeto onde aperto um botão, o pic mande o sinal pra ponte h mandar um motor girar num sentido, atinge um sensor, o motor gira no outro sentido, e quando atinge o segundo sensor o motor volta por dois segundos, para e aguarda até que o botão seja pressionado novamente começando o cilclo novamente. Estou usando o pic 16f628a O ci de ponte h é o L293D Fiz um pequeno código que funciona perfeitamente no proteus, más quando montei o circuito, o pic fez algo totalmente diferente do programado ele não estava obedecendo a função "if" Estou aprendendo ainda a linguagem C. Segue o código que fiz no mikro c e o esquema no proteus. Obs.: o esquema já ta pronto pra montagem na pcb #define start RB0_bit // Define RB0_bit como start #define revert RB1_bit // Define RB1_bit como revert #define stop RB2_bit // Define RB2_bit como stop #define cc RB3_bit // Define RB3_bit como cc #define cw RB4_bit // Define RB4_bit como cw #define motor_enable RB5_bit // Define RB5_bit como motor_enable bit flagB0, flagB1, flagB2; // Configura as variaveis void main() { TRISB0_bit = 1; // Define RB0 como entrada TRISB1_bit = 1; // Define RB1 como entrada TRISB2_bit = 1; // Define RB2 como entrada TRISB3_bit = 0; // Define RB3 como saida TRISB4_bit = 0; // Define RB4 como saida TRISB5_bit = 0; // Define RB5 como saida RB3_bit = 0; // Define o valor inicial de RB3 como 0 RB4_bit = 0; // Define o valor inicial de RB4 como 0 RB5_bit = 0; // Define o valor inicial de RB5 como 0 for(;;) // Loop Infinito { if ((start == 1) && (flagB0 == 0)) // Se o botao start for pressionado, verifica se a flagB0 esta em "0" { delay_ms(50); // Delay de para reduzir o bounce if ((start == 1) && (flagB0 == 0)) // Verifica se o botao start continua pressionado e se a flagB0 continua em "0" motor_enable = 1; // Habilita o motor cc = 1; // Coloca o pino "RB3" em nivel logico alto cw = 0; // Coloca o pino "RB4" em nivel logico baixo flagB0 = 1; // Define a flagB0 em "1" flagB2 = 0; // Define a flagB2 em "0" } if ((revert == 1)&& (flagB1 == 0)) // Se o botao revert for pressionado,verifica se a flagB1 esta e "0" { delay_ms(50); // Delay para reduzir o bounce if ((revert == 1) && (flagB1 == 0)) // Verifica se o botao revert continua pressionado e se a flagB1 continua em "0" cc = 0; // Coloca o pino "RB3" em nivel logico baixo cw = 1; // Coloca o pino "RB4" em nivel logico alto flagB1 = 1; // Define a flagB1 em "1" } if ((stop == 1) && (flagB2 == 0)) // Se o botao stop for pressionado,verifica se a flagB2 esta e "0" { delay_ms(50); // Delay para reduzir o bounce if ((stop == 1) && (flagB2 == 0)) // Verifica se o botao stop continua pressionado e se a flagB2 continua em "0" cc = 1; // Coloca o pino "RB3" em nivel logico alto cw = 0; // Coloca o pino "RB4" em nivel logico baixo delay_ms(2000); // Aguarda 2 segundos cc = 0; // Coloca o pino "RB3" em niveç logico baixo motor_enable = 0; // Desabilita o motor flagB0 = 0; // Define a falgB0 em "0" flagB2 = 1; // Define a falgB2 em "1" } } }
  18. Preciso achar uma forma de um robô (com PIC de preferência) percorra esse labirinto de forma que não haja controle externos. E estou aceitando sugestões de qual seria a melhor forma. Ele tem que percorrer o labirinto e passar por cada um dos X e voltar pra linha de partida. A principio pensei em linguagem LOGO ou até grafos. (ignorem a linha mais escura que percorre o meio do labirinto)
  19. Bom dia pessoal. Quero controlar a intensidade de potencia que vai para um motor AC, atraves de um triac acionado com os MOc´s... porém nao queria ter que ler a passagem por zero para determinar o momento do disparo. É possivel fazer esse controle sem ter que ler a passagem por zero?
  20. Olá a todos os Foristas !!! Amigos eu fiz uma programa com o PIC18f14k50 que se trata de um emulador de TECLADO USB ,porém ele vem funcionando bem com Windows XP e Windows 7.Nessa semana fui utiliza-lo no WINDOWS 10 e não funcionou e já fiz de tudo (Configuração, Hardware etc, etc etc) e nada. Ele apresenta falha no Descritor como na Imagem abaixo.Eu até desativei assinatura de driver do Windows e também não funcionou .Pesquisando na net eu vi muita reclamação de pessoas que atualizou para o windows 10 e tiveram problemas com teclado e mouse que pararam de funcionar logo em seguida .Se alguém puder dá uma sugestão .Desde já agradeço
  21. Olá a todos, Estou estudanto PIC e tenho a seguinte duvída: movlw H'FF' movwf TRISB ; Tenho todo o TRISB como entrada movlw H'FF' movwf PORTB ; Vou ter todos os pinos do portb em nível alto Resumindo, estou a definir todo o PORTB como entrada e todos os pinos vão começar com nível alto. Esta definição do nível alto das entradas é em função do tipo de ligação que tiver em cada pino. Por exemplo, se no RB0 ligar um botão, terei que ligar em pull-up. Quando accionar o botão ele entrega nível baixa na entrada RB0, é isso? Valeu
  22. Boa noite à todos Sou iniciante em programação e estudante de Eletrônica No curso sempre usamos este programa (MikroBasic PRO for PIC V7.2.0) e sempre funciona tudo certo.Decidi baixar o mesmo programa no meu computador de casa e inseri a mesma programação que havia feito na sala de aula (e que havia funcionado) só que em casa não funcionou...Na verdade, nenhum código que insiro está funcionando! Segue o código que inseri primeiramente e o erro ao final: sbit LCD_RS at RB4_bit LCD_EN as sbit at RB5_bit LCD_D4 as sbit at RB0_bit LCD_D5 as sbit at RB1_bit LCD_D6 as sbit at RB2_bit LCD_D7 as sbit at RB3_bit LCD_RS_Direction as sbit at TRISB4_bit LCD_EN_Direction as sbit at TRISB5_bit LCD_D4_Direction as sbit at TRISB0_bit LCD_D5_Direction as sbit at TRISB1_bit LCD_D6_Direction as sbit at TRISB2_bit LCD_D7_Direction as sbit at TRISB3_bit char txt[]="SENAI" int cont; void main() { TRISA=1; ANSEL=0; ANSELH=0; LCD_INIT(); LCD_CMD(_LCD_CLEAR); LCD_CMD(_LCD_CURSOR_OFF); while(1) { if(RA0_bit==1) { LCD_CMD(_LCD_SHIFT_LEFT); Delay_ms(100); } for(cont=1;cont<=15;cont++) { LCD_CMD(_LCD_SHIFT_RIGHT); Delay_ms(100); } } } } ERRO : 1 304 Syntax error: Expected "program" but "sbit" found MyProject.mbas Já tentei marcar tudo em "Library Manager" e também não foi. Por favor, se alguém souber o erro me ajude a resolve-lô, gostaria muito de poder estudar em casa. Grata.
  23. #include <16F873A.h> //carregas as definições do microcontrolador usado #device ADC=16 //conversor AD de 16 #fuses HS, NOPUT, NOWDT, NOBROWNOUT, NOLVP //bits de configuração da MCU para gravação //configurações do projeto #use delay(crystal=20MHz) //frequencia de clock para - Cristal Externo #use pwm(CCP1,TIMER=2,FREQUENCY=5300000,DUTY=90) //configuração do PWM #priority TIMER1 //prioridade no tratamento de interrupções //#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_A0) //permite comunicação serial //modo rápido de inicialização das portas #use fast_io(a) #use fast_io(b) #use fast_io(c) #byte porta = 0x00 #byte portb = 0x00 #byte portc = 0x00 // Entradas #define sensor PIN_A3 //recebe dados do sensor | OBS: OS DADOS JÁ CHEGAM NO FORMATO DIGITAL( O CICUITO TEM UM CONVERSOR AD IMPLEMENTADO FISICAMENTE) //#define temp PIN_B4 //nao userei mais um sensor de temperatura // Saídas #define pwm PIN_C2 //saida que gera um sinal pwm conforme configuração #define rele PIN_C4 //saida que aciona/desliga rele | OBS: RELE DE ESTADO SOLIDO USADO PARA ACIONAR/DESLIGAR UMA VALVULA //variaveis globais float leitura, umidadeideal; //so preciso controlar uma gradeza(umidadeideal) void main() { // configura os tris set_tris_a(0b00001000); //entra do sensor set_tris_b(0b00000000); // set_tris_c(0b11110101); //saida do pwm e do rele // inicializa os ports porta=0x00; // limpa porta portb=0x00; // limpa portb portc=0x00; // limpa portc //////////////////////////////////CONFIGURAÇÃO DO TIMER1////////////////////////////////// setup_timer_1(T1_EXTERNAL|T1_DIV_BY_8); //104ms overflow enable_interrupts(GLOBAL);//chave principal das interrupções enable_interrupts(int_timer1); // interrupção do TIMER 0 ////////////////////////////////////////////////////////////////////////////////////////// while(TRUE) { leitura = input(sensor); // a variável leitura recebe o valor lido do PIN_A3 if(leitura >= umidadeideal){ //se a entrada for maior ou igual a umidadeideal output_low(rele); }if(leitura < umidadeideal){ //se a entrada for menor que a umidadeideal output_high(rele); } } } Olá amigos(as), sou inciante nessa área de microcontroladores PIC. No entanto, estou num projeto de iniciação científica na minha faculdade, projeto esse que estou desenvolvendo um sistema automático de irrigação. Vou fazer uma breve descrição do projeto: (PIC16f873A) --no pino PIN_A3 recebe os dados do sensor, esses dados já chegam no formato digital (os dados passam por um circuito "físico" de conversor AD e um retificador e depois chega ao PIC) --no pino PIN_C2 está uma saída pwm de 5,3MHz (tenho duvida sobre como achar o valor do duty cycle) --no pino PIN_C4 está uma saída para acionar/desligar um relé de estado sólido ligado à uma válvula do sistema de irrigação O objetivo é conseguir ler os dados do sensor de umidade em um intervalo específico de tempo(usando timer e interrupção), e a partir dos dados lidos eu os comparo com a umidadeideal e aciono/desligo o relé. Peço a ajuda de vocês para verificar o meu código, pois minhas maiores dúvidas são: configurar o timer e interrupção para fazer a leitura dos dados de tempo em tempo( por exemplo 500ms ou 1s); configurar as portas corretamente para ler os dados. O código ta bem comentado, mas com certeza vai ter muitos erros principalmente em relação ao TRIS, PORT e timer. Desde já agradeço pelo seu tempo e muita paciência rsrs
  24. Boa noite a todos, estou com uma pequena duvida em relação ao Mikro c for PIC, sempre utilizei o CCS porém recentemente desenvolvi um projeto e tive a necessidade de converter meu código para Mikro c, meu problema é apenas com um único comando. Preciso que o pino RB0 fique em modo flutuante, ou seja, que em um determinado momento ele seja nível alto e posteriormente fique em nível flutuante de forma que ele não seja zero nunca, no CCS eu apenas utilizo o comando output_float (PIN_B0), e ele ja fica em nível flutuante, preciso fazer a mesma coisa utilizando o Mikro c, será que é possível ? Desde já agradeço muito se alguém puder me ajudar.
  25. Olá. Estou tentando montar um termostato com um PIC 12F675 e tenho encontrado um problema com isso. Montei o fluxograma no FlowCode e quando tento compilar para o HEX o software diz que o pic não tem memória para a função ADC, o que faz sentido pois usando essa função o HEX fica em torno de uns 4K.... Eu já vi um projeto de termostato com o 12F675, mas que não é programado pelo FlowCode, é programado em C. Nesse projeto programado em C, o HEX gerado é de menos de 1K, sendo possível gravar o pic..Eu sei que programando em C eu conseguiria tirar um melhor proveito do CI mas eu não sei programação e estou aprendendo a usar o flowcode pois ainda estou sem tempo para aprender a programar em c. Alguém poderia dar uma dica de como resolver esse problema ?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×