Tecnologias

Categoria para as tecnologias de mercado.

Métodos Ágeis: É Importante a Certificação?

g2996Neste artigo vou abordar a importância da certificação em métodos ágeis. O uso de métodos ágeis como uma abordagem para gerenciamento de projetos tem aumentado dramaticamente nos últimos anos. O Gartner prevê que os métodos ágeis serão utilizados em 80% de todos os projetos de desenvolvimento de software.

Uma pesquisa feita pelo PMI mostrou que o uso de práticas ágeis tem aumentando drasticamente ao longo dos anos. Além disso, a pesquisa demonstra o valor que métodos ágeis podem ter na redução de defeitos do produto, melhorando a produtividade da equipe, melhoria na entrega e aumento do valor comercial.

O PMI-ACPSM está posicionado para reconhecer e validar o conhecimento desta importante abordagem. Com a disseminação do gerenciamento de projetos e do constante desenvolvimento de suas ferramentas, os profissionais da área vem se confrontando com um mercado próspero–porém muito complexo.

Devido ao crescimento desse mercado ocorreu também a expansão de diversos cursos de especialização na área de gerenciamento de projetos, praticamente em todas as cidades de médio/grande porte existem dezenas desses cursos. Tendo em vista à evolução do gerenciamento de projetos, o PMI, reconhecendo as necessidades do mercado, oferece diferentes certificações, entre elas a PMI –Agile Certified Pratictioner (PMI-ACP) resultado do ambiente de negócios dinâmico em que hoje as diferentes organizações atuam.

O aumento do número de cursos por um lado proporciona o fomento da área e a formação de massa crítica, porém a falta de padronização e muitas vezes a dissonância com as práticas do Guia PMBOK® criam dúvidas sobre a qualidade de muitos cursos e consequentemente sobre o conhecimento de alguns profissionais.

A grande necessidade de ganhar competitividade estimula as empresas a operar em mercado mais amplos, cooperando e competindo para melhorar sua qualidade e preço, isso gera muitos gastos e para compensar os mesmos, há uma grande necessidade em agregar valor à empresa. Essa realidade vivida pelo setor mais tradicional do gerenciamento de projetos se adéqua melhor quando se utiliza o método ágil, por esse setor ser relativamente novo quando comparado ao gerenciamento de projeto tradicional.

Pensando um pouco sobre a questão do desenvolvimento, esse desenvolvimento se faz presente em diversas áreas do conhecimento técnico e assim, são utilizadas certificações profissionais, pois essas representam o reconhecimento da habilidade e experiência no uso das técnicas e aplicação de conhecimentos, assim, mantendo um diferencial e adicionando confiabilidade ao currículo de cada profissional. Deve ser visto em seu sentido mais amplo a comprovação formal dos conhecimentos, habilidades, atitudes e capacidade do profissional, requeridos para a execução de uma determinada atividade.

As melhores práticas do gerenciamento de projetos difundidas e consolidadas, em sua forma tradicional, começaram a serem questionadas. Em uma área do gerenciamento de projetos envolvida intensamente com desenvolvimento tecnológico de software como o gerenciamento ágil de projeto, as mudanças técnicas são constantes e extremamente rápidas.

Para atender as demandas desses projetos tecnológico o gerenciamento ágil de projetos utiliza ferramentas que focam as entregas ao invés das extensas documentações.

Onde estão os valores e princípios?

Para os Valores, temos:

  • Indivíduos e interações mais que processos e ferramentas;
  • Software em funcionamento mais que documentação abrangente;
  • Colaboração com o cliente mais que negociação de contratos;
  • Responder a mudanças mais que seguir um plano;

Para os Princípios, temos:

  • Maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado;
  • Mudanças nos requisitos são bem vindas, mesmo tardiamente no desenvolvimento;
  • Processos ágeis tiram vantagem das mudanças visando vantagem competitiva para o cliente;
  • Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo;
  • Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto;
  • Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie neles para fazer o trabalho;
  • O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face;
  • Software funcionando é a medida primária de progresso;
  • Os processos ágeis promovem desenvolvimento sustentável;
  • Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente;
  • Contínua atenção à excelência técnica e bom design aumenta a agilidade;
  • Simplicidade — a arte de maximizar a quantidade de trabalho não realizado — é essencial;
  • As melhores arquiteturas, requisitos e designs emergem de equipes auto organizáveis;
  • Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo;

