Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Felipe Electronic

Membros Plenos
  • Total de itens

    3.302
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

139

1 Seguidor

Sobre Felipe Electronic

  • Data de Nascimento 3 de março

Informações gerais

  • Cidade e Estado
    Sao Paulo
  • Sexo
    Masculino

Outros

  • Biografia
    Mestrado em engenharia elétrica - USP
    Graduação em microeletrônica - FATEC - SP
  • Ocupação
    Engenheiro de sistemas "real time"
  • Interesses
    Sistemas embarcados em geral, eletrônica, DSP, arquitetura de processadores, estruturas de dados complexas, software de tempo real critico.
  1. Ajuda com pic, postei esquema

    então, acho legal a ter gente que ainda se esforça começando a aprender pelo começo. Mas para entender mesmo o que ocorre com as instruções movlw e movwf e movf, seria legal voltar la em eletrônica digital e relembrar o conceito de memória e registradores, depois abrir o datasheet do PIC e ver as semelhanças, quando eu comecei a por as mãos em microcódigo para microcontroladores, foi muito mais proveitoso aprender o micro com um livro de sistemas digitais do lado, ajuda e muito.
  2. Vale apena aprender assembly

    Os amigos estão se esforçando para explicar ao autor do tópico, mas vou deixar um adendo pra esse: "Qualidade da resposta proporcional a qualidade da pergunta."
  3. JDM e ICSP: dá certo?

    No geral uma grande parcela dos PIC16 e 18F usam a famosa tensão de VPP na hora de programar, se teu circuito gera essa tensão menos mal. A única coisa que deves checar é se seu PIC especifico usa a tensão de VPP ou se usa tensão de baixo valor para programação. Existe ainda outra coisa, como esta contectado teu VPP em relação ao pino MCLR da placa alvo? Poste um esquema ou diagrama se possível. Abs.
  4. Ajuda com programa de pic

    Alguns itens de hardware a se checar: - Qual cristal esta usando? Esta montado proximo do PIC? colocou os capacitores de load proximo ao cristal. qual o valor? - Um bom capacitor de desacoplamento proximo ao pino de alimentação do PIC (cerca de 100nF); - Ja citado, derrubou o watchdog? Se nao esta alimentando ele no firmware periodicamente? - Quais os fuses de gravação que esta a usar? Abs.
  5. Emulação de rons de Atari com Pic (Assembly)

    Bem, da pra gerar o sinal com alguns recursos de hardware... usando o PWM ou output compare, como resolução não interessa muito, voce deixaria a CPU sem cargo de gerar isso. Se quiser uma portadora senoidal, basta passar esse sinal por um filtro passa-baixas de ordem elevada (8 ordem, eliptico) com frequência de corte próxima aos 3,58 MHz. Ter como fazer, tem...mas e ai? Compensa? Abs.
  6. Geração de audio com pic em Assembly

    Se for pra trilha sonora do seu jogo, mas vamos cair no velho dilema, MEMÓRIA, claro isso se quiser fazer playback de uma canção armazenada em memória. O hardware para trazer o sinal digital "de volta" para o mundo analógico pode ser feito das duas formas já citada, você escreve num port a amostra de aúdio e passa por com uconversor digital para analógico (o que chamam de DAC) paralelo, que você pode montar a base de resistores ou comprar um CI como o DAC0808. Ou... usar o famoso conversor analógico para digital de 1bit, no caso um gerador de PWM, onde o duty-cicle carrregado seria cada amostra do seu sinal de áudio, e o pino de PWM do PIC, conectado a um filtro passa-baixas para retirada da componente de alta-frequência bem como seus harmônicos. Acho melhor começar lendo um pouquinho não? http://www.microchip.com/pagehandler/en-us/technology/audio/basics.html http://www.atmel.com/applications/homeentertainment/audio/default.aspx http://cache.freescale.com/files/product/doc/AN2250.pdf Divirta - se.
  7. Emulação de rons de Atari com Pic (Assembly)

    Então seu projeto vai ler o conteudo de um cartucho de jogo de atari e projetar o video num monitor? Abs.
  8. Transistor esquentando MUITO

    A Malha ao redor de Q1 está mal projetada, para o leitor mais atento, se considerarmos o momento de condução onde temos em Q2 a seguinte condição IE máximo, e motando um circuito equivalente, a junção VCE iria enxergar uma fonte de tensão formada pela junção VBE de Q1, ao passo que o FTE vai enxergar uma segunda fonte de tensão formada pela junção VCE de Q2, assim, a condição de operação de Q1 fica preso ao quanto de potência o FTE está a dissipar, se a malha de Q2 cai em saturação f**eu o transistor frita. O circuito fucionaria de forma menos pior(nao digo melhor) se ele garantisse a operação do circuito em região ativa, reduzindo a dissipação no transistor Q2. Eu optaria por conectar esse mesmo resistor do coletor de Q1 a alimentação, formando uma fonte de corrente, cujo o ponto de operação é controlado pelo resultado da soma entre os sinais de entradae o de realimentação, além disso, com isso fixa - se um ponto de operação padrão nesse transistor.
  9. Fonte Linear Ajustável, 0 a 30V. (Problema) 2

    @Carol Moneta, Contribuindo para ideia do seu voltímetro, considere a utilização de um ICL7107 da Intersil, é um CI fácil de obter e relativamente barato, a saída dele já é decodificada para colcoares os displays de 7 segmentos, o ponto mais critico desse projeto é o circuito de entrada para medida de tensão em que o divisor de entrada deve ser calculado. Segue o link: http://www.eeweb.com/project/sudheer_gupta/how-to-build-digital-voltmeter-circuit-using-icl7107 Se tiver dúvidas estamos ai. Abs.
  10. Circuitos osciladores para pic

    Só um detalhe, a limitação de frequência que um PLL pode fornecer é imposta ao estágio VCO que este possui, no datasheet o parâmetro fmax é de 1.9MHz para uma alimentação de 15Vcc e 0.7MHz para 5Vcc. para funcionar bem mesmo, seria interessante projetar um VCO externo ao 4046, e utilizar esse no lugar do que é fornecido on-chip. Se quiser um VCO com amplo range de frequências procure por "oscilador ring" no google, ou opte por um gerador de sinais mais sofisticados, talvzer alguma coisa baseada em síntese digital como o ad9833. Abs.
  11. Cofre Biométrico Arduino AJUDA !

    E devia entrar em desespero mesmo por se preocupar agora que falta 1 mês. De qualquer forma, é possível fazer sim, graças ao suporte amplo fornecido pela comunidade do Arduino. Checou que no site existe um link para o repositório no github para um framework prontinho pro Arduino? https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library Sobre o resto do projeto, você precisa dar mais detalhes e mostrar o que ja fez e o que esta te dando dor de cabeça amigo, no mais, estamos ai. Abs.
  12. Estruturas de dados em assembly, PIC16F628A

    Deixa eu ver se entendi: - voce tem uma tabela de que tem a forma de cada linha, está essa tabela em qual memoria? programa ou RAM? - A estrutura de repetição que você quer funciona escrevendo uma linha de pixels ate que passar por todas as tabelas? No geral nao parece nada complexo de se fazer usando o metodo de "computed goto" dos PIC16, armazenando aquele conjunto de Retlw, o fator critico da sua implementação seria o correto tamanho de cada linha, afim de calcular um offset correto para pular de uma tabela a outra... Vale lembrar, nao é o tipo de coisa feita com algumas poucas instruções, fique ciente disso. Verei o que consigo extrair com as informações que você deu afinal fazem uns poucos anos que nao mexo com PIC16... EDIT: Foi o melhor que conseguir pensar com as 35 instruções do PIC16 em 15 minutos que tive livre aqui no trabalho, tem que verificar a sintaxe de uma diretiva ou outra, mas esse principio creio que funciona bem, estamos chegando proximo as limitações de endereçamento indireto no PIC16. Em micros da "moda" isso em assembly (que dirá em C) seria feito com o pé nas costas. mas é o que temos. De uma olhada: ; Exemplo de stream de linhas com PIC16;; Autor FSN =P;#define PIXEL_LINHA .128 ;largura de cada linha em pixels #define SIZEOF_LINHA (PIXEL_LINHA / 8) ;offset para jump computado entre tabelas#define TABELA_BASE 0x2FF ;endereco base onde ficam localizada as tabelascblock 0x20reg0 ;registros de uso geralreg1 ;reg2 ;reg3 ;pixelBCount ;contador de pixels por bytepixelLCount ;contador de pixels por linhapix ;lineCount ;contador de linhas a imprimir na tela;; WriteFrame(); Essa funcao é a mais alto nivel, escreve N linhas a partir ; do endereço definido em tabela base; reg0 - numero de linhas;;WriteFrame:movf reg0, w ;movwf lineCount ; toma a contagem de linhas:movlw SIZEOF_LINHA ;movwf reg2 ; prepara o tamanho de cada linhamovlw high(TABELA_BASE); toma a primeira linha a receber...movwf reg1 ;movlw low(TABELA_BASE);movwf reg0 ;call LineWrite ;escreve a linha apontada no primeiro endereçomovlw SIZEOF_LINHA ;movwf reg2 ; prepara o tamanho de cada linhamovlw high (TABELA_BASE + (SIZEOF_LINHA * 1)); toma a segunda linha a receber...movwf reg1 ;movlw low(TABELA_BASE + (SIZEOF_LINHA * 1));movwf reg0 ;call LineWrite ;escreve a linha apontada no primeiro endereçomovlw high (TABELA_BASE + (SIZEOF_LINHA * 2)); toma a segunda linha a receber...movwf reg1 ;movlw low(TABELA_BASE + (SIZEOF_LINHA * 2));movwf reg0 ;call LineWrite ;escreve a linha apontada no primeiro endereço...;repita por N linhas....nao fiz iterativo,pois precisaria;de pelo menos uma multiplicação 8x8, e no PIC isso nao;é tarefa trivial :Dreturn;; PixWrite();; Rotina que escreve um certo numero de pixels de uma linha; reg0 - pixel a ser escrito;;PixWrite:movf reg0,w ;movwf pixmovlw .8 ;movwf pixelBCount ;inicializa contador de pixelsPixWrLoop:movf PORTA, w ;movwf reg0 ;toma o valor corrente de PORTAbcf reg0,0 ;Limpa RA0rlf pix,f ;extrai pixel bit a bitmovf STATUS,w ;andlw 0x01 ; o valor do pixel esta em Ciorwf reg0,w ;movwf PORTA ;escreve o pixel em Ra0decfz pixelBCount,f ;goto PixWrLoop ;return ;encerra sub;; LineWrite();; Rotina que escreve uma determinada linha de pixels.; reg0:1 endereço da linha na memoria de programa; reg2 tamanho da linha em (pixels / byte);LineWrite:movf reg2, wmovwf pixelLCount ;inicializa contador de pixels por linhamovf reg1, w ;movwf PCLATH ;inicializa a buscamovf reg0,w ;prepara calculo do offset:movwf reg2 ;LineWrLoop:call GetLine ;toma o byte da linha apontada por w:mowvf reg0 ;toma o pixel da linha a ser escritocall PixWrite ;escreve os 8 pixels empacotados no bytebcf STATUS,C ;precisamos do carry p/ inc 16bitsincf reg2,f ;aponta ao proximo bytemovf STATUS,w ;andlw 0x01 ;addlw .0 ;addwf reg1,f ;movf reg1, w ; movwf PCLATH ;prepara para apontar ao proximo byte movf reg2, w ; decfz pixelLCount,f ;goto LineWrLoop ;repete ate transmitir toda a linhareturn ;tudo ok! ;; GetLine(); Essa rotina toma uma linha da tabela salva na flash; PCLATH ja deve estar configurado e aparte alta vai em W:;GetLine:movwf PCL ;ORG TABELA_BASE + (SIZEOF_LINHA * 0)retlw b'00000000'retlw b'11110000' ...;Pixels da linha 1, cada bit é um pixel;devem conter SIZEOF_LINHAS para cada 8pixelsORG TABELA_BASE + (SIZEOF_LINHA * 1)retlw b'00000000'retlw b'11110000' ...;Pixels da linha 1, cada bit é um pixel;devem conter SIZEOF_LINHAS para cada 8pixelsORG TABELA_BASE + (SIZEOF_LINHA * 2)retlw b'00000000'retlw b'11110000' ...;Pixels da linha 1, cada bit é um pixel;devem conter SIZEOF_LINHAS para cada 8pixels;E por ai vai ate acabar as linhas, ou a memoria de ;programa... Bem agora é com voce, se tiver duvidas, volte que vejo o que posso fazer, tem uma turma do PIC aqui que anda bem mais fera que eu pra essas coisas pessoal se errei algo grotesco por favor corrijam sem piedade. Abs.
  13. Gravador de uControlador sem software

    Veja essa discussão a respeito do programador: http://www.sonsivri.to/forum/index.php?topic=28520.0 Nesse mesmo link tem um outro para download do software de programação. Só acho que se o oobjetivo foi comprar um gravador de microcontroladores Microchip (PIC), creio que perdeste dinheiro, o foco desse programador é para memórias eeprom, como a série 24 e 93, que são fabricadas por Atmel e Microchip. Pelo que li esse gravador suporta apenas alguns microcontroladores da atmel que possuem interface ISP. Abs.
  14. Você gravou o firmware na memória de programa do microcontrolador? Se sim basta montar o sistema chamado de "bare-minimum" ou seja, alimentação, sistema de reset e cristal em caso de oscilador externo, e pronto, por via das duvidas explique melhor esse ponto. Hmmm, ja fez o firmware, configurou o conversor A/D, a porta UART? Uma vez feito e testado, é por o programa na flash e começar a capturar amostras do mic de eletreto. Essa pergunta está meio vaga, pode dar mais detalhes do projeto? A começar um bom "analog-front-end" que basicamente irá amplificar, efetuar uma limpeza no sinal amplificado, adicionar uma componente contínua...Além de limitar a banda do sinal para não gerar um fenômeno bem conhecido em processamento de sinais, o aliasing. Conclusão, é o que da pra responder com esses detalhes, se puder enriquecer com mais infos. Abs.
  15. Como gravar variaveis do tipo int16 na EEPROM do pic

    Basicamente, é importante conhecer a estrutura de uma memória eeprom, ou melhor, estrutura de uma memoria em geral. Vamos pensar em unidades de bytes, por exemplo...quantos bytes possui um int16? dois certo? Cada posição de endereço da eeprom do PIC, corresponde a apontar para 1 byte na memoria eeprom dele, então se queremos guardar um int16 serao necessarios logo duas posições de endereço certo? o que se traduz em fazer a escrita duas vezes, em dois endereços diferentes, no caso do pic que é little endian, geralmente escreve - se primeiro o high byte e depois o low byte. Da uma olhada nesse exemplo, a rotina eeprom_write, mais interna seria a interna do CCS: /* Exemplo de escrita de um int16 na eeprom:*/void EepromWrite16(uint16_t data, uint16_t address){ uint8_t lowByte, highByte; //divide o int16 em dois bytes: highByte = (uint8_t)(data >> 8); lowByte = (uint8_t)(data &0xFF); //Escreve respeitando o fato do pic ser little endian: //primeiro o highbyte: eeprom_write(highByte, address); //Agora o low byte eeprom_write(lowByte, address + 1);}O processo de leitura é basicamente o inverso. Abs.

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

×