130523-101756

Olá!

Eu sou Fábio Pereira e este é o meu blog (finalmente!). Sou advogado, técnico em eletrônica, pós-graduado em projetos eletrônicos, auto didata, fuçador, experimentador, curioso e entusiasta de diversas áreas, incluindo microcontroladores, lógica programável, etc.

Meu interesse por eletrônica e computação começou desde cedo: ganhei meu primeiro microcomputador (um CP400 Color II que utilizava o 6809) com cerca de 12 anos de idade, aprendi a linguagem Basic através do manual do micro e das saudosas revistas Input e Micro Sistemas, mais ou menos nessa época “obriguei” o meu pai a comprar a versão em português do “Construa o seu próprio microcomputador utilizando o Z-80” do Steve Ciarcia.

Posteriormente, com 15 anos, ganhei o meu primeiro microcomputador PC, um IS-30 da Itautec, nele, continuei a programar em Basic (Turbo basic) e posteriormente em Pascal, nesta época escrevi um montador assembly Z-80 em pascal e que rodava no PC (como não existia Internet, o acesso a ferramentas de programação era muito difícil, por isso acabei escrevendo meu próprio assembler). Sempre como autodidata, estudei programação de placas de video EGA/VGA, assembly do 8086, programação TSR (terminate and stay resident) no PC, etc.

Alguns anos depois tive meu primeiro contato com C (através do Turbo C), mas foi somente muitos anos depois que tive meu primeiro contato com um microcontrolador: o PIC16F84. Comprei um kit do Prof. Elmo e comecei a estudar o datasheet do PIC, alguns anos depois escrevi o meu primeiro livro sobre PIC (o Técnicas Avançadas) e o resto é história!

Se hoje estou aqui escrevendo este blog, devo muito ao meu pai Pedro e minha avó Juçá, ele por sempre ter me proporcionado acesso (dentro do possível) a tecnologia, livros e estudo, ela por ter me acompanhado para Curitiba quando, com 14 anos de idade,  fui estudar no CEFET-PR (hoje UTF-PR).

Abaixo os livros que já publiquei (desde 2002):

       rl78