O PMI apresenta uma certificação (como citada anteriormente), que cumpre o propósito de padronizar e disseminar o gerenciamento ágil de projetos, reunindo as seguintes exigências de conhecimentos práticos e teóricos dos certificados: educação secundária (ensino médio ou equivalente) ou superior, 2.000 horas de trabalho em projetos adquiridos nos últimos 5 anos, 1.500 horas de trabalho em projetos -usando técnicas ágeis -adquiridos nos últimos 2 anos, 21 horas de treinamento em Gerenciamento Ágil de Projetos.

Os conceitos Ágeis através de diferentes métodos e processos, foram sendo incorporados no gerenciamento de projetos e sua utilização aplicada em diversas organizações. Não poderia deixar de adicionar ao texto, as principais vantagens do gerenciamento ágil de projetos:

  • Retorno mensurável do investimento mais cedo, entrega iterativa de incrementos dos produtos;
  • Alta visibilidade do andamento do projeto, permite a identificação precoce e resolução ou monitoramento de problemas;
  • Envolvimento contínuo do cliente em todo o ciclo de desenvolvimento do produto;
  • Melhoria na satisfação e motivação dos times de desenvolvimento do projeto;
  • Poder ao proprietário da empresa para tomar decisões necessárias para atingir as metas;
  • Adaptação à evolução das necessidades de negócio, dando mais influência sobre as mudanças de requisitos;
  • Redução dos resíduos do produto do processo;
  • Maior pontualidade na entrega. Estimativas mais realistas, clientes mais envolvidos e satisfeitos

A intensiva competitividade na área de desenvolvimento de software faz com que as empresas busquem sempre o aperfeiçoamento de seus serviços para poder vencer a concorrência. Prazo e qualidade, além é claro de melhor aceitação e adaptação a mudanças são importantes diferenciais que podem ser atingidos utilizando-se metodologias ágeis de desenvolvimento. Embora não seja a solução para todos os problemas, a metodologia ágil mostra uma maneira de trabalhar bastante organizada e iterativa, podendo inclusive contribuir para um ambiente de trabalho mais amigável, portanto é uma boa opção para se obter os diferencias desejados.

Em um mundo qualificado pelo desenvolvimento tecnológico e pela dispersão do uso de software em praticamente todas as áreas do conhecimento humano, faz-se necessário um novo tipo de gestão para os projetos.

O mundo hoje depende de projetos e, para muitas organizações, são eles que garantem o dia de amanhã e permite-lhes sobreviver e crescer.Assim sendo, os métodos ágeis veem respondendo de forma positiva a essas necessidades, por focar os esforços da equipe no produto final e nas necessidades do cliente, relevando à segundo plano o processo de documentação exaustivo. Uma vez que as empresas estejam ao par de tais metodologias e as principais ferramentas utilizadas na Gestão de Projetos aprendido na prática o que tange às certificações, então será possível um maior alcance nas credenciais e certificações.

O PMI veem trabalhando para criar um padrão para os métodos ágeis através do PMI-ACP Examination Content Outline e da certificação PMP-ACP. Outro ponto relevante do PMP-ACP é a re-certificação, a qual difunde as práticas do gerenciamento ágil e estabelece a necessidade de constante aprimoramento dos profissionais certificados.

Espero que tenham gostado do artigo.

Márcio Pulcinelli @ OminaVIncit


Referências:

[1] LEFFINGWELL, Dean and MUIRHEAD, Dave, Tactical Management of Agile Development: Achieving Competitive Advantage. 2004. Boulder, Colorado

[2] SOARES, Michel dos Santos, Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software. Unipac-
Universidade Presidente Antônio Carlos, Faculdade de Tecnologia e Ciências de Conselheiro Lafaiete

[3] Agile Manifesto, Disponível em http://agilemanifesto.org/

[4] SCHWABER , Ken, What Is Scrum?

[5] www.scrumalliance.org

[6] PMI. Profissional Certificado em Métodos Ágeis.Disponível em:http://brasil.pmi.org/brazil/CertificationsAndCredentials/PMI-ACP.aspx/.


Você Realmente Está Trabalhando em Projetos?

