• Welcome to LusoRobótica - Robótica em Português.
 

Como funciona um Arduino?

Started by Njay, 24 de February de 2015, 15:17

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

andElectrons


dropes

Quote from: senso on 27 de February de 2015, 15:49
Eu já vi, mas só porque BDSM está outra vez na moda.
Estás sempre a falar por códigos, muitos deles vou pesquisar para não passar por analfabeto...   ???

As siglas de BDSM agrupam diversas práticas sexuais que se podem levar todas a cabo ou optar por alguma que lhe gere maior prazer ou atração:

    B - Bondage
    D - Dominação
    S - Submissão e sadismo
    M - Masoquismo


ps: corrijam-me se estiver errado, não sei o que vai na cabeça do @senso ou a descrição tem a ver com arduinos :o

metRo_

Quote from: dropes on 27 de February de 2015, 17:26
Quote from: senso on 27 de February de 2015, 15:49
Eu já vi, mas só porque BDSM está outra vez na moda.
Estás sempre a falar por códigos, muitos deles vou pesquisar para não passar por analfabeto...   ???

As siglas de BDSM agrupam diversas práticas sexuais que se podem levar todas a cabo ou optar por alguma que lhe gere maior prazer ou atração:

    B - Bondage
    D - Dominação
    S - Submissão e sadismo
    M - Masoquismo


ps: corrijam-me se estiver errado, não sei o que vai na cabeça do @senso ou a descrição tem a ver com arduinos :o

Basicamente ele esta a dizer que gosta de sofrer, por isso e que foi ver o esquema do arduino!

Njay

#33
Ele gostar gostar não gosta de sofrer, mas como tá na moda...

Ó dropes, usar siglas é a única maneira dele conseguir escrever a mais de 1/10 da velocidade a que pensa :D

senso

É um esquema um bocado, digamos que ranhoso, é uma palavra engraçada que se vê poucas vezes nas internetz.

Sendo a pseudo bandeira do hardware open source, define um standard muito baixo, tudo muito em monte, nets sem grande sentido, pistas no ar sem nome, enfim..
Avr fanboy

senso

Eu até que nem escrevo muito devagar, agora a mente, é com cada derrapagem temática  ::)
Avr fanboy

Njay

#36
Não sei já repararam que um arduino (com o ATmega328) é umas 16 10 vezes mais rápido e tem quantidades de memória (flash e ram) semelhantes ao computador de navegação da Apollo, que levou os americanos à Lua.

dropes

Bem, fiquei mais esclarecido e vamos rezar para que os astronautas não venham com invenções e tenham a infeliz ideia de começar a usar arduinos com shields nas suas missões  ;D

Agora deu-me para ir ver o tão famoso esquema, uma coisa já me fazia confusão à algum tempo... do duemilanove para o uno, foi colocado um ftdi e mais tarde trocado pelo mega8, funcionando em vusb.

Então a minha dúvida é, porque é que não se liga directamente a porta usb ao atmega328, a resposta é simples usb <> rs232 e o bootloader só suporta rs232, a ideia de unir o vusb de 4kB ao bootloader era bom se funcionasse.
Neste caso o vusb seria um programa que interpretaria os sinais vindos do usb e gravaria na flash, excluindo o bootloader por assim dizer.

Isto é possível?

andElectrons

Quote from: dropes on 27 de February de 2015, 18:40
Bem, fiquei mais esclarecido e vamos rezar para que os astronautas não venham com invenções e tenham a infeliz ideia de começar a usar arduinos com shields nas suas missões  ;D


Houve há uns anos um projecto de crowdfunding em que queriam mandar um arduino para o espaço. Não sei como foi que isso ficou mas tenho alguma curiosidade visto que os atmegas 'normais' não são radiation-hardened para trabalharem fora da atmosfera.


Quote from: dropes on 27 de February de 2015, 18:40
Então a minha dúvida é, porque é que não se liga directamente a porta usb ao atmega328, a resposta é simples usb <> rs232 e o bootloader só suporta rs232, a ideia de unir o vusb de 4kB ao bootloader era bom se funcionasse.
Neste caso o vusb seria um programa que interpretaria os sinais vindos do usb e gravaria na flash, excluindo o bootloader por assim dizer.

Isto é possível?

Não sei se será esta a razão mas implementar vusb no bootloader iria aumentar o tamanho do mesmo, deixando menos espaço para o codigo do utilizador, visto que o serial tem suporte nativo e usb não.



dropes

#39
Sim, chegaram mesmo a enviar um arduino para o espaço, espero que não volte LoL :P
(nunca se sabe os shields que lhe colocaram e levar com um na carola deve doer)

