Desenvolvimento MSP430 LaunchPad Energia – FEL

Energia

Antes de mais nada Queria Agradecer a Ana Santos representante da Farnell Brasil. que me disponibilizou algumas Msp430 que serão distribuídas Gratuitamente aos participantes da palestra que irei ministrar Sobre  Fedora Eletronic Labs no dia 17 no Espaço Equador – Latinoware 2014 .

  Para quem quiser adquirir uma  o link da Farnell Brasil.


A placa é produzida em baixo custo com desenvolvimento baseado em microcontroladores da família Texas Instruments MSP430, ele vem em uma bela caixa com dois MCUs diferentes, um cabo USB e um cristal SMD pequena 32KHz pronto para ser soldada na placa (que você normalmente não precisa dele para as operações básicas), O software é um backend gcc e um clone do Arduino IDE (Fork) e das bibliotecas. Esta fork  com as mudança de ambiente seja muito fácil ,mas ainda sera explorado e darei maiores detalhes nos próximos post.

A IDE é  chamada  de Energia e pode ser baixado com os  binários pré-empacotados  no site  http://energia.nu/download/ ou do repositório GitHub: https://github.com/energia/Energia

A comunidade é ainda muito pequena no Brasil é menor  do que a enorme comunidade Arduino no mundo , mas está crescendo rápido, você pode encontrar um alguns links úteis no final deste artigo.

Alguns “Shieldscompatíveis com LaunchPad também estão disponíveis na loja de TI, particularmente interessante o capacitivo e shields de áudio, que adicionar uma capacidade de interface de toque e MP3 gravação / reprodução para o dispositivo. Para uma visão geral dos Launchpads disponíveis, consulte http://www.ti.com/ww/en/launchpad/overview_head.html

Comparação com Arduino


A intenção de TI quando lançou sua placa de desenvolvimento foi claramente a seguir e explorar o enorme sucesso do Arduino, e estas comparações iram tentar lançar alguma luz sobre as semelhanças e diferenças de Arduino e LaunchPad + Energia.


Hardware
A placa Launchpad é fornecido com dois diferentes MCUSs: MSP430G2553 e MSP430G2452, ambos são 20 dispositivos de pinos, mas o 452 tem a metade do flash e de RAM do 5523.

Comparando MSP430 e ATmega328P é como comparar maçãs e laranjas,

mas podemos tentar resumir as principais diferenças:
MCU apresenta

 

                                                        Arduino/ATmega328P                 Energia/MSP430G2553


Arquitetura                                    8bit RISC Harward                   16bit RISC Von Neumann
Fonte de alimentação (típico).                                            3.3V5V

Flash                                                       32KB                                         16K PINs                                                         28                                               20
Timers                                                       2                                                2
Pinos PWM                                               6                                                3

RAM                                                      2KB                                           512B
                                                  8 MHz int. ou 16 MHz                     16 MHz int.

                   ext                                          speed ext.

Características de Desenvolvimento :
on board LEDs                                      1                                                    2
botões 
MCU                                1 (reiniciar)                             2 (reset + uma de reserva)
depurador + emulador                         não                                                sim

O que posso dizer com certeza que ATmega328P bate MSP430G2553 em Flash e tamanho da memória RAM, mas onde MSP430 é claramente superior é:

quando usado em modos de baixo consumo
Velocidade da CPU graças a arquitetura de 16 bits
MCU preço: custa cerca de um terço do ATmega328P
evolução dos preços board : ~ 30 R$ Msp420   vs. ~ 70 R$ de um UNO Arduino

Deatlhe os  shields do Arduino são compatíveis com a  bibliotecas comunitárias e softwares estão muito à frente com a  MSP430 / Energia.

Links Úteis :

Happy hacking! — e com as malas prontas para LatinoWAre.

Advertisements

migen ? o que é ?

Migen (Milkymist gerador)

  Como esta devendo um post sobre Migen . esta aqui , baseado no git e no tutorial fornecido pela M-labs que constantemente estao atualizando no git-hub .
O Migen é  uma caixa de ferramentas do Python para a construção de hardware digital de complexo
mais rápido para , design de hardware .

 Usando  Verilog e  o VHDL é tedioso e ineficaz por várias razões. O event-driven