Há uma grande diferença entre gerenciar projetos pequenos e grandes. Em um projeto pequeno, por exemplo, você vai até a pessoa com quem precisa conversar quando há uma questão a ser resolvida. Em um projeto grande, é possível que semanas tenham sido dedicadas ao planejamento das comunicações. Quando há uma questão, você precisa descobrir quem está envolvido e onde essas pessoas estão localizadas, qual é o método preferido de comunicação, as informações de contato no registro das partes interessadas e, em seguida, comunicar-se com elas da forma apropriada.

Outra coisa que você deve ter em mente é que propostas de projetos sempre devem ser revisadas e aprovadas formalmente pela administração da organização, após uma comparação de todos os projetos possíveis. Projetos não são selecionados de maneira arbitrária ou informal.

Trabalho Operacional

A maior parte do trabalho realizado em organizações pode ser descrito como trabalho operacional ou trabalho em projetos. O trabalho operacional é contínuo e o trabalho em projetos termina. É importante sempre compreender a diferença. Podem ocorrer casos em que o verdadeiro problema na questão é que alguém está tentando gerenciar trabalho contínuo (operacional), por exemplo, fabricação, como um projeto e isso pode levar a sérios problemas operacionais.

Ainda hoje, muitas pessoas acreditam que gerentes de projetos precisam saber apenas gerenciar pessoas ou, o que é ainda pior, que basta simplesmente comprar um software para ser um gerente de projetos. A  profissão de gerenciamento de projetos está crescendo rapidamente. É uma ciência e uma arte, que segue um processo sistemático.

Olhando para o PMI, vemos que ele divide o gerenciamento de projetos em grupos de processos e áreas de conhecimento. Os grupos de processos seguem o processo de alto nível de gerenciamento de projetos: iniciação, planejamento, execução, monitoramento e controle e encerramento. As áreas de conhecimento são: gerenciamento da integração, do escopo, do tempo, dos custos, da qualidade, dos recursos humanos, das comunicações, dos riscos e das aquisições, embora o PMI também se concentre separadamente na estrutura de gerenciamento de projetos e nos processos de gerenciamento de projetos.

Muitos dizem saber o que é gerenciamento de projetos, mas você realmente sabe o que é gerenciamento de projetos?

Muitas pessoas erram por não conhecer alguns aspectos essenciais do gerenciamento de projeto. Mesmo pessoas com diplomas avançados em gerenciamento de projetos as vezes erram por omitir e não aplicar conceitos de gerenciamento de projetos que poderiam salvar suas carreiras.

O Que é um Programa?

De forma bem resumida, um programa é um grupo de projetos. Ao agrupar projetos relacionados em um programa, uma organização pode coordenar o gerenciamento desses projetos. A abordagem de programa pode ajudar a reduzir os riscos, gerar economias de escala e melhorar o gerenciamento. Além do trabalho necessário para terminar cada projeto individual, o programa também inclui esforços como as atividades de coordenação e gerenciamento realizadas pelo gerente de programas. Portanto, ao descobrir que você tem mais de um projeto, é possível gerenciá-los todos como um programa, se houver benefícios nisso. Isso deve ser feito apenas quando a abordagem de programa agregar valor.

Programa

0 Que é um Portfólio?

Um portfólio inclui um grupo de programas e projetos individuais que são implementados para alcançar uma meta empresarial estratégica específica. Os programas e os projetos que compõem o portfólio podem não estar relacionados, além do fato de ajudarem a alcançar essa meta estratégica comum.

portifolio

Num próximo artigo, falarei um pouco sobre escritório de projetos e seus conceito.

Obrigado!


Um Pouco Sobre Estimativa Ágil

Pensando na Estimativa Ágil

O principal ponto é pensarmos em um objetivo que desejamos atingir.
Quando começamos a planejar como atingiremos um objetivo, pensamos nas tarefas que precisamos completar e no que é necessário em termos de recursos – esforço, tempo, dinheiro. É importante frisar que a estimativa é a base de todos os projetos, seja ele, Ágil ou tradicional.
A confiabilidade de um cronograma está diretamente ligada às estimativas utilizadas para sua elaboração. Obviamente, que as estimativas não têm por objetivo serem 100% precisas, por isso chamam-se estimativas.

Métodos Diferentes?