49 ideias sobre “Fábio Pereira

  • 18 de março de 2012 em 6:24 pm
    Permalink

    Bom dia!

    Gostaria de comprar o Livro Microcontroladores HCS08 Teoria e Prática mas não estou achando em nenhuma livraria, alguma dica?

  • 21 de abril de 2013 em 8:01 pm
    Permalink

    Boa Noite Fabio,
    Sou professor de Linguagem C na Etec Sao Jose dos Campos, e ensino C programando microcontrolador, assim uso seu livro com apoio didatico.
    eu e meus alunos estamos desenvolvendo um placa com pic 18F4550 e estakos querendo colocar um bootload para eliminar o uso do gravador ficando mais barato a aquisição desta placa por eles. Gostaria de saber se voce pode passar informações para criarmos estes bootload eu já consegui azer alguns tipos de bootload, porem na escola programamos com o CCS e gostaria de continuar ensinado com ele, no subdiretorio do ccs encontrei um bootload, compilei e gravei no pic, porem não estou sabendo qual programa transfere o arquivo hex para o pic. se voce puder nos ajudar fico muito grato.
    Att.
    Dimas

  • 22 de abril de 2013 em 8:51 am
    Permalink

    Olá Dimroger,

    Há anos atrás eu escrevi um bootloader proprietário (no CCS) para uso com o 18F252, este bootloader é proprietário e não posso publicar o código. Sobre o bootloader da CCS, me parece que eles possuem uma aplicação específica para isso no site deles: http://www.ccsinfo.com/downloads/setup_bootloader.zip No mais, se eu puder ajudar esclarecendo dúvidas, coloco-me a disposição.@dimroger

  • 3 de julho de 2013 em 11:07 am
    Permalink

    Fabio, tudo bem?

    Foi uma surpresa encontrar seu blog, por que tenho 2 dos seus livros e ( Técnicas Avançadas (16F628) e Programando PIC em C (16F877), e devo a eles grande parte do que aprendi sobre microcontroladores.
    Também sou formado em outra área (administração de empresas), mas a eletrônica é o meu maior hobby, para não dizer vício….

    Vi uma pequena matéria no seu blog que me interessou bastante, sobre os módulos wifi.

    Estou fazendo um projeto de um sensor que envia os dados para um AP e pretendo usar um módulo Microchip ( possivelmente o RN171 ou RN 131), mas tenho ainda muitas dúvidas sobre o uso desse dispositivo.

    Por acaso você sabe se alguém oferece algum curso/treinamento sobre isso?
    Sabe de algum livro ?
    Application Note?
    Exemplo de projeto (HW/SW) ?
    Sabe se posso usar o módulo sem nenhum outro HW adicional? Quero dizer, posso construir um sensor apenas com um PIC e um módulo wifi (fora outros componentes discretos)? Ou preciso ter um computador conectado ao circuito?
    O meu firmware deve ficar na memória do módulo ou no PIC, ou nos 2?
    Há a necessidade de se usar uma placa de desenvolvimento?

    Desculpe por tantas perguntas, mas sou iniciante nesseassunto.
    Agradeço desde já sua ajuda!

    Um abraço, Janos

    • 3 de julho de 2013 em 11:46 am
      Permalink

      Olá Janos,

      Fico feliz que tenha encontrado o meu blog e que goste dos meus livros!

      Olha, sobre móbulos Wi-Fi, a maioria deles faz praticamente tudo sozinho, cabendo ao microcontrolador apenas enviar e receber os dados nas camadas mais altas da aplicação.

      Eu tenho a intenção de escrever um artigo sobre o uso de um módulo Wi-Fi com MCU, mas realmente falta tempo.

      Não conheço nenhum livro que trate sobre o assunto, mas a documentação que acompanha o kit do RL78/G14 possui bastante coisa. Veja em: http://am.renesas.com/products/tools/introductory_evaluation_tools/renesas_demo_kits/yrdkrl78g14/index.jsp

      Att.

      Fábio

  • 16 de setembro de 2013 em 3:47 pm
    Permalink

    Boa tarde fábio

    Primeiramente parabéns pelos livros! Estou com um desafio em um novo emprego no qual usam apenas microcontroladores freescale, da linhda hcs08. Estou utilizando um livro seu como base para migrar meu conhecimento de PIC à linha MCU. Porém não consigo fazer com que funcionem as rotinas de gravação e leitura de Flash. Preciso armazenar um dado em um projeto, para que mesmo depois de desligado ele continue armazenado. Por isso preciso tanto aprender esta rotina. O micro que estou utilizando é um mc9s08pa16. Tem como me ajudar por favor?

    • 20 de setembro de 2013 em 5:21 pm
      Permalink

      Olá Wenderson,

      O meu livro HCS08 Unleashed tem exemplos de gravação e leitura da flash dos HCS08.

      Fábio

  • 23 de setembro de 2013 em 8:12 am
    Permalink

    Olá Fabio Pereira,

    Tenho quase todos seus livros, com exceção dos que falam sobre PIC e RL78.
    Gostei dos seus livros por serem bem didaticos, no Brasil são poucos livros desta area que podem ser encontrados em lingua portuguesa.
    Já te encontrei no passado lá no ASM51. Abraço!

  • 2 de outubro de 2013 em 11:04 pm
    Permalink

    Como vai Fábio, é um prazer participar do seu blog, tenho 4 do seus livros (MSP430, PIC, HC908, e atualmente o RL78 que ganhei com muito alegria em mão do André Machado).
    Gostaria de completar minha biblioteca com seus livros, poderia me fornecer os livros faltantes por um preço mais acessível? diretamente do site estão muito caros e atualmente estou passando por uma dificuldade financeira daquelas. Poderia por favor me enviar seu email para que possamos trocar algumas ideias e poder pegar alguns conselhos? No mais agradeço a oportunidade que nos dá em conhecer este mundo tão interessante dos microcontroladores. abraços. Júlio

    • 24 de outubro de 2013 em 3:14 pm
      Permalink

      Olá Julio,

      Em quais livros você tem interesse? Tenho alguns poucos exemplares comigo e posso verificar se tenho os que você deseja.

      T+

      Fábio

  • 1 de novembro de 2013 em 11:43 am
    Permalink

    ola fabio.

    estou tentando criar um relogio com um rtc(ds1307) usando o pic 18f4550 e xc18, e estou com varios problemas, primeiro não sei muito sobre programação, mas pesquisando consegui que a hora e a data seje mostrada no lcd, voce poderia me dar uma ajuda?

    att
    flavio

    • 4 de novembro de 2013 em 10:06 pm
      Permalink

      Olá Flavio,

      Se você já consegue apresentar a data e hora no display, qual o problema?

  • 6 de novembro de 2013 em 9:34 am
    Permalink

    O PROBLEMA QUE NAO ESTOU CONSEGUINDO FAZER O AJUSTE DA DATA/HORA NO RTC, E COMO USAR UMA INTRUPÇÃO EXTERNA PARA CRIAR UM MENU PARA AJUSTAR OS MESMO E TAMBEM UM ALARME.

    • 6 de novembro de 2013 em 12:48 pm
      Permalink

      Eu já postei o código de um relógio, você pode aproveitar algumas idéias do mesmo. Sobre como acertar o horário no RTC, existe muito material sobre isso na internet.

  • 17 de novembro de 2013 em 10:05 am
    Permalink

    Prezado Fábio,

    gostaria de saber se é possível fazer contato com você por aqui para a retirada de algumas dúvidas que tenho sobre livro de vossa autoria.

    Iria me ajudar bastante a compreender alguns pontos.

    Por favor, aguardo seu contato.

    Humberto

  • 27 de janeiro de 2014 em 10:16 pm
    Permalink

    Olá Fábio

    Antes de mais nada parabéns pelo seu blog e livros. Eles tem me ajudado bastante nos meus primeiros passos no mundo da eletrônica.

    Comprei recentemente o livro Tecnologia ARM Microcontroladores de 32 bits mas estou tendo dificuldade para encontrar no mercado os kits que você especifíca (ARM7-KIT da ST e CPU STR711 da ScTec). Você tem alguma dica de onde posso adquirir-los?

    Obrigado, Ricardo

  • 9 de dezembro de 2014 em 1:00 pm
    Permalink

    Boa tarde Fábio. Aprendi bastante de PIC e linguagem C graças à seus livros.
    Comprei a um tempo atrás o “Microcontroladores PIC C detalhado”, mas só agora estou lendo com mais afinco. No entanto, ao menos nos exemplos finais, parece que há alguns erros nos códigos apresentados. No site da editora ÉRICA , o arquivo de errata (2717.exe) está corrompido. Poderia passar outro link para baixar as erratas ?
    Obrigado.

    • 9 de dezembro de 2014 em 2:43 pm
      Permalink

      Olá Ricardo,

      Eu imagino que você esteja falando sobre o livro PIC18 Detalhado. Bom, eu não tenho nenhuma errata dele aqui. Qual o problema que você encontrou?

  • 9 de dezembro de 2014 em 3:42 pm
    Permalink

    Fábio, obrigado por responder tão rápido.
    Atualmente programo utilizando o CCS, estou dando os primeiros passos no compilador C18 com seu livro (“Microcontrolador PIC18 detalhado”) .
    No exemplo de caracteres para LCD definidos pelo usuário (pag. 279) é usado o Timer1 (acredito que para fazer a atualização do gráfico), mas não vejo o tratamento desta interrupção.
    Além disso, na função “void ADC_ISR (void)”, na linha :” soma = soma+ADRES – media;” – Não entendi de onde vem a variável “ADRES” .
    Também está confusa a função “LCD_bargraph”, por exemplo na linha : “LCD_write_char(4);” – isto não fará escrever “4” no display ? Esta linha não deveria utilizar os índices da matriz “custon_char” ?

    Vamos por partes, tenho outras dúvidas nos outros códigos, mas dependendo de sua resposta, posso estar apenas interpretando errado.

    Agradeço a atenção e parabéns pela iniciativa de passar tanta informação.

    • 10 de dezembro de 2014 em 1:21 pm
      Permalink

      Olá Ricardo,

      Você chegou a testar o exemplo?
      Bom, o exemplo 13.37 (acredito que seja este exemplo, não tenho o livro aqui comigo agora) não utiliza o timer1, apenas o timer0. O símbolo ADRES (assim como outros registradores do PIC) é definido pelo arquivo p18f4520.h (que é o primeiro arquivo incluído no topo do programa). Sobre a função LCD_write_char(4), não ela não vai escrever o número 4 no display, para isso teria de ser LCD_write_char(‘4’). No caso, aquela função escreve no display o símbolo relativo a posição 4 da memória de caracteres do display, que é um caractere definido pelo usuário (aqueles definidos no array custom_char[]).

      Att.

      Fábio

  • 10 de dezembro de 2014 em 2:11 pm
    Permalink

    Olá Fábio, obrigado novamente.
    É o exemplo13.4, não cheguei a testá-lo, apenas estou tentando entender o código.
    Pelo que entendi ( hoje tentei novamente) o timer 1 é usado no modo comparação, fazendo disparar a interrupção do ADC.
    O símbolo ADRES não consigo encontrar em nenhum dos arquivos “include”.
    Quanto à função LCD_write_char, não consigo enxergar como ela consegue saber que aquele 4 é relativo à posição 4 do array.
    Até entendo que sejam dúvidas de principiante, mas tenho certeza que o professor irá saná-las.
    Grande abraço.

    • 10 de dezembro de 2014 em 2:49 pm
      Permalink

      Olá Ricardo,

      Bom, o arquivo p18f4520.h que eu tenho aqui no MPLAB possui a seguinte linha:
      extern volatile near unsigned ADRES;
      Sobre o exemplo 13.4, o timer1 é utilizado no modo de comparação fazendo o disparo da conversão do ADC. Esta funcionalidade é descrita no capítulo que trata do ADC.
      Com relação a função LCD_write_char(4), bom, ela escreve o caractere número 4 (0x04) no display. Se você olhar o mapa de caracteres do display (acho que é a figura 13.3) verá que o caractere 4 é um caractere definido pela CGRAM. A CGRAM é configurada através do array custom_char[]. O código está todo comentado.
      Observe que ao escrever LCD_write_char(‘4’), você de fato está escrevendo o valor 0x34 no display (que é o código ASCII para o número 4). Aí se você olhar a figura 13.3, verá que o código 0x34 é o símbolo do número 4. Isso porque a tabela de caracteres CGROM do display obedece aos códigos ASCII. Observe que os primeiros 16 caracteres do display são mapeados para os 8 caracteres definidos na CGRAM, isso permite que o usuário crie seus próprios caracteres. O texto do livro trata do assunto e demonstra como criar os seus próprios caracteres…

      T+

  • 10 de dezembro de 2014 em 3:13 pm
    Permalink

    Afe ! Acredita que não consigo localizar o bendito ADRES, nem no MPLAB nem no CCS, mas isso depois vou procurar com calma.
    Quanto ao restante das explicações, agora faz todo o sentido. Realmente não estava entendendo isso.
    Agradeço muito sua atenção. Continue sempre compartilhando estes seus dons.
    Boas Festas à você e à todos os leitores do seu blog.

  • 10 de dezembro de 2014 em 5:13 pm
    Permalink

    Fábio, só para finalizar, encontrei o símbolo ADRES. Eu estava procurando nos arquivos do compilador CCS, nem me dei conta que são diferentes do C18.
    Tudo certo (ao menos por enquanto).
    Obrigado pelas dicas.

  • 11 de abril de 2015 em 10:51 pm
    Permalink

    Ola Fábio tudo bem?
    Em primeiro lugar quero parabeniza-lo pelos seus livros,ou seja,seu trabalha na área de microcontroladores..
    Gostaria que você me indicasse um de seus livros para quem realmente não sabe nada,ou seja,desda arquitetura do microcontrolador ate a linguagem..
    Ficarei muito agradecido,ate porque,gostaria de começar do zero,mas do zero mesmo para quem não sabe nada…
    Mas uma vez parabéns pelo seu trabalho e obrigado por sua atenção.

    • 13 de abril de 2015 em 9:27 am
      Permalink

      Olá Claudio,

      Olha, é difícil indicar um livro. Primeiro seria necessário você definir qual o microcontrolador pretende utilizar/estudar inicialmente, pois há vários modelos e vários fabricantes. Eu não sei se os meus livros seriam os mais indicados para alguém que está começando realmente do zero. Aliás, também não sei exatamente o que você entende por “zero”. Creio que para a leitura de qualquer livro na área você terá de ter algum conhecimento em eletrônica, lógica digital e programação.

      Fábio

  • 20 de abril de 2015 em 7:22 pm
    Permalink

    Ola Fábio obrigado por me responder…
    Na realidade já trabalhei com eletrônica,conheço o básico eletrônica digital,e ate já programei alguns microcontroladores como 16f628,16f84 tec..
    Mas sempre pegando código de alguém fazendo coisas como piscar leds e não sai disto..
    Percebi que minha dificuldade esta em aprender a linguagem..Enfim perguntei qual melhor opção de livro para iniciante da linguagem em geral…Mas uma vez obrigado por sua atenção…

  • 6 de maio de 2015 em 1:59 pm
    Permalink

    Professor, tudo bem ?

    Meu nome é Fabio, sou estudante de Engenharia Eletrônica e me interessei muito pelo assunto microcontroladores e microprocessadores depois que passei a estudar sobre arduíno.

    Gostaria de uma dica do sr, pois sou iniciante, gostaria de saber e o caminho a seguir após o arduíno seria arquitetura PIC ou ARM? Obrigado!

    • 8 de maio de 2015 em 4:52 pm
      Permalink

      Olá Fábio,

      Olha, depois do Arduino eu iria para uma arquitetura mais completa, então seria ARM ou outro MCU de 32 bits como o Renesas RX ou até mesmo o PIC32.

  • 15 de janeiro de 2016 em 7:17 pm
    Permalink

    Olá Fábio, gostaria de comprar um de seus livros más estou em dúvida entre qual eu escolho arm ou pic já tenho conhecimento intermediario em C e Arduino, gostaria da sua opinião estudo eletrônica por enquanto por hobbie más pretendo seguir essa carreira 🙂

    • 17 de janeiro de 2016 em 5:38 pm
      Permalink

      Olá Alan,

      Para ser sincero, o livro sobre ARM já está um tanto desatualizado, já que ele trata da arquitetura ARM7 e hoje o que se usa (em termos de MCU ARM) é Cortex-M. Você já deu uma olhada no livro sobre Renesas RL-78? São micros muito bons e o livro pode ser baixado gratuitamente em PDF.

      Fábio

  • 22 de março de 2016 em 12:03 pm
    Permalink

    Bom dia!
    Fábio eu já comprei 03 livros teus (Carinha, tu é fera), agora estou com um pouco de dificuldades em atualizar do PIC16F877A para o PIC16F887!
    Tens alguma informação que possa me ajudar?
    Obrigado, Odair de Souza Rodrigues

    • 22 de março de 2016 em 1:04 pm
      Permalink

      Olá Odair,

      Obrigado pelo elogio! Com relação a migração, que tipo de dificuldades você está enfrentando? A migração de um PIC para outro não deve apresentar grandes dificuldades.

      Att.

      Fábio

  • 22 de março de 2016 em 1:37 pm
    Permalink

    Boa tarde!
    Programo em Assembly e não ando acertando muito bem os FSR. Principalmente com as mudanças nas configurações de ADC, RS232 e TIMER1. Eu estava muito viciadinho no 16F877A!!! Risos!!!
    Fico grato com sua atenção!
    Dica: Edita o Livro: Migando do 16F877a para o 16F887! – Eu compro um!!!
    Grato, Odair

  • 4 de abril de 2016 em 3:25 pm
    Permalink

    Olá Fábio, boa tarde!

    Estou utilizando o seu livro (Microcontroladores RL78 Guia Básico) como uma das referências para trabalhar com RL78: Parabéns, muito didático!!
    E com isso, estou com uma dúvida que talvez você possa me ajudar:
    – Em relação aos bits de configuração (opbyte0-1-2-3), eles podem ser definidos em arquivos diferentes? Exemplo: gostaria de deixar o opbyte0 no arquivo do watchdog e os outros em um outro arquivo, porém, quando faço isso, não funciona…Você teria alguma dica do que posso estar fazendo errado?

    Era isso então!
    Obrigado desde já pela atenção!
    Sds

    • 5 de abril de 2016 em 8:42 am
      Permalink

      Olá Filipe,
      Olha, em tese deveria ser perfeitamente possível declarar os opbytes em arquivos separados mas isso depende muito da forma como o compilador e o linker estão lidando com os arquivos. Quando você diz “não funciona”, isto significa o que? Há um erro de compilação/linker ou o resultado não é o esperado? Uma possível solução seria você deixar os opbytes num mesmo arquivo e configurá-los através de símbolos definidos nos demais arquivos.
      T+
      Fábio

      • 5 de abril de 2016 em 10:56 am
        Permalink

        Fábio, bom dia!

        A sugestão que você me passou funcionou (configurar os opbytes no mesmo arquivo mas através de definições dispostas em outros .h). Em relação ao que eu havia comentado de não funcionar, é que o programa até compila e grava normalmente, mas acaba não executando o código…é como se ficasse em modo reset ou travado…
        Bom, de qualquer modo, muito obrigado pelo rápido retorno! Me ajudou bastante!
        Abraço! :mrgreen:

  • 4 de abril de 2016 em 11:33 pm
    Permalink

    Fabio,

    tenho uma assistencia tecnica e estou querendo inicar um curso de pic.
    qual escola me recomenda,qual o livro que voce me recomenda de todos esses no seu blog? Pode me passar essas informações?
    Parabens pelo seu blog.

    Clodoaldo

    • 5 de abril de 2016 em 8:46 am
      Permalink

      Olá Clodoaldo,

      Olha infelizmente não tenho como fazer indicação de cursos pois não conheço muitos em SP. Quanto aos livros, bom eles possuem conteúdos diferentes, o PIC: Programação em C aborda bastante o compilador CCS C, mas não aborda a arquitetura PIC propriamente dita. O livro Técnicas Avançadas aborda bastante arquitetura e assembly, mas não C. O livro sobre PIC18 aborda a arquitetura e C, mas é focado apenas nos PIC18!

      T+

      Fábio

  • 14 de outubro de 2016 em 2:52 pm
    Permalink

    Fabio:

    Iniciei meus estudos com seus livros e suas macros me ajudaram muito.

    Teria como fazer com que cada um dos 256 bytes de um sinal correspondesse a um endereço, incrementando (INCF) um label, para poupar linhas de programa?

    MOVF      SINAL,W
    XORWF     COMPARE,W
    BTFSS    STATUS,Z
    GOTO    S1 ; teria como incrementar S1 usando uma instrução?
    INCFSZ    COMPARE,F
    GOTO     $-5

    • 14 de outubro de 2016 em 3:15 pm
      Permalink

      Olá Paulo,

      Desculpe mas a sua pergunta não é clara. Você não pode incrementar um label de uma instrução GOTO pois o parâmetro dela é fixo e armazenado em flash.

      No entanto é possível fazer saltos relativos utilizando o contador de programa (nos PIC16 seria utilizando os registradores PCLATH e PCL). Basicamente seria algo como:

      MOVLW 10
      ADDWF PCL,F ; esta instrução soma 10 ao PC atual, provocando o desvio do programa 10 posições adiante da próxima instrução

      Note que este tipo de operação pode saltar para endereços indesejados se o resultado do valor atual do PCL somado com o valor em W ultrapassar 255. Neste caso é necessário ajustar o registrador PCLATH antes do salto:

      MOVWF WTEMP
      MOVF PCL,W
      ADDWF WTEMP,W
      BTFSC STATUS,C
      INCF PCLATH,F
      MOVF WTEMP,W
      ADDWF PCL,F

      O meu livro Microcontroladores PIC: Técnicas Avançadas mostra como utilizar tabelas no PIC16.

      • 14 de outubro de 2016 em 7:58 pm
        Permalink

        Boa Noite, Fábio:

        O fato de eu não poder incrementar um label de uma instrução GOTO porque o parâmetro dela é fixo e armazenado em flash, responde a minha pergunta.

        Percebo agora que a rotina proposta por mim tem falhas e não funcionaria, mesmo que o label pudesse ser incrementado.

        Tenho dois exemplares do seu livro Microcontroladores PIC: Técnicas Avançadas e aprendi (com você) a usar tabelas manipulando o PCLATH e PCL.

        Agradeço a pronta resposta.

        Seus livros são muito bons, devo a eles boa parte dos meus conhecimentos sobre PICs e programação.

        Parabéns !

  • 23 de março de 2017 em 8:51 am
    Permalink

    Bom dia Fábio,

    Seus livros foram minha grande fonte de informação quando adentrei no mundo dos MCUs e fiquei muito feliz por descobrir esse canal direto com você.

    Gostaria de tirar uma dúvida e apenas para entender a aplicação, estou construindo um buffer externo para processamento digital de áudio em tempo real.

    Quando utilizo uma SRAM do tipo 23K256, gerenciada pelo DMA de um dsPIC33, realizando operações de R/W dos dados na frequência de amostragem de áudio.

    1 – O simples fato de enviar o endereço de leitura já garante que o dado previamente escrito será disponibilizado no buffer de transmissão da SRAM?

    2 – Na sequencia, enviando um outro endereço para escrita com o respectivo comando, será possível utilizar a comunicação em Full Duplex reduzindo meu tempo na operação?

    Atenciosmente.

    Alexandre Filardo.

    • 23 de março de 2017 em 11:40 am
      Permalink

      Olá Alexandre!

      Obrigado pelo contato! Olha, não conhecia essa memória RAM SPI, mas pelo que vi no datasheet, um comando de leitura aleatória (byte read) sempre inclui o endereço de 16 bits da posição a ser lida e após o envio dos primeiros 24 bits (8 do comando + 16 do endereço) a memória irá apresentar serialmente o conteúdo da posição desejada.

      Sobre a pergunta número 2, eu não entendi muito bem o que você quis dizer com Full Duplex nesse contexto. A comunicação SPI a quatro fios é sempre Full Duplex no sentido de que dados são enviados (do master para o slave) ao mesmo tempo em que o slave devolve algum tipo de informação (normalmente na parte final da palavra) para o master. Mas se vc se refere a possibilidade de ler e escrever simultaneamente, aí creio que essa memória não permita fazer isso. Imagino que seria o caso de utilizar uma memória dual-port (para se fazer acessos aleatórios de escrita e leitura).

      O ideal seria utilizar um MCU ou DSP com memória RAM interna suficiente para acomodar todo o seu buffer de amostras, de modo que o DMA transfira os dados lidos do ADC para a RAM e sinalize para o seu filtro o momento de processar as amostras salvas. Provavelmente também seria interessante utilizar um ping-pong buffer de forma que um dos buffers esteja disponível para o DMA enquanto o outro (contendo as últimas “n” amostras lidas do ADC) pode ser utilizado pelo código do filtro.

      • 23 de março de 2017 em 4:43 pm
        Permalink

        Boa tarde Fábio, muito obrigado pelos esclarecimentos, foram de grande ajuda pra meu direcionamento e no momento que retomar o desenvolvimento desta parte do meu código, avaliarei e ponderarei todas as recomendações.

        Atenciosamente.

Deixe uma resposta