modelo introduz questões e codificação manual que são as vezes desnecessários para
circuitos sincronos , que representam a maior parte dos projetos lógicos de hoje. Contra-
regras aritméticas intuitivos resultar em curvas de aprendizado mais íngremes ou digamos mais  complexas  e fornecer uma Ferramenta  com erros sutis no designer. Finalmente, o apoio  aos processoes de geração de lógica (metaprogramação) através de declarações em “Geraré muito
limitado e restringe os códigos de formas que  podem ser feito de forma  genérica, e mais importante  é ser reutilizados e organizado.

Para abordar melhor essas questões, desenvolvemos a biblioteca Migen FHDL que
substitui os paradigmas baseado em eventos com as noções  combinatória de
declarações síncronos, tendo como regras aritméticas que fazem os inteiros sempre se comportam
como inteiros na  matemáticas, e mais importante permite que a lógica do projeto para ser 
 construída por um programa em Python.Este último ponto permite que os designers de hardware
possam  aproveitar melhor a riqueza da linguagem Python – orientada a objeto
na programação, os parâmetros da função, geradores, sobrecarga de operadores, bibliotecas,
etc , para construir um projeto  bem organizado e  projetos reutilizáveis ​​e sem perder a elegancia.

Outras bibliotecas MIGEN foram  construídos sobre FHDL e fornecem várias ferramentas, tais como a
infra-estrutura de interconexãosystem-on-chip”, um sistema de programação de fluxo de dados, com um ou mais tradicional sintetizador de alto nível que reúne rotinas Python e  em máquinas de estado com caminhos de dados, e um simulador que permite o uso de  bancos de testes para ser
escrito em Python.

Introdução rápida:

from migen.fhdl.std import *
from mibuild.platforms import m1
plat = m1.Platform()
led = plat.request("user_led")
m = Module()
counter = Signal(26)
m.comb += led.eq(counter[25])
m.sync += counter.eq(counter + 1)
plat.build_cmdline(m)

Código repositório:
https://github.com/mlabs/migen
System-on-chip design baseado em Migen:
https://github.com/mlabs/misoc

Projetando um flip-flop D usando Migen

Se você não tiver instalado Migen ou não sabe sobre Migen, leia nos proximos posts como Instalando Migen a linguagem de descrição de hardware Python baseado Flip-flops D


AD flip-flop  libera dados  que são mantido no pino de entrada de dados quando o Clock é aplicado (na entrada for positiva ou negativo ). O flip-flop D que prescisamos  ter um  pino  D é a entrada Q  e o pinos de saída Qi (invertida de Q). Ele também tem uma entrada de Clock que  e um pino de reset que faz o sincronismo flip-flop.

O flip-flop D  sera mostrado  aqui uma vantagem positiva desencadeada no flip-flop. A tabela verdade representa o mapeamento entre os pinos de entrada para os pinos de saída com base no pino de reset e estado pino do relógio. Desde a sua uma vantagem positiva desencadeada flip-flop, o pino do Clock é mostrado como uma transição de baixo para alto.

Apenas para referência, esta é a folha de dados de um flip-flop D IC.

A D flip-flop usando Migen
Crie um arquivo chamado Dff.py e adicione este código para ele.

———————————————————————————–

 

———————————————————————————–

  1. from migen.fhdl.std import *
  2.  
  3. class Dflipflop(Module):
  4. def __init__(self, D, Q, Qi):
  5. self.sync += Q.eq(D)
  6. self.comb += Qi.eq(~Q)

——————————————————————————————-

——————————————————————————————-

 

Os circuitos digitais podem ser divididas em síncrones (ou seja, funciona com base na entrada de clock) e assíncrones (independente do Clock) circuitos.

Circuitos assíncronos são também conhecidas como lógica de combinações. A sintaxe do Python usado para descrever o flip-flop D pode ser mais claramente compreendida através da leitura da guia Migen. Então eu não vou estar explicando aqui a sintaxe utilizada. descrevendo os (assíncrono) declarações síncronas e combinações estão no meu âmbito de Conhecimento.

 Porem este artigo parcialmente foi traduzido de outro blog que faz referencia ao projeto Migen , que sem descritivo nao poderia fazer este projeto do Flip- Flop usando o Fedora Eletronic Lab’s .

 
