sábado, 14 de março de 2015

Diferença entre 74LS e 74HC

A principal diferença entre os LS e HC é a lógica do 74xx.

O 74LS é Logica Transistor-transistor. Utiliza transistores Shottky para reduzir a carga armazenada e obter velocidades de chaveamento maiores, em seguida, com transistores bipolares convencionais.

O 74HC usa a tecnologia MOSFET. Portanto pode operar com mais ampla variedade de tensões. Consumo de energia melhor, então TTL (mas aumenta em freqüências mais altas). Tem melhores margens de ruído para que possa trabalhar em ambientes ruidosos, em comparação com TTL.

74HC estão se tornando cada vez mais melhores substitutos para 74LS mais velhos

Velocidades de transição não são muito diferentes.
Prop atrasos para:
74LS - tpLH e tpHL cerca de 15 nanossegundos.
74HC - TPD cerca de 18 nanossegundos.

Diferença entre famílias 74XX

Boa noite galera,

Hoje pesquisando um integrado para casar a tensão entre um Arduino e meu Raspberry pi surgiu uma duvida do porque não poderia usar o integrado que possuo no projeto, no caso o integrado em questão é um 74LVC245 sendo que possuo um 74ls245 e fui pesquisar mais a fundo a fim de curiosidade, bem sempre soube que em projetos digitais é sempre melhor usar o 74HC em vez dos 74LS pela velocidade e tal, no entando encontrei uma diversidade bem maior do que eu já conhecia, segue uma tabela para facilitar mais o entendimento de todos.

Device Families:

TTL (74xx) True TTL
74L Low power
74S Schottky
74H High speed
74LS Low power - Schottky
74AS Advanced - Schottky
74ALS Advanced - Low power - Schottky
74F(AST) Fast - (Advanced - Schottky)
74C CMOS...................check Vcc levels
74HC (U) High speed - CMOS (Unbuffered output)
74HCT High speed - CMOS - TTL inputs
74AHC Advanced - High speed - CMOS
74AHCT Advanced - High speed - CMOS - TTL inputs
74FCT (-A) Fast - CMOS - TTL inputs (speed variations)
74FCT (-T, -AT) Fast - CMOS - TTL inputs (speed variations)
74AC Advanced - CMOS
74ACT Advanced - CMOS - TTL inputs
74FACT AC, ACT (Q) series
74ACQ Advanced - CMOS - Quiet outputs
74ACTQ Advanced - CMOS - TTL inputs - Quiet outputs

Bus Driver Families

74ABT Advanced - BiCMOS - Technology
74ABTE ABT - Enhanced Transceiver Logic
74ABTH Advanced - BiCMOS - Technology - bus Hold
74BCT BiCMOS - TTL inputs
74BTL Backplane - Transceiver - Logic
74GTL Gunning - Transceiver - Logic
74GTLP GTL Plus

Low Voltage Families