Áreas diferentes possuem métodos diferentes de estimativa. Pegamos como exemplo o desenvolvimento de sistemas, um método denominado Análise de Pontos de Função é utilizado, algumas vezes, para estimar os módulos do software. Na construção, o método de estimativa de escolha é o Método de Quantidade Total e assim cada área tem a sua forma de medir as estimativas. Geralmente, o SCRUM usa StoryPoints como referência.

A Estimativa Relativa no SCRUM é feita por uma equipe que utiliza uma ou mais histórias de referência, com as quais trabalhou no passado e cujo esforço despendido e complexidade são conhecidos. Todas (ou quase todas) as novas histórias de usuário são estimadas em relação às histórias de referência.

Nesse processo de estimativa:

  1. o ProductOwner explica a história com informações e definições adicionais.
  2. todos os membros da equipe estimam a história relativamente.
  3. um consenso é alcançado.

0 processo de estimativa fará mais sentido à medida que formos abordando os outros demais conceitos de estimativas SCRUM.

O que é Estimativa Participativa?

É importante falar sobre esse tipo de estimativa. No livro A sabedoria das multidões, James Surowiecki citou uma história em que uma multidão, em uma feira agrícola, estimou o peso de um boi. Calculou-se a média dos palpites individuais, que chegou mais próxima do peso real do boi do que as estimativas individuais da maioria dos integrantes da multidão e as estimativas separadas, feitas por especialistas de gado. Tenha isso em mente.

Mesmo a equipe SCRUM sendo menor do que muitos considerariam uma multidão, o conceito é exatamente o mesmo utilizado no parágrafo anterior. Devemos usar a sabedoria coletiva da equipe para fazer a estimativa. E se pararmos para pensar, esse conceito é bem diferente do conceito de estimativa tradicional.

Entenda que ao estimar módulos de um software, por exemplo, uma pessoa com credencial de Especialista Certificado em Pontos de Função (CFPS) vai desenvolver estimativas de software quase que independentemente.

Utilizando o SCRUM é diferente. As pessoas não estimam softwares “aleatoriamente”. Uma abordagem típica de estimativas coletivas ou participativas é o “poker planning”.

Poker Planning

O poker planning começa com todos os integrantes de uma equipe SCRUM segurando uma série de cartas. Essas cartas têm números escritos, geralmente seguindo a sequência Fibonacci. Depois que o Product Owner explica a história de usuário que está sendo estimada, a equipe faz perguntas até que a definição da história esteja clara. Um membro da equipe designado pode registrar decisões relativas às definições.

Uma vez que a equipe compreendeu, completamente, a intenção da história, deve escolher, em alguns minutos, a carta que representa os Story Points para a história em questão. A equipe mantém a carta sobre a mesa, virada para baixo. O moderador costuma ser o SCRUM Master.

Quando o moderador indicar, todos os integrantes da equipe mostram suas cartas. Se um ou mais integrantes chegaram a um número muito baixo ou muito alto, têm a chance de explicar seu raciocínio.

O jogo de cartas continua até que os integrantes da equipe cheguem a um consenso sobre a estimativa mais adequada, não necessariamente exata, para a história. Esse processo não só gera as estimativas, mas, a partir da discussão e da colaboração, pode levar a um melhor entendimento comum e a uma apropriação da iteração.

Ernst Weber e Gustav Fechner levantaram, no século XIX,  a hipótese de que a percepção humana da intensidade, a exemplo do som e da luz, é mais proporcional, aproximadamente, ao logaritmo da intensidade do que da intensidade em si. O mesmo princípio é empregado quando a série de Fibonacci é utilizada para enumerar as cartas usadas no Planejamento de Pôquer. É um texto complexo porém a utilização das cartas é simples.

Estimativa Ágil Usando Série de Fibonacci

350px-Poker_fibonacci

Pensemos no esquema gráfico visto na seção anterior. As cartas levam os números 1, 2, 3, 5, 8, 13, 21, ….

Cada número é a soma dos dois números anteriores. Em alguns casos, os números são arredondados, para cima ou para baixo, para o 5 ou 0 10 mais próximo. Frequentemente um 0 e um 1/2 também são adicionados. 0 (zero) representa uma história que não exige nenhum esforço apreciável para desenvolver. Por exemplo, uma outra história, já sendo concluída, finalizará essa história.

Geralmente, o ponto de interrogação é usado para indicar que um integrante da equipe não tem conhecimento suficiente da história para estimá-la e, e assim, necessita de mais discussão e maior detalhamento da história.