——————————————————————————————————————————
self.sync += Q.eq(D)

——————————————————————————————————————————
 Q.eq (D) é equivale / a copia do conteúdo de D para  Q que são a entrada e saída de nosso flip-flop.  Então sera designado como síncrono usando self.sync + =. Como mencionado anteriormente, um flip-flop D copia os dados do pino de entrada para o pino de saída em sincronia com a transição do Clock(pulso do clock). Assim, como este circuito é um circuito de sincronismo Digital
 ——————————————————————————————————————————————————–
self.comb += Qi.eq(~Q).
 ———————————————————————————————————————————————————
Qi.eq (~ Q)  é usado para inverter Q e copiar para Qi. Isto é atribuído como uma lógica de combinações. Isso significa que Qi é independente do pulso do Clock . Mas o flip-flop é um síncrone Isso não significa que vai mudar de forma assíncrona, desde a entrada de Qi é de uma lógica Q. síncrona
 
Testando o flip-flop D
Atualize seu arquivo  Dff.py com o código abaixo.
 —————————————————————————————————————————————————-
—————————————————————————————————————————————————–
  1. from migen.fhdl.std import *
  2. from migen.fhdl import verilog
  3. from migen.sim.generic import Simulator, TopLevel
  4. from random import randrange
  5.  
  6. class Dflipflop(Module):
  7. def __init__(self, D, Q, Qi):
  8. self.sync += Q.eq(D)
  9. self.comb += Qi.eq(~Q)
  10.  
  11. def do_simulation(self,s):
  12. s.wr(D,randrange(2))
  13.  
  14. #Simulation and verilog conversion
  15. D = Signal()
  16. Q = Signal()
  17. Qi = Signal()
  18.  
  19. #print(verilog.convert(Dflipflop(D, Q, Qi), ios={D,Q,Qi}))
  20.  
  21. sim = Simulator(Dflipflop(D,Q,Qi), TopLevel(“Dff.vcd”))
  22. sim.run(100)

————————————————————————————————————————————————————

————————————————————————————————————————————————————

Executando o script em python usando os comandos

Vai gerar um Dxf.vcd que contém o resultado do nosso teste . O arquivo vcd pode ser visualizado utilizando ferramenta gtkwave.

——————————————————————————————————————————————————————-

python3 Dff.py

—————————————————————————————————————————————————————–
gtkwave Dff.vcd

———————————————————————————————————————————————————————

GTKWave-Dff.png

Como mencionei antes, leia o guia oficial do usuário  do Migen e tutorial para entender melhor como funciona melhor os código .

Para testar a D flip-flop, é preciso verificar se as entrada (D) é são copiadas  para a saída (Q e também Qi). Para isso, a entrada D deve ser alimentado com os valores (0 ou 1). Podemos usar o módulo randomico em Python para gerar alguns valores aleatórios.

s.wr (D, randrange (2))
O randrange é uma  função (2) que gera um número aleatório  ou seja 0 ou 1 s.wr escreve o número aleatório para D. A escrita acontece apenas depois de passar para  positivo no ciclo de clock.

Verilog  e equivalente do flip-flop D

Como irei mencionar nos proximos post’s ( instalaçao do Migen a linguagem de descrição de hardware baseado em Python), Migen  faz a converção  do código  do Python para código  Verilog equivalente. As ferramentas FPGA que temos atualmente só entende apenas Verilog / VHDL, isso é necessário conhecer . O código Verilog é  gerado e pode ser carregado para o software do seu fornecedor FPGA e verificado em seu hardware real. Mibuild (uma ferramenta dentro Migen) suporta alguns distribuidores de  FPGA para o qual você não tem que colar manualmente o seu código no Verilog para que seu  software  que foi fornecido para usar  no FPGA. Mibuild vai fazer isso por você (acessando ferramentas de distrobuidores  via linha de comando) e ainda pode carregar o arquivo de fluxo de bits para seu FPGA. Apenas Usando o  Mibuild  que será explicado .