74ALB Advanced - Low Voltage - BiCMOS
74LV (U) Low - Voltage (Unbuffered output)
74LVC (R) (U) LV - CMOS (damping Resistor)(Unbuffered output)
74LVCH Low - Voltage - CMOS - bus Hold
74ALVC Advanced - Low - Voltage - CMOS
74LVT (R) (U) LV - TTL (damping Resistor(Unbuffered output)
74LVTZ Low - Voltage - TTL - High Impedance power-up
74ALVC (R) ALV - CMOS (bus Hold) (damping Resistor)
74ALVCH Advanced - Low - Voltage - CMOS - bus Hold
74LCX LV - CMOS (operates with 3v & 5v supplies)
74VCX LV - CMOS (operates with 1.8v & 3.6v supplies

* Damping Resistor - Resistor de amortecimento
* Unbuffered output - Saída sem buffer

segunda-feira, 17 de fevereiro de 2014

Ferramentas de desenvolvimento AVR - Instalação para Linux

Ferramentas de desenvolvimento AVR - Instalação para Linux

Bem pessoal este post fornece instruções rápidas de como instalar as ferramentas de desenvolvimento AVR no Linux. Para a plataforma Windows , há o WinAVR contendo todas as mesmas ferramentas. Existem também ports de ferramentas AVR disponíveis para Mac OSX e FreeBSD.Neste laboratório, usaremos o Debian Linux com ferramentas de desenvolvimento GNU AVR. Com as instruções a seguir, vocês poderão instalar as ferramentas correspondentes em seus próprios computadores. Iremos usar o Arduino como Gravador ISP para nossos próximos experimentos.


GNU toolchain

O que é o Toolchain ? É um conjunto de ferramentas que consiste de compilador, utilitários binários e a biblioteca C. Todas estas ferramentas que compõe um toolchain são o básico para desenvolver para os microcontroladores AVR Atmel.

  • gcc-avr – Compilador GNU C para AVR
  • binutils-avr – Utilitários para Binários (link, assembler, etc) para AVR.
  • avr-libc – Biblioteca C básica para AVR.
  • gdb-avr – Debugger GNU para AVR.


Debian (apt)

A Instalação das ferramentas GNU é um processo muito simples na plataforma Debian e (derivados do Debian e do Debian: Knoppix, Ubuntu, etc.) O mecanismo apt se encarrega de todo o processo de instalação sem necessidade de baixar os pacotes de instalação manualmente.
Na linha de comando (terminal), execute os seguintes comandos talvez seja necessário digitar sua senha para acesso a root:

# sudo apt-get install gcc-avr 
# sudo apt-get install avr-libc 
# sudo apt-get install gdb-avr

As ferramentas instaladas acima são usadas no processo de desenvolvimento e depuração do código.

Mas também é necessário instalar o software para gravação do seu código no microcontrolador, para isso temos vários softwares que podem ser usados eu particularmente gosto de usar o avrdude, mas há que goste de usar o avrprog, para a instalação execute na linha de comando (terminal):

# sudo apt-get install avrdude
# sudo apt-get install avrprog

Recomendo para ter um ambiente bem atualizado que faça uso de um repositório que fornece componentes mais atualizados.

Siga as instruções no site:
http://www.dotdeb.org/instructions/

Por enquanto é isso, na próxima iremos por a mão na massa.

sábado, 15 de fevereiro de 2014

Monte seu Linux

Monte seu GNU/Linux a partir dos Fontes

Este material este sendo escrito para auxiliar aos usuários de GNU/Linux que tem vontade e ou a curiosidade de saber como o Sistema Operacional é composto.

Este material tende a ser muito grande devido aos inúmeros pacotes usados na compilação e e dos múltiplos passos.

A ideia inicial era fazer algo semelhante ao Linux From Scratch, mas como o GNU/Linux é 100% Livre é possível fazermos a mesma coisa sem utilizar a mesma fonte, então vamos fazer diferente.

Vou procurar explicar o porque de usar cada pacote, e seus parâmetros na medida do possível.

Aguardem nos próximos dias irei publicar o material.

Drivers: MAX232 - MAX3232

O chip MAX232 é um Circuito integrado fabricado pela MAXIM, trata-se de um driver, que converte sinais de uma porta serial RS232 para uso em circuitos digitais compatíveis com TTL.


A diferença básica entre os dois é Voltagem de alimentação e Velocidade de transmissão de dados.

O Max232 é Alimentado com uma tensão de 5V, sua velocidade de transmissão pode ser configurada para até 120kbps.



O Max3232 é Alimentado com uma tensão de 3.3V.
Sua velocidade de transmissão pode ser chaveada de até 1Mbps.


Ambos os integrados podem ser encontrados em diversos encapsulamentos.

Configurando VirtualBox com Arduino

VirtualBox com Arduino

Bem galera a história é a seguinte, eu gosto de manter um ambiente de desenvolvimento com todas as ferramentas que necessito fora do meu host, assim posso ter meu ambiente em múltiplas maquinas simplesmente transportando minha VM para onde quiser.

O que mostrarei hoje é algo simples configurar um VM debian rodando no Ubuntu 13.10 (Saucy Salamander).

No exemplo usado aqui vocês vão observar que não uso a IDE do Arduino, utilizo o Arduino Uno apenas como ISP (In-system programming), não vou detalhar a configuração do Arduino para esta função o mesmo pode ser visto no link.

Primeiro passo é atualizar seu VirtualBox para a ultima versão, é necessário isso devido a versão disponível no repositório do Ubuntu estar muito desatualizada, baixe diretamente do site do VirtualBox, após a instalação baixe novamente do site do VirtualBox o VirtualBox Extension Pack Proceda com a instalação.

Vá ao menu Arquivo -> Preferências:

VirtualBox Configurações.




Bem após a instalação do Extension Pack será necessário mais uma configuração em seu Host, ocorre que o VirtualBox necessita ser adicionado ao grupo vboxusers.

Acione o terminal e execute o seguinte comando:

sudo adduser seuusuario vboxusers 

Será necessário reiniciar a sessão para que o VirtualBox possa ter acesso aos dispositivos USB instalados em seu equipamento.

Pronto, agora podemos fazer com que o Arduino seja reconhecido pelo VirtualBox.

Vá agora a Dispositivos -> Dispositivos USB -> Arduino

E finito, seu Arduino agora é reconhecido pelo seu VirtualBox.

No Próximo artigo vamos começar a falar sobre como usar a suite de ferramentas livres para programação de microcontroladores AVR.

Aproveite e veja como instalar as ferramentas de programação para AVR. 

terça-feira, 20 de agosto de 2013

Usando Redis como session handler no PHP.

Usando Redis como session handler no PHP.

Em sistemas que façam uso excessivo de sessões, pode ocasionar lentidão, pois sendo necessário muitas leituras e escritas aos arquivos de sessões, tendo isso em mente podemos fazer uso de soluções de cache, como Memcache ou mesmo o Banco de dados NoSQL Redis, aqui faremos uso do Redis por ser mais rápido e não necessitar de tantas bibliotecas e configurações como é o caso do Memcache.

Instalando o Redis

Baixe a versão mais atual do Redis no Site: http://redis.io/
Para nossa instrução estaremos usando a versão mais recente disponível no site até este momento.
curl http://redis.googlecode.com/files/redis-2.6.14.tar.gz | tar xzvf -

cd redis-2.6.14/

make
O Redis é desenvolvido para ser executado em plataforma de 64bits, caso necessite executa-los em ambiente 32bits execute o make passando o parâmetro 32bits
make 32bit
Após a compilação é recomendado que faça o test, por se tratar de um banco de dados que trabalha principalmente com a memória ele fará testes com todas suas funções afim de detectar algum erro.
Talvez seja necessário proceder a instalação do pacote tcl, usado para os testes do redis.
apt-get install tcl
Execute os testes.
make test
Se tudo correu bem ao termino dos testes você terá uma mensagem como esta.
\o/ All tests passed without errors!
Proceda a instalação:
make install

mkdir /etc/redis

cp redis.conf /etc/redis
Neste ponto a instalação já esta funcional, necessitando agora apenas a criação de alguns diretórios de suporte, que serão usados para manter um log do Redis e um dump dos dados da memória.

Instalação do script de startup (init.d)

Passaremos aos passos finais de instalação do Redis, com a inclusão do script de inicialização. Salve o arquivo no diretório /etc/init.d/ com o nome redis-server.
Torne o inicializável.
chmod 755 /etc/init.d/redis-server

update-rc.d /etc/init.d/redis-server defaults
Finalizando crie o diretório abaixo e de as devidas permissões.
useradd redis
groupadd redis

mkdir /var/redis

chown redis:redis /var/redis
chmod 755 /var/redis
Edite o arquivo /etc/redis/redis.conf, localize a linha daemonize troque seu valor para yes
daemonize no

para 

daemonize yes
Localize a seguinte linha dir ./
dir ./

para

dir /var/redis
Por padrão o sistema operacional Linux não permite que uma aplicação tome muita memoria, da mesma forma que fazemos com o Oracle devemos fazer com o Redis, permitindo assim que ele use quanta memoria necessitar para satisfazer a aplicação, mais otimizações sobre quando de memória ele pode tomar pode ser visto diretamente no site, ou em seu arquivo de configuração que vem completamente comentado.
Adicione a seguinte linha ao final do arquivo de configuração /etc/sysctl.conf e reinicie o computador após a edição, ou execute a linha abaixo para usar imediatamente.
sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1
Pronto o Redis está instalado e pode ser executado. /etc/init.d/redis-server start
### BEGIN INIT INFO
# Provides: redis-server
# Required-Start: $syslog
# Required-Stop: $syslog
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: redis-server - Persistent key-value db
# Description: redis-server - Persistent key-value db
### END INIT INFO


PATH=/opt/redis/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/redis-server
CONFIG_FILE=/etc/redis/redis.conf
DAEMON_ARGS="$CONFIG_FILE"
NAME=redis-server
DESC=redis-server
PIDFILE=/var/run/redis.pid
LOGFILE=/var/log/redis.log

test -x $DAEMON || exit 0
test -x $DAEMONBOOTSTRAP || exit 0

set -e

case "$1" in
start)
echo -n "Starting $DESC: "
touch $PIDFILE $LOGFILE
chown redis:redis $PIDFILE $LOGFILE
if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS
then
echo "$NAME."
else
echo "failed"
fi
;;
stop)
echo -n "Stopping $DESC: "
if [ ! -e "$PIDFILE" ]
then
echo "failed"
else
LISTENING_PORT=`grep -E "port +([0-9]+)" "$CONFIG_FILE" | grep -Eo "\d*[0-9]+$"`
if echo "SHUTDOWN\r\n" | nc localhost "$LISTENING_PORT"
then
echo "$NAME."
else
echo "failed"
fi
rm -f $PIDFILE
fi
;;

restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac

exit 0

Instalando o predis extensão para o PHP

Vamos fazer uso do modulo predis que é o módulo do php que possui o melhor suporte ao Redis, o download pode ser feito a partir da Url do projeto em: Predis
Ou execute o clone do projeto.
git clone https://github.com/nicolasff/phpredis.git
Vamos passar agora para a compilação do módulo.
cd phpredis

phpize

./configure 

make 

make install 

echo "extension=redis.so" >> /etc/php5/fpm/conf.d/redis.ini
Após estes passos reinicie o php, caso esteja utilizando fpm ou reinicie o servidor web caso esteja utilizando o php como um módulo.
/etc/init.d/php5-fpm reload
Agora vamos a etapa final, fazer com o que o php reconheça o redis.
Localize a linha session.save_handler e a substitua por:
session.save_handler = redis
Localize a linha session.save_path e a substitua por:
session.save_path = "tcp://localhost:6379/"
Feito isso apenas reinicie o php, e diga adeus a msession do PHP.

Lembrando que o redis ainda podemos balancear as sessões em diversos servidores redis.