Translate

quarta-feira, 18 de março de 2015

Acesso ethernet cabeado do Arduino com enc28j60


Montagem rápida para teste do breakout ENC28J60, ethernet de baixo custo para o arduíno.

Para ser rápido e não repetir outros sites, montei conforme o site http://hofmannsven.com/2013/laboratory/arduino-ethernet-module/ e com a exceção do modelo da placa que comprei ser 5v enquanto a grande maioria é 3.3v, deu certíssimo.





terça-feira, 3 de março de 2015

Programador CP2102 SEM Autoreset - upload com botão de reset



Mais um básico que fui procurar no meio do meu Blog e não achei (porque não fiz, lógico).

Achei alguns programadores CP2102 baratos (R$ 8,98 cada) e não resisti, comprei para estocar, pois paguei pelo menos o dobro há alguns anos atrás. Aproveitei a compra de algumas matrizes de Led, o que ia baratear o frete, pois estavam em MG.


O problema foi que ele não tem disponível o autoreset e quando programamos o atmega, temos que apertar o botão de reset (7-GND X 1-RST) para que o programa seja carregado.

A documentação sobre esse reset de upload é muito obscura na NET.
Algumas dicas, pois sofri fazendo uma besteira atrás da outra tentando upar e quase desisti:

  • tenha certeza sobre o modelo do microcontrolador (eu estava usando um atmega8 e não sabia);
  • esteja certo de ter bootloader neste;
  • acerte o lado, caso tenha um conector rápido;
  • confira bem a fiação;
Depois que acertei tudo, testei as 4 peças que comprei e deu tudo certo. Nunca tinha conseguido upar com o reset manual :). Na verdade, o reset manual é para modelos de arduino mais antigos, desprovidos do autoreset, mas acabam sendo uma mão na roda para ICSP (In Circuit Serial Programming) - programação serial do microcontrolador no próprio circuito.

Primeiro o esquema de ligação (4 FIOS):

CP2102 ---- ATMega328
  +5V  ----  7-VCC
  GND  ----  8-GND
  RXD  ----  3-TX
  TXD  ----  2-RX



Driver do CP2102:
https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

Acertos no Arduino IDE (versões 1.6.0 e 0023): placa Arduino UNO; porta - a que foi dectada placa CP2102; carregado o exemplo Blink.


Quando notar que essas linhas laranjas aparecem, apertar e soltar o reset rapidamente.
Se estiver certo, o final do console será parecido com:



Logo que tiver paciência, tentarei colocar o autoreset no circuito (basta ligar na perna 28-DTR do CI CP2102 e colocar um capacitor de cerâmica de 0.1 μF entre ele e o pino 1-RST do ATmega.







sábado, 31 de janeiro de 2015

Por que utilizar Attiny?



O preço é quase o mesmo de um Atmega328 (falamos das versões DIP), que por sua vez tem muito mais entradas, saidas, memórias, etc.

Mas obviamente o tamanho é muito diferente: o Atmega328 tem 14 vias em cada lateral enquanto o attiny (25, 45, 85) tem 4. Isso resulta em muita economia de espaço para projetos mais simples.


Uma boa também por conseguirmos encontrar facilmente no Brasil, por um preço que vale a pena.

E se você tiver um USBASP poderá programá-lo no próprio circuito - ICSP - In-Circuit Serial Programming.

Um outro microcontrolador que vale a pena é o Atmega8 por ser mais barato que o atmega328, mas tem o mesmo número de vias, praticamente se igualando em entradas e saídas, mas tendo menos memória.

Attiny85: Default de fábrica e bricando para testes de reset via HVSP


Sem querer, eu já bricava um attiny. Propositalmente então, deve ser moleza. Mas primeiro, anotar quais são as configurações de fábricas e constatar no microcontrolador, é uma obrigação.

No site http://www.engbedded.com/fusecalc podemos calcular e ver os padrões de fábrica dos microcontroladores AVR. Os fuses do Attiny85 estão motrados assim para a configuração default


LowHighExtendedActionAVRDUDE arguments
0x0x0x* 
Apply manual changes to the values on the left side, or load factory default values for the selected device.
-U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
Select (try triple-click) and copy-and-paste this option string into your avrdude command line. You may specify multiple -U arguments within one call of avrdude.
* Note that some numerical values refer to fuses containing undefined bits (set to '1' here). Depending on the target device these fuse bits will be read either as '0' or '1'. Verification errors will occur if the values are read back with undefined bits set to '0'. Everything is fine if the values read from the device are either the same as programmed, or the following values (undefined set to '0'):Extended: 0x01.


Meu Attiny85 recém resetado mostra as informações abaixo, no AVRDUDESS:

Isto é, as informações batem.

Para bricar o Attiny85: o meio mais fácil que achei foi configurar o Low para 0x00 no AVRDUDESS e dar um write. Observe a mensagem do console depois de dar um Detect:


Depois disso, pode tentar gravar os fuses de fábrica ou qualquer outro, que o AVRDUDESS não vai mais conseguir ler ou gravar qualquer informação.

Passando pelo circuito de reset via HVSP, o resultado é esse, no serial monitor da IDE:


Voltando ao AVRDUDESS, o Detect dá a tela:


Repeti duas vezes, o microcontrolador bricou as duas vezes e ressucitou duas vezes. 

Realmente, apesar de simplificado, o circuito resetador funciona mesmo e o mais importante: é muito fácil de montar.

quinta-feira, 29 de janeiro de 2015

Circuito para reset HVSP para attiny


Tinha até desanimado em programar os ATTINY devido ao fato de bricarem muito fácil.

Recentemente, por acaso, estava passeando no http://www.pinterest.com/ e apareceu um circuito muito simples para reset de attiny por HVSP (High Voltage Serial Programming) utilizando um arduino como auxiliar. Fiz e deu certo de pri-me-i-ra.

Desta vez planejei mais e como levei um ano para me abastecer com algumas peças e ferramentas, foi muito mais eficiente montar o circuito (tenho que fazer um curso de eletrônica para entender um pouco).

O circuito e o programa encontram-se no site https://sites.google.com/site/wayneholder/attiny-fuse-reset, mas como de costume, deixarei links no gdrive:

O Sr. Wayne otimizou o código original, do Sr. Paul Willoughby do site http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/, fazendo-o detectar automaticamente o tipo de Attiny.


Desenhei o circuito no Fritzing:
Lembrando que a bateria de 9 volts é ilustrativa, pois o circuito exige 12 v para fazer o processo. Fiz o circuito para sobrar bastante espaço na placa padrão para ver se futuramente comporta um atmega328, dispensando o arduino. Caso verifique o esquema no fritzing, olhe cuidadosamente os componentes, pois há fios sobrepostos, escondendo a conexão real. Saliento somente um pequeno corte feito na raia da perna 3 do attiny, aproveitando para ganhar espaço na placa. O arquivo do fritzing está aqui.

Um outro detalhe é que compraram para mim um 2N3906 em vez do 2N3904. Ainda bem que pesquisei e para minha surpresa um é PNP e o outro NPN. Graças ao meu amigo 4 zóio (Edilson Souza), fiquei sabendo que tinha um equivalente BC54x e por acaso eu tinha um BC547, que usei e deu certo (consulte a equivalência no site http://www.electronica-pt.com/db/componentes.php?ref=2N3904 - me ajudou muito).





O código fonte do programa está aqui.
Rodou sem nenhuma modificação e sem acréscimos no Arduino IDE 0023.

Detect / Config de ATTINY com USBASP


Vixi! Fui verificar o estado de um attiny85 e... nem lembrava como conectava com o USBASP. Sorte que hoje tem informação sobrando na net. Após essa grande parada (meses sem mexer com circuitos), milagrosamente as coisas estão dando certo....

Primeiro, a pinagem do cabo do USBASP (do site http://www.ozwald.fr/):


Em seguida, a pinagem do ATTINY (25-45-85):


A ligação é direta: RST-Reset, GND-GND, MOSI-MOSI, MISO-MISO, SCK-SCK e VCC-VCC.
Não é necessário nenhum outro componente quando utilizado o USBASP. Para ligações com outros Attinys, verificar a pinagem.


Usei o AVRDUDESS para ler (outras vezes já usei para gravar os fuse bits - e brickei os avrs).
Prá meu espanto, deu certo de prima:

Notar que usei o USBASP, Port USB, Baud 19200 e Bit clock 1.5, conforme orienta a maioria dos sites. O resultado no console foi da detecção (botão Detect). Como disse, este avr estava bricado. Montei um esquema de reset de fábrica para o avr e pelo jeito funcionou, pois o AVRDUDESS conseguiu detectar o modelo e ler os Fuse bits. Próximo blog é sobre esse circuito.



sábado, 23 de agosto de 2014

Formatação forçada de pendrive no Windows (XP, 7, 8, 8.1)

Tive problema com formatação de pendrive 2 vezes em 2 dias, devido à exigência do instalador. Foram 2 operações diferentes: instalar o Zabbix appliance e montar um pendrive de formatação UEFI do Windows 8.1.
A única referência que deu certo encontrei em https://en.opensuse.org/SDB:Create_a_Live_USB_stick_using_Windows, que vou transportar para cá, pois sempre os links acabam mudando ou morrendo.

  • executar o cmd.exe como administrador (geralmente shift+click no prompt de comando);
  • verificar a letra do pendrive no windows explorer;
  • digitar "mountvol letra: /d" e Enter (substituir letra pela letra do pendrive); dica: "mountvol  /?" mostra uma lista de parâmetros que podem ser usados;
  • digitar "diskpart" e Enter; este programa permite manipular a partição e formatação de drives; muito cuidado para não acabar com seu HD;
  • Digite "list disk" e Enter para listar os drives existentes;
  • digite "select disk 1" para selecionar o disco 1 (veja o número do pendrive, no exemplo é o 1);
  • "clean" limpa o disco (apaga todas as informações);
  • "create partition primary" cria uma partição primária;
  • "active" ativa a partição;
  • "format FS=fat32 Quick" executa uma formatação rápida na partição;
  • "assign" ativa o disco no windows;
Uma das finalidades foi descarregar uma imagem RAW do Zabbix no pendrive. Para conseguir realizar isso, precisei o programa imagewriter.exe no endereço  https://github.com/downloads/openSUSE/kiwi/ImageWriter.exe.

Aproveitando, segue abaixo o roteiro para montar um pendrive de boot do Windows 8.1 no Dell Inspiron 14 3541 no modo UEFI, visto no forum http://pt.community.dell.com/support-forums/notebooks/f/36/t/29638.aspx.


Criar um pen drive bootável do Windows 8 para placa-mãe com UEFI para formato GPT: Seu drive USB precisa ser bootável e estar formatado no sistema de arquivos FAT32, pois o UEFI não identifica um drive USB formatado em NTFS como drive de boot UEFI.
1.Abra e rode o CMD como administrador (comandos em negrito).
2. Digite Diskpart, aperte Enter.
3. Digite List Disk, aperte Enter.
4. Digite Select Disk # (# é o número do drive USB que será utilizado), aperte Enter.
5. Digite Clean, aperte Enter.
6. Digite Create Partition Primary, aperte Enter.
7. Digite Active e aperte Enter.
8. Digite Format FS=FAT32 Quick e depois Enter.
9. Digite Assign, e depois Enter.
10. Digite Exit e finalmente Enter.
11. Copie todo o conteúdo do DVD de instalação do Windows 8 para o pen drive. Um simples arrastar e soltar já completa o processo (se você tiver usando um arquivo de imagem .ISO, extraia ou monte a .ISO para copiar os arquivos para o drive).

Dando boot, Particionando e Formatando em GPT manualmente para Windows 8 (com o setor de 4KB):
 *O modo UEFI precisa estar ativado no BIOS de seu notebook ou computador para que o mesmo reconheça o novo dispositivo de boot UEFI quando der boot na máquina para a instalação do sistema.
1. Dê boot da mídia de instalação do Windows (você precisa inicializar de um dispositivo marcado como UEFI, ou então a instalação do Windows poderá dar um erro que impede do sistema ser instalado na partição). Estes dispositivos de boot UEFI possuem um prefixo “UEFI + nome do seu dispositivo”, e mostra o drive como opção de boot em seu UEFI.
2. Depois do boot você verá a tela de instalação do Windows 8. Lá, aperte Shift + F10 para abrir um prompt de comando.
3. No prompt de comando, digite Diskpart, tecle enter.
4. Digite List Disk, tecle Enter.
5. Digite Select Disk # (onde # é o número do drive que aparecer no prompt), tecle Enter.
6. Digite Clean, tecle Enter.
7. Digite Convert GPT, tecle Enter.
8. Digite Create Partition EFI Size=100, tecle Enter.
9. Digite Format FS=FAT32 Quick, tecle Enter.
10. Digite Create Partition MSR Size=128, tecle Enter.
11. Digite Create Partition Primary Align=4096, tecle Enter.
12. Digite Format FS=NTFS Quick, tecle Enter.
13. Digite Exit, e depois Enter.
14. Feche o prompt.
15. Clique em Próximo (Next).
16. Clique em Instalar Agora (Install Now).
17. Aceite os termos e clique em Próximo.
18. Escolha Personalizado: Instalar o Windows apenas (avançado)(Custom: Install Windows only (advanced)).
19. Clique na partição.
20. Clique em Próximo.*
21. A partir daí, siga as instruções na tela até chegar na área de trabalho.
*Se fez tudo até aqui certinho como descrito acima, o resto é só o famoso "avançar, avançar, avançar..." 


Adendo 01/06/2021

Já estava desistindo quando achei este um post em https://www.icare-recovery.com/howto/sd-card-turned-raw.html que acrescentou um comando ao diskpart: alinha que começa com attributes no print abaixo matou o problema