Descomente sua  linha no  arquivo gerado  Dff.py e execute o seu código python novamente. Esta linha irá imprimir o código equivalente ao  Verilog do nosso  flip-flop D

————————————————————————————————

print(verilog.convert(Dflipflop(D, Q, Qi), ios={D,Q,Qi})).

 ————————————————————————————————
Abaixo estará  a saída do Verilog.
 ———————————————————————————————–
  1. /* Machine-generated using Migen */
  2. module top(
  3. input D,
  4. output reg Q,
  5. output Qi,
  6. input sys_clk,
  7. input sys_rst
  8. );
  9.  
  10.  
  11. // synthesis translate_off
  12. reg dummy_s;
  13. initial dummy_s <= 1‘d0;
  14. // synthesis translate_on
  15. assign Qi = (~Q);
  16.  
  17. always @(posedge sys_clk) begin
  18. if (sys_rst) begin
  19. Q <= 1′d0;
  20. end else begin
  21. Q <= D;
  22. end
  23. end
  24.  
  25. endmodule
  26. —————-

Outra forma de testar seu  flip-flops D: Usando um  divisor de frequência

Nota: Abaixo se mostrado  uma forma que não é a maneira certa de fazer uma divisão de freqüência.Mas  este é apenas um exemplo para Elucidar ou mostrar as capacidades de teste de MIGEN.

AD filp-flop pode ser usado como um divisor de frequência (frequência / 2). Leia este post  para uma explicação mais clara. Fazer uma conexão de Qi para D para dividir a frequência (alimentado ao pino do clock ) por 2  e Ligar um fio entre os pinos e é muito fácil com uso do  Migen – basta usar o mesmo sinal () para ambos os pinos.

Crie um arquivo chamado Dff_Divider.py e adicione o código abaixo.

  1. from migen.fhdl.std import *
  2. from migen.fhdl import verilog
  3. from migen.sim.generic import Simulator, TopLevel
  4.  
  5. class Dflipflop(Module):
  6. def __init__(self, D, Q, Qi):
  7. self.sync += Q.eq(D)
  8. self.comb += Qi.eq(~Q)
  9.  
  10. #Simulation and verilog conversion part
  11. Connect = Signal()
  12. Q = Signal()
  13.  
  14. sim = Simulator(Dflipflop(Connect,Q,Connect), TopLevel(“Dff_Divider.vcd”))
  15. sim.run(100)

 

 

 

 

Gnome 3.12 no Fedora 20

Gnome 3.12

Voce ja pode usar no Fedora 20 o novo  Gnome 3.12  este repositorio que é  mantindo  por  Richard Hughes (Gnome Power Manager and PackageKit Maintainer)

. este  repositorio  o usuario consegue  acompanhar a evoluçao do  Gnome 3.12. E usando esta nova versao do Gnome ja podemos imaginar como sera a nova versão do Fedora  e acredito que  a versao final sera em outubro .

 

Captura de tela de 2014-07-31 21:05:46 Captura de tela de 2014-07-31 21:05:30

 

Instalando Gnome

1. Aadicionar o repositorio  GNOME 3.12 no Fedora 20  usando seguintes comandos.:

Repositorio para o Fedora 20– 32bit Version

su -
echo -e "[rhughes-f20-gnome-3-12-i386]\nname=Copr repo for f20-gnome-3-12 owned by rhughes (i386)\
nbaseurl=http://copr-be.cloud.fedoraproject.org/results/rhughes/f20-gnome-3-12/fedora-\$releasever-i386/\
nskip_if_unavailable=True\ngpgcheck=0\ncost=900\nenabled=1" > /etc/yum.repos.d/rhughes-f20-gnome-3-12.repo

Repositorio para o Fedora 20 – 64bit Versions