O símbolo do infinito é usado para indicar que uma história é grande demais para ser estimada, ou um épico, precisa ser dividida em histórias menores.

Veja que equipes SCRUM diferentes desenvolvem métodos, protocolos, processos e cartas diferentes, que funcionam melhor para cada equipe. Ou seja, o objetivo é fazer a estimativa relativa e participativa usando uma escala não linear, como a sequência de Fibonacci.

No próximo artigo falarei sobre Gráficos Burndonw. Espero que tenham gostado deste artigo.


Montando Ambiente de Desenvolvimento PHP

Neste artigo, vamos aprender a configurar um ambiente PHP para desenvolvimento de aplicações WEB.

No link abaixo apresento conceitos de PHP caso queira ler mais sobre o assunto.

http://blog.marcio-pulcinelli.com/2011/03/23/instalando-php5-no-apache-web-serverpart-1/

PHP não é uma linguagem nova, porém é muito boa para desenvolvimento para internet. Por esse motivo estou escrevendo este artigo, tenho certeza de que será útil para outras pessoas possam montar seus ambientes e desenvolver sistemas de forma rápida.

Vou partir da premissa que a máquina onde será instalado seu ambiente esteja completamente crua.

Instalação do JDK

O primeiro passo é instalar o JDK Acesse o site http://www.oracle.com/technetwork/java/javase/downloads/index.html

image

E procure pela versão que seja a melhor para você. No meu caso, escolhi Windows X64.

image

Faça o download do binário e instale normalmente na sua máquina.

Instalação do Eclipse

Após ter instalado o JDK, podemos então instalar o Eclipse. O Eclipse como você já deve saber, é o ambiente de desenvolvimento (IDE).

Para instala-lo, acesso o site do Eclipse http://www.eclipse.org/downloads e baixe a versão Eclipse Standard ou Enterprise. No meu caso utilizei a versão Enterprise para Windows 64Bits.

image

Assim que terminar de baixar, descompacte o arquivo ZIP para algum diretório de sua escolha. Para este tutorial, utilizarei o diretório raiz “C:\”.

SNAGHTML123076bf

Instalação do XAMPP (Apache + MySQL + PHP + Perl)

O XAMPP é uma distribuição apache contendo PHP, MySQL e Perl completamente grátis, fácil de instalar.

Acesse o link http://www.apachefriends.org/index.html

No meu caso utilizarei o XAMPP For Windows conforme a imagem abaixo.

Estou utilizando a versão (xampp-win32-1.8.3-3-VC11-installer.exe).

image

Baixe para sua máquina esta versão e instale o pacote.

É importante que instale o pacote com as opções padrão (a pasta de instalação deve ser “C:\xampp” ). Se ao final da instalação o XAMPP abrir, pode fecha-lo.

Habilitando o PHP Debugger

Esse passo é um pouco mais técnico, entretanto acredito que qualquer um possa executa-lo.

1) Localize o arquivo “php.ini” situado na pasta “C:\xampp\php\”

2) Edite este arquivo no bloco de notas (clique com o botão direito no ícone e depois escolha “Editar”).

3) Tecle [CTRL+F] e localize o texto [XDebug].

4) Tire o “;” (ponto e vírgula) da linha: zend_extension = “C:\xampp\php\ext\php_xdebug.dll”

SNAGHTML123d42fe

5) Salve o arquivo e feche-o.

Executando o Eclipse Pela Primeira Vez

Vamos executar o Eclipse para iniciarmos as configurações internas. O primeiro ponto é criarmos um Workspace (uma área de trabalho) para nossos projetos que serão criados dentro do Eclipse. No meu caso, eu criei um Workspace “C:\Users\Marcio\Ambiente_PHP”, onde todos os meus projetos serão armazenados.

SNAGHTML1240a757

Assim que tiver colocado seu caminho preferido, clique em “OK” para iniciar a entrada no Eclipse.

O Eclipse começará a ser carregado conforme a imagem abaixo:

image

Quando terminar a carga, você verá a janela principal do Eclipse conforme abaixo:

SNAGHTML12449d51

Feche a tela de boas-vindas. O seu Eclipse deverá ter a aparência conforme mostrado na figura a seguir:

SNAGHTML1245424b

Instalação do Plug-in do PHP para Eclipse

