LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: filipe89 em 23 de Julho de 2010, 21:31
-
Boa tarde.
Tenho um AT90S1200 - 12PI que se pode encontrar nos antigos descoficadores piratas da TVcabo.
Queria saber se é possivel programa-lo, parto do presuposto que sim. Que software posso usar para programar em c, e que circuito devo fazer para o ligar ao pc.
Obrigado a todos.
-
Passei a noite a pesquisar e espero que tenham uma solução melhor do que a achei.
Vou fazer a placa para ligar o AVR em série seguindo este site:
http://electronics-diy.com/avr_programmer.php (http://electronics-diy.com/avr_programmer.php)
sacar o programa que lá está PonyProg2000.
De seguida arranjar um programa para programar em C e copilar para .hex
então encontrei o WINAVR mas só dá para programar no bloco de notas, como não gosto muito da ideia saquei o dev-c++.
Quando o programa tiver feito tenho que ir a linha de comando copilar e converter para .hex para poder meter no PonyProg e enviar para o AVR.
Estes processos estão certos? Não haverá nada mais simples?
E já agora o programa do arduino não dá para programar o AVR com o cabo feito no site acima pois não?
Obrigado.
-
O WinAVR trás um editor de código, o Programmer's Notepad (PN).
Para compilar metes os comandos numa makefile e depois configuras o PN para invocar a makefile, que também pode ter logo o comando para gravar o código no AVR.
Também vais querer sacar o AVR Studio (no site da atmel) porque permite simular código sem correr no chip.
O código para o Arduino não corre nesse AVR (esse AVR foi o 1º modelo de AVR que chegou ao mercado, é o "pai" deles todos).
-
Não dá para programar no AVRstudio?
-
Alguem me podia arranjar um toturial para programar em C?
C já eu sei, queria em C para AVR mas não consigo perceber como declarar as saidas e entradas.
Será que alguém me arranjava um simples exemplo de ligar e desligar um led, por exemplo?
-
Aqui está o site do compilador de C Gnu-AVR: http://www.nongnu.org/avr-libc/ (http://www.nongnu.org/avr-libc/). Lá podes encontrar alguns exemplos de como utilizar as bibliotecas.
A principal diferença, a meu ver, entre o C a que estarás habituado e para o AVR tem a ver com o acesso aos registos. Essencialmente a operação de um micro-processador de 8 bits é controlada através de registos, que podes entender como sendo posições de memória a que podes aceder utilizando nomes pré-definidos.
A título de exemplo, aqui vai um programa para acender um led:
#include <util/delay.h>
#include <avr/io.h> // este include contem as definicoes especificas do processador
int main(void)
{
// primeiro, definir o pino a que esta ligado o led como sendo saida
// neste exemplo estamos a utilizar o pino 0 da porta A
// DDRx é o registo que define as direcoes de cada pino da porta x. Colocando
// o bit correspondente a alto, o pino e' saida, colocando a zero, o pino e' entrada
// _BV(x) e' uma macro que gera um byte em que apenas o bit nr x esta' a 1. Exemplo
// _BV(2) = 00000010
DDRA |= _BV(0) ;
while(1)
{
// acende o led
// PORTx e' o registo que contem o valor dos pinos da porta x.
// como o pino 0 e' uma saida, colocando o bit a 1 poe '1' no pino
PORTA |= _BV(0) ;
// espera um bocado
_delay_ms(100) ;
// coloca o pino a zero
PORTA &= ~(_BV(0)) ;
// espera mais um pouco
_delay_ms(100) ;
}
return 0 ;
}
-
Vais pensar que estou a ser mau ao dizer: lê o datasheet, no entanto depois de começares a ler vais ver que as datasheet estão muito bem explicadas incluindo exemplos de códigos. No entanto tens um tutorial muito bom http://lusorobotica.com/index.php?topic=1069.0 (http://lusorobotica.com/index.php?topic=1069.0) do Njay
-
Eu não conhecia o tutorial do Njay, mas aqui fica uma outra fonte de informação: https://www.mainframe.cx/~ckuethe/avr-c-tutorial/ (https://www.mainframe.cx/~ckuethe/avr-c-tutorial/)
E faço minhas as palavras do metRo_, perde uma tarde a ler o datasheet. É chato e penoso, mas no final vais ficar a perceber muito melhor o micro-processador e estarás pronto para utilizar outros que te apareçam pela frente.
-
Obrigado ngoncalves.
Já tinha encontrado alguns comandos d high e low, mas como vi os do arduino pensei que houvesse librarias mais simplificadas.
Eu já tive aulas de C e antes disso já trabalhei com picaxe, que aquilo era só programar em basic, mas eram da escola.
Como sempre gostei destas pequenas brincadeiras e achei este AVR perdido por casa, quis-me aventurar.
obrigado
-
"libraria" não existe; em Português, library = biblioteca
O AVRStudio dá para programar mas só em Assembly.
-
O AVRStudio dá para programar mas só em Assembly.
Mas é possível instalar o WinAvr, que traz o compilador de C, e depois configurar o AvrStudio para utilizar o compilador de C.
Eu não grande fã do AvrStudio, e faço tudo com Makefiles e um editor de texto. A única vantagem de um IDE é a possibilidade de fazer debug, mas debug é coisa de meninos ;D
-
Espero que estejas a brincar no debug ser para meninos... mas se não estiveres eu sou mesmo um :)
-
"libraria" não existe; em Português, library = biblioteca
O AVRStudio dá para programar mas só em Assembly.
Se instalares inicialmente o WinAVR quando depois fores instalar o AVRStudio ele configura logo para poderes compilar C.
-
"libraria" não existe; em Português, library = biblioteca
tens razão, eu é que tenho a mania de lhe chamar libraria :P
Já tinha instalado o WinAVR e depois o AVRstudio, neste momento estou a fazer o meu codigo em C no AVRstudio, onde o compilo e simulo, só não sei onde é que ele vai buscar os includes.
-
Já tinha instalado o WinAVR e depois o AVRstudio, neste momento estou a fazer o meu codigo em C no AVRstudio, onde o compilo e simulo, só não sei onde é que ele vai buscar os includes.
Eu agora não estou no Windows, mas imagino que deve ser em "C:\WinAvr\include\avr" ou algo parecido
-
Penso que não, porque meti o head ai e ele não soube ir lá buscar, tive que meter o caminho complecto
-
Só hoje é que consegui arranjar material para acabar de fazer o cabo programador, e está a funcionar, pelo menos lê.
Só agora é que me dei de caras com o Makefile, e já percebi que não é nada tão simples quanto isso.
o AvrStudio está a dar um erro ../avr.c:1: error: MCU 'at90s1200' supported for assembler only
entre outros warnings
-
Pois, esse modelo de AVR é muito antigo (foi o 1º AVR no mercado) e como não tem SRAM pelos vistos não dá para programar em C com o WinAVR... embora eu até tivesse a ideia que dava mas com algumas limitações. Tens a última versão do WinAVR? Vê o que diz a documentação sobre isso.
-
Tenho, é a versão WinAVR-20100110.
Como posso compilar a mão? quais os comandos a usar?
podes deixar só um exemplo?, que eu depois devo desenrascar-me
Obrigado
-
tenho conhecimentos básicos em Linux, aconselham trabalhar com este uC?
-
Para programar em assembly podes usar apenas o AVR Studio.
tenho conhecimentos básicos em Linux, aconselham trabalhar com este uC?
O que é que uma coisa tem a ver com a outra?
-
Para o caso de o linux ter mais bibliotecas para trabalhar em C, porque asembly dispenso :s
-
O linux até podia ter um milhão de bibliotecas em C, se não forem especificas para esse micro-controlador para gerar o devido assembly não te valem de nada, e se queres aprender, começa com algo mais recente e bem suportado, como por exemplo um arduino.
-
então com este, nada feito? :/
-
Há maneiras, mas é mesmo só para prós (http://www.lightner.net/avr/ATtinyAvrGcc.html (http://www.lightner.net/avr/ATtinyAvrGcc.html)).
De resto só em assembly.