su -
echo -e "[rhughes-f20-gnome-3-12-i386]\nname=Copr repo for f20-gnome-3-12 owned by rhughes (i386)\
nbaseurl=http://copr-be.cloud.fedoraproject.org/results/rhughes/f20-gnome-3-12/fedora-\$releasever-i386/\
nskip_if_unavailable=True\ngpgcheck=0\ncost=900\nenabled=1\n\n[rhughes-f20-gnome-3-12-x86_64]\
nname=Copr repo for f20-gnome-3-12 owned by rhughes (x86_64)\
nbaseurl=http://copr-be.cloud.fedoraproject.org/results/rhughes/f20-gnome-3-12/fedora-\$releasever-x86_64/\
nskip_if_unavailable=True\ngpgcheck=0\ncost=800\nenabled=1" > /etc/yum.repos.d/rhughes-f20-gnome-3-12.repo

2. Upgrade para o GNOME 3.12 no Fedora 20:

yum update

Com esta nova adaptaçao   todos os   packages necessarios para rodar o gnome 3.12  serão revisados e tambem serão Atualizados e .apos ter completado  por total a adaptaçao no sistemas  é necessario um restart e ja sera logado  com o  Gnome 3.12

  Esta versão esta mais estavel  que as anteriores   e melhor.
  Ja estou usando uma semana e apareceu a  atualizaçao automatica 

Chegou a beagleBone Black !!!

Apanhando pra criar sd boot com Fedora 20

IMG_0058A Beaglebone Black (BBB) chegou recentemente mas nunca consegui fazer um bom post falando sobre .

Um otimo brinquedo para quem gosta de treinar Programçao pois ela permite dentro da estrutura  python, C,C++, C#, Java . acreito que nela roda ate cobol …

Verdadeiro brinquedo de marmanjo. e o bacana que essa brincadeira fica  ainda  melhor quando sabe eletrónica que é meu caso e programação (novato) e complementa com um Arduino do qual tame=bem so fanatico .que alias esta ao lado BBB , esse é Italiano ai e Arduino Mega e tenho outra versão  que Arduino uno , mas esse eu perdi para meu pai quando me fe uma visita no final de ano .E em breve  farei post  dele com o arduino  e mais engraçado que ele conseguiu fazer blink em python n arduino mas isso e para outro post.

Mas voltando a BBB , nem presciso dizer que ela virou base de teste para Fedora e alguns teste roda em arm e bacana que consegui gereciar minha conta no github e openstack e openshit .. mas ainda tudo anda meio bagunçado , pois ainda estou me dedicando em aprender e compreender como funciona ambiente virtual e cloud  e percebi que muita gente tb adna confundido virtualizaçao com cloud  andam juntos mas aplicaçoes sao diferenciadas . principalmente quando voce começa a ver  a coisa nadar ..

em breve colocarei algumas fotos de pelo menos  blink ou outras coisas mais que ando fazendo .

Fedora na Campus Party BRasil .

Fui convidado a contribuir com software livre com a  palestra organizada por Paulo Santana  dentro da Campus Party

Para Falar um pouco sobre como e o porque usamos uma distribuição Linux . Qual motivo nos levou a contribuir com essa distro gnu/linux

 

Imagem

Foi em primeiro momentoestava  muito nervoso  de como seria a reação das pessoas ali e acabou sendo bem tranquilo

Imagem

Gostei muito dos outros palestrantes e de suas relaçao com as Distros gnu/linux.

Imagem

Gostaria de agradecer a todos novos amigos da Comunidade  Software livre que estiveram na Campus party parabens pelo otimo trabalho .

Release Party F20

Imagem

Projeto Fedora fez 10 anos  .

A Convite do Embaixador e amigo Leo Vaz, estive no do dia 17/01/2014  nas dependências da RedHat para  apresentação das novas  funcionalidades e novidades no Fedora 20  e o que vira para Fedora 21 (aguardem!!) e alem de falar sobre as novidades também de como será nosso próximo passos para projeto.

Eu senti  que 2014 sera um ano mais criativo para projeto tendo com base um maior envolvimento em eventos de Software Livre

Imagem

Tivemos um track sobre o OpenShift que é uma otima aplicaçao em nuvem,e aplicação como push para mensagens instantâneas usando gear. Imagem

Neste dia tive a oportunidade de conhecer e conversar com Grandes Pessoas que estao de uma  certa forma envolvida com  o Projeto é sempre Graificante aprender com eles

Imagem

pow fico devendo nomes na foto  , Léo Vaz ,Ricardo, Cláudio ,Douglas “QMX”,Davi ,Luan