Mostrar mensagens com a etiqueta Microcontroladores. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Microcontroladores. Mostrar todas as mensagens

08 setembro 2008

Programação visual em Assembly?

Quem tem como hobbie programar microcontroladores gosta com certeza de passar algum tempo a "brincar" com os poucos bytes de memoria disponíveis e programar em Assembly.

Um dia deste enquanto me divertia com um PIC16F628 pensei: "e se fizer um ambiente realmente visual para programar em Assembly?"

Fiz alguns desenhos e estudos e algum tempo depois obtive o primeiro prototipo funcional do "Visual Pic Algorithm Builder":

Depois com tempo faço um resumo do projecto e dos objectivos mas para já fica um primeiro screenshot da janela de edição:

07 janeiro 2008

Míni, micro, “xipiti” robô

Vamos construir, programar e “brincar” com um míni, micro, nano, “xipiti” (a palavra preferida do filho) robô?

Para quem tem muito que fazer (como eu) ou, para quem quer passar à frente da fase de planear, desenhar, construir, e depurar a placa principal do projecto, a solução poderá passar pela “maravilhosa” micro megabitty!


Pois é: tiny bitty!

Especificações:

• Dimensões: 23 x 23 mm
• Peso 2 gramas
• Operação de 6 a 12 Vols
• Pode controlar directamente motores até 500 mA (cada)
• Boot-loader
• MPU - Atmel AVR AtMega8
o 16 Milhões de instruções por segundo
o 8k Flash; 1k RAM (SRAM); 512 bytes EEPROM
o SPI, TWI, UART
o 8 x 10bit conversores analógico-digital
o 2 x 8bit timers / counters

Programação:

Como qualquer AVR (há excepção dos tinyAVR) pode ser programado em C com GCC

tra la la...

Pois é com o, verão a passar férias no hemisfério sul, o melhor é mesmo ocupar o tempo numa daquelas tarefas, sossegadas, descontraídas, tipo bricolagem tecnológica...

Bom, o melhor é mesmo intercalar o projecto com algumas saídas e copos para não cairmos definitivamente na condição de geeks ou neerds (runft) ... umas caipirinhas no bairro alto servem perfeitamente... (tenho saudades do nova... snif snif snif) bom, deixemo-nos de coisas tristes...

Algumas imagens de robots construídos com a MegaBitty para inspiração:




Links:

http://www.robotmaker.co.uk/

http://www.bittybot.com/
http://www.hvwtech.com/
http://www.solarbotics.com/

e mais algumas imagens em: http://community.webshots.com/album/86195746gFUAWf

20 dezembro 2007

Multiplicação em binário.

Imaginemos uma simples multiplicação entre dois números decimais: 7 . 5 = 35

Em binário:

x2 = 111 (710)
y2 = 101 (510),
ou seja: y10 = 1 . 22 + 0 . 21 + 1 . 20 ou 1 . 1002 + 0 . 102 + 1 . 12

se,

y = 1 . 100 + 0 . 10 + 1 . 1 = 101

então

111 . 101 = 111 . (1 . 100 + 0 . 010 + 1 . 001)

De acordo com a propriedade distributiva:

111 . (1 . 100) + 111 . (0 . 010) + 111 . (1 . 001)

Fazendo uso das propriedades associativa e comutativa:

111 . 101 = (111 . 100) . 1 + (111 . 10) . 0 + (111 . 1) . 1

Este trabalho todo para decompor o multiplicador nos seus bits e aplicar essa decomposição à operação serve para garantir que a multiplicações sejam sempre feitas com resultados a expoenciação da base 2.

(101 = 1 . 100 + 0 . 10 + 1 . 1)

Em qualquer base numérica, multiplicar um numero pela base ou por resultados da expoenciação da base é equivalente a “deslocar” o numero para a esquerda (adicionando zeros) ex.: 310 . 1010 = 3010

donde:

111 . 100 = 11100
111 . 10 = 1110
111 . 1 = 111


assim:

111 . 101 = 11100 . 1 + 1110 . 0 + 111 . 1
= 11100 + 0 + 111
= 100011
= 3510

Consegue-se resumir a operação de multiplicação, que não existe na maior parte dos microprocessadores ou microcontroladores de 8 bits, nas operações de soma e deslocar (shift).

Podemos então escrever o seguinte algoritmo:

; operação de multiplicação z = x . y
z = 0
enquanto y != 0
o bit menos significativo de y == 1?
sim: z = z + x
x << 1
y >> 1

18 dezembro 2007

solenoid concert

Vale a pena ouvir (e ver) este projecto baseado numa placa arduino.

Grande som! [tinha-me enganado no video :( runft]

Arduino

Quem se quer iniciar (de alguma forma) em electrónica digital rapidamente descobre que melhor caminho para qualquer projecto será a utilização de uma CPU (o ideal será a escolha de um microcontrolador que para além da CPU contem no chip vários periféricos).

Existem vários tipos no mercado a preços bastante convidativos. Uma pesquisa rápida no google dá para descobrir n famílias e fabricantes.

Os AVR da Atmel podem ser programados em C com GCC. A distribuição winAVR contem tudo o necessário para começar a desenvolver e “brincar” com estes chips e existe uma comunidade interessante com muito know how para ajudar.

Para facilitar ainda mais as coisas surgiu o Arduino que é uma placa com hardware opensource. Já existe uma comunidade crescente de pessoas a criarem projectos com a solução Arduino. Para além da placa, no site, pode-se fazer o download de um ambiente de desenvolvimento rápido baseado no GCC.

Com o arduino podem-se fazer experiências e pequenos projectos utilizado como chip os AVR ATMega8 ou ATMega168. (menos de 10 € cada)

http://www.arduino.cc/
http://www.avrfreaks.net/
http://www.atmel.com/dyn/products/devices.asp?family_id=607#760
http://www.hvwtech.com/products_view.asp?ProductID=661

Projecto com arduino (mood light)

Mini Robô


Um mini robô, com um processador de 8k ROM. (não sei bem que processador mas provavelmente um AVR, ou algo do género)

Minúsculo!


http://sandia.gov/media/NewsRel/NR2001/minirobot.htm