É importante observar que estou utilizando a Distribuição Kepler. Caso tenha baixado outra, será necessário algumas modificações.

1) Com o Eclipse aberto, acesse no menu: Help -> Install New Software…

2) No campo “Work with:” adicione “http://download.eclipse.org/tools/pdt/updates/release” e aguarde um momento até uma lista ser carregada na área abaixo

SNAGHTML1264bb7c

3) Expanda o item “PHP Development Tools” e escolha “PHP Development Tools (PDT)”, conforme mostrado na figura abaixo:

SNAGHTML1265d7c9

Clique em NEXT até finalizar a instalação.

Configurando o Eclipse Para Funcionar Com PHP

Primeiro passo é alterarmos a perspectiva do Eclipse para PHP. Acesse: Window -> Open Perspective -> Other… –> PHP. Aparentemente pouca coisa será alterada, mas é nesta perspectiva que iremos desenvolver em PHP.

image

Precisamos agora informar ao ao Eclipse onde está localizado o interpretador do PHP, criando um apelido para ele (exemplo: “php_xampp”):

– Acesse: Window -> Preferences -> PHP -> PHP Executables

SNAGHTML1417113e

– Clique em “Add”

SNAGHTML1418952f

– Clique “Finish”

Vamos adicionar no Eclipse as informações de Debug: Acesse: Window -> Preferences -> PHP -> Debug

SNAGHTML141ac2ad

Verifique se as suas configurações estão como as da tela acima.

Testando as Configurações Com um Projeto Novo

Crie um projeto PHP.

Acesse: File -> New -> PHP Project e dê um nome simples para o projeto (exemplo: teste01) e clique em Finish. Deverá aparecer um projeto na guia PHP Explore, como na figura abaixo:

SNAGHTML14227fa2

Vamos criar um programa bem simples para verificar se o interpretador do PHP está funcionando corretamente.

Clique com o botão direito sobre o nome do projeto e selecione: New -> PHP File. Escolha um nome simples para seu arquivo (exemplo: “multiplica.php”) e clique em Finish.

Digite um código da imagem abaixo e Execute o programa. Clique no botão com a seta de play  e escolha “PHP” se te for perguntado.

SNAGHTML1428ac81

Em seguida digite um número e o resultado aparecerá como na imagem acima.

É importante visualizar que a execução do programa aparecerá na guia “Console” na parte inferior do Eclipse

Espero que tenha gostado do artigo. Caso queira, deixe seu comentário.


Microcontrolador – TM4C123G LaunchPad (Cortex-M4)

bd_EV-LM4F120XL

Neste artigo falarei sobre a placa (que particularmente gosto bastante) Tiva C Series LaunchPad que inclui o microcontrolador TM4C123GH6PM e um ICDI (In-Circuit Debug Interface) integrado, bem como um conjunto de recursos periféricos muito úteis para o desenvolvimento de sistemas embarcados (embedded systems). Neste artigo descreverei como estes periféricos operam e fazem interface com o microcontrolador.

Antes porém, talvez seja importante antes de falar sobre a placa em si, seja apresentar onde ela pode ser utilizada. Um sistema integrado combina componentes mecânicos, elétricos e químicos, juntamente com um computador oculto no seu interior, para que seja possível realizar um propósito único dedicado. Há mais computadores no planeta do que há pessoas, e a maioria destes computadores são microcontroladores de chip único que são os cérebros da maioria dos sistemas embarcados.

Sistemas embarcados são um componente onipresente da nossa vida cotidiana. Nós interagimos com centenas de minúsculos computadores todos os dias que estão embutidos em nossas casas, nossos carros, nossos eletrodomésticos, os nossos brinquedos, e nosso trabalho. Como o nosso mundo tem se tornado mais complexo, a cada dia “vemos” mais controladores embutidos em nossos dispositivos com capacidade cada vez maior de processamento. Portanto, o mundo precisa de uma força de trabalho treinada para desenvolver e gerenciar produtos baseados em microcontroladores embarcados.

Para iniciar, falarei sobre o microcontrolador TM4C123GH6PM, pois sem ele não seria possível efetuar a execução das instruções de máquina. Basicamente, o TM4C123GH6PM é um microcontrolador baseado em ARM Cortex-M4 32-bit com memória de 256 KB Flash, 32KB SRAM, e operação de 80 MHz (clock de 80 MHz).

