sexta-feira, 15 de novembro de 2013

Atualização do projeto de emulador de interface de disquete (#11) - Eureka!

Olá,

Eu estava tendo um problema para usar a eeprom AT49HF010 no meu projeto. Inicialmente estava acreditando que o problema era que o CI não estava conseguindo comandar o barramento de dados do MSX sem a ajuda de um buffer. Posteriormente eu vi que estava na verdade cometendo um erro. Eu estava usando como sinais para a seleção do chip o CS1 e o READ ligados respectivamente nos pinos CE e OE, mas isto é um erro e estava provocando o acionamento do CI com outros dispositivos presentes no barramento. Quando eu liguei os sinais CS1 e SLTSL à eeprom tudo passou a funcionar normalmente (EUREKA!).

Com este erro resolvido passei a me preocupar com a possibilidade de adicionar a capacidade de escrever e não apenas ler na eeprom. Após algum tempo de estudo eu cheguei a conclusão que o melhor caminho seria ligar o pino CE no sinal SLTSL e o sinal CS1 ser ligado no pino OE. Normalmente, pelo que tenho observado, se faz o contrário. Os diagramas que eu tenho encontrado na internet eu vejo que os projetistas ligam o sinal CS1 no pino CE e o sinal SLTSL no pino OE, mas isto não faz muito sentido para mim porque o sinal CS1 participa de uma lógica com sinal READ. Se você deseja fazer apenas leituras a ordem não importa muito, mas no meu caso, como eu quero realizar também escritas, eu preciso dos sinais na "ordem certa". Além disto o sinal CS1 também seria ligado a CPLD para participar de uma lógica tal que, caso escritas para a eeprom estejam habilitadas e o CS1 não esteja ativo (nivel zero) o CPLD ativará o sinal de escrita para a eeprom. Desta forma eu garanto que leituras permanecerão funcionando, mesmo durante a programação, e escritas somente serão ativadas intencionalmente.

Resumindo:

- Leituras para a eeprom somente são possíveis selecionando o slot correto para a página 1 (4000h-7fffh) e realizando uma operação de leitura na faixa de endereço da página 1.
- Escritas para a eeprom somente são possíveis ativando as escritas via CPLD e realizando uma operação de escrita para um endereço cuja a página esteja ativa para o slot correto. Ou seja, eu posso fazer uma escrita para qualquer endereço dentro da faixa de 64K desde que a página deste endereço esteja selecionada para o slot no qual está ligada a eeprom.

Com este problema resolvido eu finalmente me decidi sobre o que fazer com os dois pinos que eu tinha sobrando no PIC. Um dos pinos ficará ligado ao sinal de RESET e o outro pino ficará responsável pela detecção de presença do cartão SD.

As últimas mudanças que eu  fiz já estão disponíveis em:

http://sourceforge.net/p/msxdiskinterfaceemulator/Circuit/HEAD/tree/

Aproveito também para lembrar que apesar de fisicamente - nop hardware - ser agora possível fazer escritas para a eeprom, este recurso somente estará presente em revisões do firmware posteriores a versão 1.0.

Com tudo isto exposto acima, caso alguém tenha alguma dúvida, crítica ou sugestão, por favor fique a vontade para expor sua opinião.

O próximo passo agora é acertar os detalhes finais dos footprints dos componentes para podermos iniciar o layout da placa de circuito impresso.

Um abraço,

José Paulo

sábado, 9 de novembro de 2013

Atualização do projeto de emulador de interface de disquete (#10) - Painel de Controle


Olá,

A última novidade sobre este projeto é que eu fiz o diagrama elétrico e o layout da placa de circuito impresso do painel de controle. Com o layout na mão me foi possível executar a construção do painel conforme vocês podem ver nas fotos acima.

Tenho que confessar que eu não fiquei muito feliz com o resultado final mas no final eu aprendi uma lição importante. Apesar das fotos não mostrarem os quatro parafusos que estão próximos ao display de LCD são longos e prendem a tampa ao LCD e à placa de circuito impresso tudo junto. Má ideia. Foi um sacrifício fazer as coisas encaixarem uma nas outras e demorei um tempo longuíssimo para montar todo o conjunto. Apesar do painel estar funcionando eu recomendo que não construam (caso se queira reproduzir o projeto) um painel de controle usando o layout que eu fiz.

De qualquer forma é isto. O painel está pronto e está funcionando e no final das contas ficou bem bacaninha.

Eu já dei um commit com estas últimas alterações para o sourceforge caso alguém queira dar uma verificada é só acessar:

http://sourceforge.net/projects/msxdiskinterfaceemulator/

Um abraço,

José Paulo

sexta-feira, 1 de novembro de 2013

Atualização do projeto de emulador de interface de disquete (#9) - Source Forge

Olá,

Eu finalmente acrescentei ao código fonte os avisos da licença GPL. Com isto eu criei um espaço no source forge e todos os arquivos pertinentes ao projeto estão lá. Caso você queira participar do projeto ou queira apenas reproduzir o projeto o mesmo está disponível em:

https://sourceforge.net/projects/msxdiskinterfaceemulator/

Com relação ao diagrama elétrico está concluído. Acredito que eu tenha que fazer mais uma inspeção final antes de declarar a versão do diagrama como sendo a versão 1.0. O layout do PCB já foi iniciado e eu parei no estágio de distribuição dos componentes. Com relação ao código fonte em sí eu ainda não acrescentei a documentação no código e nem fiz o clean up conforme prometido. Mas pretendo fazer isto em breve. Além disto tem que ser feito todos os bug fixes necessários.

Esta é apenas uma mensagem rápida porque estou sem tempo no momento. Mas qualquer coisa é só entrar em contato.

Um abraço,

José Paulo

domingo, 27 de outubro de 2013

Gabarito para caixa de cartucho do Carchano


Olá,

Eu fiz um gabarito para a caixa de cartucho grande vendida pelo Carchano para o software Kicad. Abaixo segue o link para o arquivo no formato PCBNEW (editor de PCB do Kicad):

https://dl.dropboxusercontent.com/u/62498964/MSXDiskEmul.kicad_pcb

A caixa pode ser comprada aqui:


http://www.carchano.com.br/loja/produtos_descricao.asp?lang=pt_BR&codigo_produto=3



Um abraço,

José Paulo

sexta-feira, 25 de outubro de 2013

Nova versão do Energia está disponível

Olá,


Há algum tempo atrás eu escrevi um artigo descrevendo mais um pouco sobre o energia. Segue abaixo o link para consulta:

http://paixaoeletronica.blogspot.com.br/2013/09/energia-arduino-framework-para-o.html

Bom, agora saiu uma nova versão do energia - na verdade já não é nem tão nova assim já que saiu em 23/09/2013 - com vários "bug fixes". Pra quem tem launchpads como eu vale a pena experimentar. Maiores informações no link abaixo:

http://energia.nu/release.html

Um abraço,

José Paulo

Nova Peça para o Kicad: Conector 50 pinos para o slot MSX

Olá,

Eu criei um novo componente para o Kicad. Trata-se de um conector 50 pinos para o slot do MSX. Eu intenciono usar este componente para criar a placa de circuito impresso. Abaixo segue o link do Kicad Cloud do módulo para PCB e o componente para o diagrama elétrico.

http://www.kicadcloud.com/pcbModule/4376

http://www.kicadcloud.com/schematicSymbol/4377

Espero que seja de alguma utilidade para mais alguém.

Um abraço,

José Paulo

domingo, 20 de outubro de 2013

O emulador de Interface de disco na MSXRIO 2013

Olá,

Eu levei o emulador de interface de disco para o MSXRIO 2013. Confesso que fiquei bastante preocupado de chegar lá e a interface não funcionar devido a algum fio se soltar do protoboard, mas tudo funcionou direitinho conforme podemos ver na foto acima. A recepção do pessoal foi bastante calorosa e eu pude estabelecer alguns contatos interessantes. Eu fiz e levei para a feira um folder que é como se fosse um manifesto declarando o que é e como funciona a interface e chamando as pessoas a estarem participando do projeto. Abaixo segue o link do dropbox para o arquivo versão PDF do folder.


Eu fiz contato com dois desenvolvedores que me informaram que estão criando um ambiente de desenvolvimento cross para o MSX. Eles falaram que a intenção é criar uma IDE que permita compilar jogos e programas para MSX no PC e dentro da IDE ter uma forma de imediatamente poder rodar o programa e debuga-lo direto no MSX. Até o momento eles tem usado uma interface de rede mas devido a todo o overhead existente no processo de comunicação com o MSX o tempo para a transferência do programa tem sido longo. Como o emulador de interface de disk drive prevê a inclusão de uma porta USB slave para uso futuro eu falei da possibilidade de usar esta porta usb para permitir a transferência e debug do programa no MSX. Eles demonstraram bastante interesse pela ideia e se mostraram bastante motivados e a motivação deles me "contaminou".

Para a versão 1.0 do firmware não pretendo inserir nenhum código no firmware do PIC visando este fim, isto ficará para revisões futuras. Mas, eu pretendo ligar os sinais para permitir a geração de interrupções por parte da interface. A interface de disco CDX-2 - que eu estou emulando - não usa interrupções e por este motivo a sinalização para a geração de interrupções não é usada. Mas como o PIC ainda possui alguns pinos sobrando eu achei interessante usar estes pinos reserva para permitir a geração de interrupções no MSX em futuras revisões.

Então como funcionaria esta "segunda funcionalidade" do emulador?

Olhando o dump da ROM do CDX-2 é possível observar que aparentemente sobraram algumas centenas de bytes de espaço livre. Usando este espaço livre alteraríamos a CDX-2 para criar uma ISR que aguardaria por uma interrupção por parte da interface que sinalizaria que a IDE lá no PC quer transferir dados para o MSX. Então a ISR, usando os endereços de IO livre na interface (escrita - D5 até D7/leitura D4 até D6) estabeleceria a comunicação com a interface e realizaria a transferência dos dados, posteriormente transferindo a execução para o programa recém carregado. Se você não é desenvolvedor e não quiser usar a interface para este fim então tudo bem, nenhum overhead será criado.

Além disto eu fui perguntado se a interface suporta a emulação de discos de 1.44MB e a resposta é não. Hoje a interface suporta a emulação de discos de 360K e 720K porque eram os formatos suportados pela interface CDX-2. Então eu perguntei se havia alguma interface de disco para MSX que suportava discos de 1.44MB e a pessoa me apresentou uma interface, eu na hora falei que iria tirar uma foto da interface para poder obter maiores informações mas acabou que outra pessoa chegou perguntando outras coisas e eu depois esqueci de tirar a foto e também esqueci o nome da pessoa. Ou seja, eu fiz uma bagunça. Eu estou torcendo para que a pessoa que me falou sobre a interface entre em contato comigo para que eu possa aprender mais sobre ela. Eu não pretendo adicionar o suporte para discos de 1.44MB na versão 1.0 do firmware mas é uma coisa totalmente possível para futuras revisões.

Além disto, eu fui perguntado sobre qual formato a placa de circuito impresso usará, se o formato Patola ou o formato de cartucho grande fornecido pelo Carchano. Eu já até comprei algumas caixas do Carchano mas estas caixas são realmente muito grandes e seria muito melhor se eu tivesse acesso as caixas da Patola. O circuito cabe tranquilamente em uma caixa pequena. Me informaram que a Patola ainda teria a forma para produzir caixas para cartuchos do MSX e que a Patola pode produzir se for colocado um pedido grande de caixas. Se alguém puder me fornecer algumas caixas patola virgens ou se alguém tiver uma previsão de quando estas caixas patola estarão disponíveis novamente para a compra eu paro o desenvolvimento da placa de circuito impresso para poder usar as caixas Patola, senão eu vou usar as caixas grandes do Carchano como base para o projeto mesmo.

Eu conversei também com o Rogério Belarmino sobre a possibilidade da Technobytes produzir o emulador de interface de disco quando o produto estiver em um estágio mais maduro. Afinal de contas o emulador é um projeto open source e qualquer um pode produzir e vender o produto se quiser sem ter que pagar nada por isto. Particularmente falando é fácil para mim produzir as minhas próprias placas e até gosto de fazer placas como um hobby. Mas eu sei que tem gente que gostaria de ter acesso ao emulador mas não tem as habilidades e/ou recursos necessários para por o projeto em prática. Então se a Technobytes ou o Carchano resolverem reproduzir o projeto seria muito legal.
No mais, eu não fiquei até o final do evento porque havia trabalhado no dia anterior até as 22:00 e estava realmente cansado. O grande evento do encontro acredito que seria um novo desenvolvimento do Oazem mas infelizmente não consegui ficar até a apresentação ser realizada. 

Um abraço,

José Paulo