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

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Projetos_afg

Implementação da FAT32 com PIC

Recommended Posts

Bom dia,

Estou pretendendo gravar arquivos em um cartão SD. A parte da comunicação com o cartão eu encontrei em um site. Agora só não encontro um site que explique detalhadamente a FAT32. Não quero bibliotecas, estou desenvolvendo o driver. Estou usando o PIC 18F4550 e a programação é em assembly.

Toda a ajuda é bem vinda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O grande problema do FAT32 é que é uma tecnologia patenteada, logo vai ser difícil achar algo sobre o protocolo em si sem molhar a mao de alguem ou pagar pela patente.

Uma duvida, você vai precisar ler o cartao em ambiente windows?

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Felipe_Eletronic:

    Não entendi essa do "Ambiente Windows", já que a FAT32 é igual para qualquer sistema operacional que a use.

    vtrx:

    Apesar de eu estar querendo desenvolver o programa por conta própria, essa biblioteca está em assembly. Vou usá-la. Valeu pela ajuda!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Nos de retorno dos resultados e 'dicas' se tudo funcionar ,ok?

    Esse vai ser meu próximo teste(Sd/Fat).

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Vai demorar um pouco para eu implementar, já que o programa é bem complexo, e ainda necessito comprar um encaixe para o cartão SD. se funcionar, eu aviso, e faço um tutorial em português no meu site.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Projetos_Afg,

    quando eu disse ambiente windows, é para saber se você vai ler o cartao em algum PC, pois caso precise dele apenas no PIC, usar um Fat32 é desnecessário, pois o cartao SD pode ser escrito e lido como se fosse uma memoria flash comum.

    No caso do FAT32 você implementa um padrão de distribuição dos dados entre os setores do cartão de memória.

    Acho que agora me expressei melhor, aguardando.

    Abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Entendi, eu só estou implementando a FAT32 para que eu possa abrir os arquivos no computador, se não, como você disse, é inútil usar a FAT32.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Uma pergunta.. por que você faz questão de usar assembly. Não faz sentido nenhum programar assembly se você pode programar em C. Saber assembly é útil pontualmente mas qualquer projeto que eu vejo hoje em dia de um porte minimo é em C. E ja existe isso pronto pela Microchip na Application Library.

    Abs

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Sink00, interessante esse assunto. E no caso de eu ter um USB Host e um pendrive conectado ao invés de um cartão SD? É a mesma receita? porque se eu não me engano, pendrive é FAT16, não? Valeu!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Eu acredito que FAT16 so era usado em pendrives pequenos... Hoje em dia se não me engano todos são FAT32.

    Imagino que sim.. não vejo por que não, so que a biblioteca teria que ser mudada por que ela esta feita para ser usada com SPI, o que é uma comunicação serial menos formatada que USB.

    Abs

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Sink00:

    Eu sei programar em C, mas o programa em questão é de alta precisão de tempo, cada instrução conta. Também usarei muita da memória para a elaboração de uma tabela ASCII estendida, para implementar em um display gráfico.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Se voce programar completamente em C ou superiror,além do ja mencionado por 'projetos_afg',voce pode estar generalisando seu produto.Além disso quando alguem programa em ASM,geralmente tem profundo conhecimento em eletronica digital e hardware.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Eu não disse para ele não SABER ASM, mas sim so para usar se for realmente preciso. E quanto a questão de generalisar o seu produto eu discordo. O produto sempre sera o mesmo. Em qual linguagem voce usar. O usuario nao quer nem saber o que ele faz. E 99% das coisas podem ser feitas com ambas, porém voce demora muito menos com C. E para finalizar e o principal de todos. Portabilidade do codigo. Codigos em C se bem escritos dendem a ser muito facilmente portaveis entre aplicações e dispositivos mesmo que não das mesma familia. Um codigo feito bem em PIC pode ser muito bem utilizado em um ARM como em um AVR se for bem feito, com modificações apenas nas definições iniciais do codigo. Isso é muito valorizado no mercado. Na minha opinião, a não ser que o custo estja apertadissimo, eu mudaria de dispositivo em vez de programar em ASM. Pessoalmente entre alguem com vasto conhecimento em ASM e um pouco em C contra alguem com um Vasto conhecimento em C e um pouco de ASM, eu ficaria com o segundo mas sem pensar duas vezes. E pelo que eu conheço do mercado muitas empresas fariam o mesmo.

    Abs

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Mudar de microcontrolador não me convém, por isso estou fazendo tudo em assembly, precisarei de altas taxas de transferência.

    E tenho um ótimo conhecimento da linguagem C para o compilador CCS. Mas nessa aplicação não dá.

    Agora, usar rotinas feitas por outras pessoas para produtos comerciais não dá. Por isso eu elaboro todas as minhas rotinas.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Sink,não estou desmerecendo nada,apenas comentei que para alto desempenho,rendimento e domínio total de um Processador ou microcontrolador,é mais útil se programar grande parte ou a totalidade(dependendo da experiencia do programador) em ASM.

    Ja ví muitos projetos terem que migrar para um micro 'maior' por causa do tamanho do programa em C.

    Mas se o programador trabalha para uma empresa,tem que seguir as regras da empresa,geralmente velocidade de desenvolvimento.

    Só comentei pois voce citou que existe 'bibliotecas' prontas,isso não significar desempenho total.

    Eu mesmo ja tive muitos programas em C++,C e Delphi no Windows tendo que otimizar certas funções em ASM,mas aí estamos fando de grandes sistemas operacionais,não microcontroladores.

    Te garanto que a maioria que só programa em C não tem domínio total de eletronica,principalmente digital e não saberiam como implementar um novo recurso sem usar bibliotecas prontas(como voce mesmo citou).

    voce poderia ter aberto outro tópico ,pois 'projetos_afg' ja mencionou que programa em ASM e pediu uma dica em ASM,seu comentário não foi muito útil nesta caso.

    Editado por vtrx

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Eu sabia que ia valer a pena seguir esse tópico! Valeu Projetos_afg pelo White Paper da M$!

    E só pra quebrar o gelo, eu gosto do 8051 por causa do ASM. Hehehe. Não peguei gosto pelos PICs justamente por causa do C. Já que vou programar em C, estou partindo para os ARMs.

    Também me incomoda utilizar biblioteca de terceiros. Mas mercado é mercado, né? Tem prazo pra entregar, chefe no cangote etc. Mas pra projetos pessoais, não abro mão do bom e velho assembly.

    Valeu!

    Abraços,

    Renato

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Finalmenta encontrei a especificação completa:

    http://download.microsoft.com/downlo.../fatgen103.doc

    Engraçado...

    Eu ia sugerir que você procurasse pelas informações na comunidade linux (afinal, toda e qualquer distribuição linux implementa FAT32 sem problemas) e você acabou achando a documentação na própria Microsoft.

    Boa sorte com o projeto!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • graccula,

    Você pode me indicar um assembler para o 8051?

    Só encontrei uma versão arcaica que só roda no MSDOS.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Projetos_afg, cara, eu uso o ASM51. Mas ele é um compilador de linha de comando mesmo. Acho que o q você precisa é uma IDE bacana, assim você não precisa ir para o DOS para compilar a aplicação.

    Atualmente eu estou usando o RIDE51, que é uma IDE que tem suporte a depuração, entre outras facilidades.

    Dá uma olhada no meu site, q tem uns tutoriais sobre o RIDE51, inclusive tem ele pra baixar lá tbém.

    http://www.seriallink.com.br/lab

    Valeu!

    Renato

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Graccula,estou pensando em estudar o 8051 para usar o C8051F360,que é um 8051 com 100MIPS.

    voce conhece?

    Se sim,então poderei usar um KIT de 8051 adaptado para ele e todos os progs?

    Esse prog RIDE 51 é completo para o 8051(ASM)?

    Editado por vtrx

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Prezados,

    Estou usando pic 18F4550 e o programar e compilador da CCS, estou a tempos tentando escrever num cartão SD. Olhei o exemplo(do CCS) de escrita e leitura, mas na verdade ele roda certinho e tal no proteus, porém a leitura do cartão SD no inicio do programa não funciona no hardware que fiz(já testei pino a pino e está ok). Alguém já usou os exemplo fat.c e mmcsd...alguém tem uma dica ??

    Editado por Thiagogvc

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    projetos_afg ja pensou em interceptar a comunicação do PC com o cartão SD tava pensando em fazer isto mas pra aprender fat 16 (hehehe to atrazadinho ainda)

    vi uma placa a venda onde havia um adaptador de cartão SD onde você colocava ela no PC e na outra ponta um adptador onde você colocavao cartão SD e no meio um só que de barra de pinos onde você conectava seu Uc e interceptava a comunicação entre os dois

    ja quanto a discussão do assembly meu ponto de vista não é o profissional e sim o do prazer, não vejo prazer maior no mundo da programação do que um programa compilado em assembly rodando perfeitamente totalmente programado por mim, pra mim isso é impagavel

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Revivendo o tópico!

    Já pesquisei muito sobre o assunto, e já consegui compreender por completo como funciona a estrutura da FAT32. Não é algo muito complicado, mas leva um tempo até você assimilar tudo.

    Alguns sites que me ajudaram:

    http://www.pjrc.com/tech/8051/ide/fat32.html

    http://home.teleport.com/~brainy/fat32.htm

    Agora o meu problema não é questão de falta de material, mas sim tempo para elaborar o programa (e uma preguiça rs).

    Estou usando um AVR para isso, pois é mais fácil de se endereçar a memória RAM de forma sequencial, além de dispor de modelos baratos com muita RAM (estou utilizando o Atmega32, que tem 2KB de RAM).

    Uma programa que me ajudou muito foi o WinHex, que permite observar cada setor de um dispositivo de memória, e na versão paga permite escrever na midia. Utilizei um pendrive para aprender sobre o funcionamento da FAT.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    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

    ×