O processador ARM Cortex-M fornece a base para um alto desempenho, é uma plataforma de baixo custo que atende às necessidades de implementação mínima de memória, diminuição do número de pinos e baixo consumo de energia e ao mesmo tempo oferecendo um ótimo desempenho computacional e tempo de resposta do sistema para as interrupções do hardware. Realmente gosto muito desta placa, existem outras tão boas quanto, mas essa em termos de simplicidade realmente é muito boa.

Um multiplexador interno permite que diferentes funções periféricas possam ser atribuída a cada um desses slots GPIO. O microcontrolador TM4C123GH6PM vem com um programa de demonstração “quickstart” pré-programado de fábrica. O programa “quickstart” reside no chip de memória Flash e roda cada vez que a energia é aplicada na placa, a não ser que a aplicação “quickstart” tenha sido substituída por um programa desenvolvido pelo usuário (no próximo artigo falarei sobre o desenvolvimento para essa placa).

Como eu disse acima, o processador Cortex-M4 é construído sobre um núcleo de processamento de alto desempenho, utiliza uma arquitetura Harvard com 3 estágios de pipeline, tornando-o ideal para aplicações embarcadas. O processador oferece uma ótima eficiência de energia através de um conjunto de instruções eficiente e design otimizado, assim proporcionando hardware de processamento high-end, ainda contando com o “IEEE754-compliant” computação de precisão simples de ponto flutuante, uma variedade de ciclo único e multiplicação SIMD e ainda capacidades do tipo “multiply-with-accumulate”, saturação aritmética e divisão de hardware dedicado.

Outro fato importante do Cortex-M4 é facilitar a concepção de dispositivos sensíveis ao custo. O processador Cortex-M4 implementa componentes fortemente acoplados, que reduzem a área do processador enquanto melhora significativamente a capacidade de tratamento de interrupção e de depuração do sistema.

Recursos da Placa

Alguns Recursos da Placa:

Tiva C Series LaunchPad inclui os seguintes recursos:
Tiva TM4C123GH6PMI microcontroller
Motion control PWM
USB micro-A and micro-B connector for USB device, host, and on-the-go (OTG) connectivity
RGB user LED
Two user switches (application/wake)
Available I/O brought out to headers on a 0.1-in (2.54-mm) grid
On-board ICDI
Switch-selectable power sources:
– ICDI
– USB device
Reset switch
Preloaded RGB quickstart application

Esta placa vem com uma série dos chamados “BoosterPacks”. Estes “BoosterPacks” expandem os periféricos disponíveis para potenciais aplicações da Tiva C Series LaunchPad. BoosterPacks pode ser usado com a Tiva C Series LaunchPad ou você pode simplesmente usar o microcontrolador TM4C123GH6PM com o próprio processador dela em uma placa desenhada e projetada por você mesmo.

Especificações

A tabela abaixo sumariza as especificações para a Tiva C Series LaunchPad.

image

A imagem abaixo apresenta o “port pins” para os microcontrolador TM4C123GH6PM.

image

É através desta configuração que as portas são acessadas gerando sinais digitais e analógicos de entrada e saída.

O Microcontrolador

Como já dito, o TM4C123GH6PM é um microcontrolador baseado em ARM Cortex-M4 de 32 bits com 256 KB de memória Flash, 32 KB SRAM, e operação de 80 MHz (clock da placa); host USB, dispositivos e conectividade OTG; um módulo de hibernação e PWM, e uma ampla gama de outros periféricos. Caso tenha interesse acesse o data sheet do microcontrolador aqui.

A maioria dos sinais de microcontroladores são direcionados para os conectores de 0,1-in (2,54 mm). Um multiplexador interno permite que diferentes funções periféricas sejam atribuídas a cada um desses slots GPIO. Um ponto importante a observar é que ao adicionar um circuito externo, deve-se considerar uma carga adicional sobre a alimentação da placa. Veja ainda que o microcontrolador TM4C123GH6PM já vem com um programa de demonstração denominado “quickstart”. Como eu disse anteriormente, o programa “quickstart” reside dentro do chip de memória Flash e roda cada vez que a energia é aplicada, este programa é substituído sempre que o usuário programador da placa escrever um novo programa e fizer o o download para a placa (“burn” do programa em memória flash).

Conectividade USB

