Implementando Printf

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

Mensagempor brasilma » 12 Ago 2008 20:29

Este tópico não é sobre linguagem C, se desejar pode abrir um para discutir o assunto, o comentário que fiz foi apenas uma opinião pessoal, ok?
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor RobL » 12 Ago 2008 22:12

Caro Brasilma
Fiz um comentário sobre o aprendizado do C, envolvendo printf() eu em outro post, a seguir, o comentário que fiz foi apenas para dizer que concordava com o seu comentário sobre o poder do C mas que eu havia escrito mal.
Deixo claro ainda que o comentário sobre o erro de português se refere ao meu erro (no quote), usando a palavra inadequada e não a de outro qualquer. Foi apenas uma brincadeira para os linguistas do forum :wink: javascript:emoticon(':wink:')
Wink

Um grande abraço.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor brasilma » 12 Ago 2008 22:22

Robl ok para tudo.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor brasilma » 12 Ago 2008 22:33

Terminei agora de montar e testar a rotininha, ficou muito eficiênte.

Para escrever no GLCD basta usar a função que chamei de GLCD_Print, que possui a seguinte formatação: GLCD_Print("Texto", 0, 44, 0, 1).

Os dois primeiros numeros são a linha e coluna, e os dois restantes um deslocamento para baixo no texto (coisa do sistema que estou criando) e o outro para imprimir o texto normal ou inverso.

Ainda vou modificar um pouco a rotina pois ela não está tratando o display como um todo, mas sim duas metades.

Tbem preciso descobrir como colocar e acessar a tabela de imagem dos caracteres na E2PROM, atualmente está na coitada da RAM como uma matriz.

Abraços.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor Maurício » 13 Ago 2008 07:15

Que compilador vc está usando?

[]'s
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor brasilma » 13 Ago 2008 08:09

Bom dia Maurício,

Infelizmente aquele que vc não gosta, mas é o único que funciona com a interface USB que tenho aqui, o CV vez sim, vez não, falha na comunicação. Já enviei mensagens para o fabricante mas até agora não obtive uma solução.

Abraços,
MArcos.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor Maurício » 13 Ago 2008 08:52

xiiiii.... Então, lascou!

No WinAVR eu não posso te ajudar. Não sei como ele trata a E2PROM. :?

Não é que eu não goste do WinAVR. Eu nem conheço esse compilador.
É que quando eu comecei com o AVR, eu tinha experimentado o IAR, depois o CodeVision. Gostei mais do CV por causa da simplicidade de configurar a máquina e pelo preço.
O IAR é assustador! :lol:

[]'s
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor brasilma » 13 Ago 2008 09:10

He, he Maurício, o CV realmente é um grande ambiente de trabalho e facilita muito as coisas, fiquei de queixo caido com a ferramenta dele para módulo LCD, creio que para E2PROM seja o mesmo.

Infelizmente para mim tenho de fazer tudo do jeito mais elementar, e nem posso usar os exemplos do CV. :cry:

Paciência.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor RobL » 13 Ago 2008 11:04

exemplo escrever em e2prom:
http://www.captain.at/electronic-atmega-eeprom.php

Nota: O Studio 4 trabalha com o avr-gcc/winavr , debuga, etc.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor brasilma » 13 Ago 2008 13:17

Obrigado pela ajuda.

O processador que estou usando é o ATmega32 e a E2PROM são os 1K dele mesmo.

Penso que deva ser simples, é que não tive oportunidade de ver isso ainda.

Depois terei de modificar a rotininha do Print para trabalhar com ela.

No momento estou fazendo aquela modificação para que o LCD seja tratado como uma coisa só.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor RobL » 13 Ago 2008 18:55

RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor Maurício » 13 Ago 2008 22:07

brasilma escreveu:...creio que para E2PROM seja o mesmo....


É nada! Dá uma olhada na "dificuldade" que é usar a E2PROM dos AVRs, com o CodeVision:

Código: Selecionar todos
#include <mega32.h>

eeprom char var;

void main ( void )
{
    char local = 0x00;

    var = local;
    local = 0x40;
    var = local;
    local = 0;
    local = var;
    while ( 1 );
}


Sentiu o "drama"? É, praticamente, "IMPOSSÍVEL"!! KKKKKKKKKKKKKKKKKK

[]'s
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor brasilma » 13 Ago 2008 22:26

No exeplo do GCC eles tbem usam uma função pronta, como no CV, infelizmente preciso criar minhas próprias funções para fazer isso.

Assim que fizer volto aqui, ou crio um outro tópico especifico para isto.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor brasilma » 25 Ago 2008 12:29

Caros colegas, dando continuidade a rotina Printf, preciso de uma ajuda com ponteiros.

Coloquei alguns dados na EEPROM e já estou conseguindo ler, porem gosteria de uma idéia de como limitar a quantidade de dados passadas a rotina Printf via ponteiro.

Explico, normalmente passo o texto a ser impresso no seguinte formato: GLCD_Print("Texto", 5, 1, 0, 0); agora preciso passar apenas um byte, que é que foi lido da EEPROM, estou fazendo assim GLCD_Print(&EE_data2, 5, 1, 0, 0); (EE_data2 é uma variável local que recebe o valor da EEPROM), porem a rotina Printf imprime mais de 1 caractere, ou seja, parece que neste caso o limitador '\0' não funciona.

Como posso fazer para que seja pego apenas o byte???
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor RobL » 25 Ago 2008 13:58

Se sua rotina Print, mesmo com ponteiros, tiver algo como:
While ( até encontrar \0) deveria imprimir mesmo um caractere.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

AnteriorPróximo

Voltar para AVR

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x