Quanto ao 2 em 1 seria complicado a nível de programação, é mais bonito ter um micro para cada função mas tirar o mega8 seria vantajoso mesmo para os nanos.
Passar de 32K para 28K não era grave, se bem que tens razão numa coisa, o 328 tem série por hardware... seria uma coisa a estudar já que os códigos são open source.

@Njay, o Homem dos desafios, tenho um novo para ti  ;D hehehe

senso

RS-232 é um protocolo que define tambem a parte em hardware da coisa, ou seja, para ser RS-232 tem de ter o mark e o space a variarem entre -12v e +12v, houve muita alteração ao protocolo, mas o atmega em si só tem uma UART, se queres RS-232 tens de atirar com um transceiver(tipicamente o MAX232).

Não é um atmega8 que adicionaram mas sim um Atmega8U2 que tem suporte USB nativo.

Poderias usar o VUSB, mas depois ficas sem comunicação serial para debug(ou outra coisa qualquer) com o pc sem usares um conversor usb-serial externo, estarias a tirar funcionalidade á placa, e o V-USB sendo USB bit-bang consome alguns/bastantes recursos(a nivel de RAM e tempo de processamento), irias limitar demasiado o micro-controlador, para além de que o USB podia ou não funcionar, dado que é só uma aproximação das especificações do USB por hardware(ou com mais ajuda de hardware).
Avr fanboy

andElectrons


É engraçado estarmos a falar aqui de VUSB pq tentar usar isso amanhã num projecto que partilhei aqui há +/- um mês atrás.




dropes

Quote from: senso on 27 de February de 2015, 20:34
RS-232 é um protocolo que define tambem a parte em hardware da coisa, ou seja, para ser RS-232 tem de ter o mark e o space a variarem entre -12v e +12v, houve muita alteração ao protocolo, mas o atmega em si só tem uma UART, se queres RS-232 tens de atirar com um transceiver(tipicamente o MAX232).

Não me estava a referir dos níveis de tensão da comunicação RS232 mas ao protocolo em si usado pelo UART, talvez por gostar mais do nome referi RS232, ups

Quote
Não é um atmega8 que adicionaram mas sim um Atmega8U2 que tem suporte USB nativo.

Desconhecia, isso faz toda a diferença e lá se foi a minha ideia pro galheiro.

Quote
Poderias usar o VUSB, mas depois ficas sem comunicação serial para debug(ou outra coisa qualquer) com o pc sem usares um conversor usb-serial externo, estarias a tirar funcionalidade á placa, e o V-USB sendo USB bit-bang consome alguns/bastantes recursos(a nivel de RAM e tempo de processamento), irias limitar demasiado o micro-controlador, para além de que o USB podia ou não funcionar, dado que é só uma aproximação das especificações do USB por hardware(ou com mais ajuda de hardware).

Sem dúvida, estava a achar um pouco estranho o código ser tão pequeno para simular USB, e suportar uma velocidade decente, claro.
A porta UART perdia, não vejo forma de comunicar com o PC depois de ser programado, e o código nunca poderia ser confirmado se fora bem gravado.

Após uma pequena visita ao google, a velocidade não é critica USB1.1 = +-1.43 MB/s mais que suficiente quando se quer gravar 32kB.

V-USB:
Fully USB 1.1 compliant low-speed device.
Only about 1150 to 1400 bytes code size.
Runs on any AVR microcontroller with at least 2 kB of Flash memory, 128 bytes RAM and a clock rate of at least 12 MHz.



senso

Sim, a biblioteca não é monstruosa, e até cabe na secção do bootloader, logo não perdes capacidade de verificação, e podes fazer uma coisa á lá NXP que tem funções pré-compiladas numa ROM e depois é só fazer a chamada das mesmas, podia-se manter o VUSB funcional fazendo o que se pode chamar de syscalls para a secção do bootloader, a coisa é que tens o INT0 a bombar interrupções a 1ms se não estou em erro.
É um bocado estilo RPi, USB é semi-software, perdes uma interrupções tens perda de pacotes, ou desliga-se o USB.
Avr fanboy

Njay

Ao arrancar o bootloader pode espreitar a ver se há aqueles pull-up/downs do USB; se houver, então activa-se como USB e fica à espera de comunicação (código, etc) do host, caso contrário desactiva tudo e o código de aplicação depois pode invocar as rotinas do bootloader para usar o USB como menciona o senso ou usa a UART ou o que quiser. Tinha que haver uma maneira de activar/desactivar os pulls USB (há várias soluções para isto).