O EK-TM4C123GXL foi concebido e funciona como um dispositivo USB sem modificação de hardware. Os sinais de dispositivos USB são dedicados a funcionalidade USB e não são compartilhados com os cabeçalhos BOOSTERPACK. Os sinais do dispositivo USB estão listados na Tabela abaixo.

image

O dispositivo de destino TM4C123GH6PM também é capaz de ser host USB embutido e com funções (OTG) “on-the-go”. A funcionalidade de OTG pode ser ativado carregando R25 e R29 com resistências de 0-Ω. Estes resistores conectam o ID USB ​​e sinais VBUS USB para PB0 e PB1. Quando estes resistores são carregados, PB0 e PB1 devem permanecer nas respectivas configurações do modo PIN USB para evitar danos ao dispositivo. PB0 e PB1 também estão presentes no cabeçalho J1 BoosterPack. Portanto, se R25 ou R29 são carregados, deve-se tomar cuidado para que estes sinais não entrem em conflito com os sinais do BOOSTERPACK.

A operação do USB embutido pode ser ativada da mesma forma para dispositivos USB que são auto-alimentados. Fornecer energia ao atuar como um host USB requer um BoosterPack com comutação de energia e conectores apropriados. Todos os sinais de host USB estão disponíveis na interface BoosterPack exceto D+ e D-, que só estão disponíveis no conector USB micro-A/-B e nos dois pontos de teste adjacentes.

Quando conectado como um dispositivo USB, a placa Tiva C Series LaunchPad pode ser alimentada a partir de qualquer ICDI ou os conectores do dispositivo USB. O usuário pode selecionar a fonte de energia, movendo o interruptor POWER SELECT (SW3) para a posição de dispositivos.

Motion Control

O EK-TM4C123GXL inclui a tecnologia PWM Tiva C-Series Motion Control, com dois módulos PWM capazes de gerar 16 saídas PWM. Cada módulo PWM proporciona grande flexibilidade e pode gerar sinais PWM simples. Exemplo: para aqueles exigidos por uma bomba de carga simples, bem como sinais PWM emparelhados e com atrasos de banda, tais como os exigidos por um half-H bridge driver. Três blocos geradores também podem gerar o total de seis canais de controles exigidos por uma ponte inversora de 3 fases. Duas interfaces de quadratura do codificador (QEI) também estão disponíveis para fornecer feedback de controle de movimento.

User Switches and RGB User LED

A placa Tiva Série C LaunchPad vem com um LED RGB. Este LED é usado na carga do programa “Quickstart” e pode ser configurado para ser utilizado em aplicações personalizadas. Dois botões para utilização estão incluídos na placa. Os botões são ambos usados ​​na aplicação “Quickstart” para ajustar o espectro de luz do LED RGB, bem como entrar e sair do modo de hibernação. Os botões podem ser utilizados para outros fins na sua aplicação.

A placa também tem um LED verde. A tabela abaixo mostra como estas características são ligadas aos pinos do microcontrolador.

image

Headers and BoosterPacks

As duas filas de cabeçalhos (slots) empilháveis ​​são mapeadas para a maioria dos pinos GPIO do microcontrolador TM4C123GH6PM. Estas linhas são rotuladas como conectores J1, J2, J3, J4. Vide imagem abaixo para maior entendimento dos cabeçalhos da placa.

image

Os conectores J3 e J4 estão localizados em 0.1 in (2,54 mm) no interior dos conectores J1 e J2. Todos os 40 pinos de conectores do J1, J2, J3, J4 compõem a Tiva Série C TM4C123G LaunchPad BoosterPack XL Interface. Para configurar os dispositivos periféricos de forma fácil e intuitiva através de uma interface gráfica do usuário (GUI), consulte a Tiva Série C Pinmux Utility encontrada em www.ti.com/tool/lm4f_pinmux. Esta interface “Easy-To-Use” torna a configuração de funções alternativas para GPIOs simples e livre de erros.

Abaixo apresento a configuração de cada conector, seus GPIOs e funções alternativas.

J1 Connector

image

J2 Connector

image

J3 Connector

image

J4 Connector

image

No próximo artigo falarei sobre como implementar um software simples usando o “Code Composer Studio”, que é uma das IDEs recomendadas para o desenvolvimento de software para essa e muitas outras placas.

Espero que tenha gostado do artigo. Qualquer dúvida entre em contato.