Professor
Brazil
297 Posts Posted - 04/01/2006 : 09:36:11
--------------------------------------------------------------------------------
Beleza pessoal estou com uma duvida de quem não conhece muito(alias muito pouco de C),estou utilazando o AD do MCU MC9S08QG8 e não sei como juntar os dois registradores do AD (ADCRH e ADCRL) de 8 bits em apenas uma variavel de 16 bits( VALOR_AD) ou seja juntar dois registradores de 8 bits em um de 16 , seria apenas uma soma ou tem um jeito mais correto de juntar duas variaveis?
Falou
LOSER
Fabio Pereira
Conselheiro
Brazil
2205 Posts Posted - 04/01/2006 : 11:39:56
--------------------------------------------------------------------------------
Bom,
Isso tem no meu livro ...
Tópico 1.2, tópico 6.7.2.1, exemplo 6-10.
De qualquer forma, basta utilizar o símbolo ADCR, por exemplo: VALOR_AD = ADCR;
Até +
Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br
Edited by - Fabio Pereira on 04/01/2006 11:44:39
Loser
Professor
Brazil
297 Posts Posted - 04/01/2006 : 12:18:56
--------------------------------------------------------------------------------
Fabio o ADCR não existe como registrador Hardware ele é uma variavel de programa de 16 bits que esta relacionada aos doi registradores do AD certo? Se for isso o meu problema esta solucionado.
Muito obrigado
LOSER
Fabio Pereira
Conselheiro
Brazil
2205 Posts Posted - 04/01/2006 : 13:02:10
--------------------------------------------------------------------------------
Bom,
Na verdade o ADCR existe sim, considerando que uma variável de 16 bits (num sistema de

Quando você faz uma atribuição de um inteiro como em RES16 = ADCR, o compilador irá fazer a leitura dos dois bytes que compoem a variável ADCR.
Até +
Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br
Loser
Professor
Brazil
297 Posts Posted - 04/01/2006 : 18:35:23
--------------------------------------------------------------------------------
La vai outra duvida estupida , liquei um trimpot no pta1 e configurei ele como ad mudando o valor do trimpot o ADCR muda de valor tambem o problema e que ele fica variando quando vario o trimpot com um valor que pode chegar a 2900 em decimal sendo que 10 bits so permitem ir ate 1023 onde posso estar errando dessa vez
//CONFIG INIT AD
ADCSC1=33;
ADCSC2=0;
ADCCFG=21;
APCTL1=2;
result=ADCR;
LOSER
Fabio Pereira
Conselheiro
Brazil
2205 Posts Posted - 05/01/2006 : 08:02:54
--------------------------------------------------------------------------------
Não vejo nada de errado no trecho de programa que você postou.
Mas o funcionamento que você relata é realmente anormal.
Até +
Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br
Loser
Professor
Brazil
297 Posts Posted - 09/01/2006 : 06:58:12
--------------------------------------------------------------------------------
Beleza
Descobri por que o meu programa não estava rodando de forma correta , a um equivoco na descrição do funcionamento do AD na pagina 146 do sue livor Fabio no item 6.7.2.7 o bite MODE esta escrito de forma equivocada
Livor MICROCONTOLADORES HCS08
00 resultato de 8 bits
01 resultado de 10 bits
10 reservado
11 reservado
Data MC9S08QG8
00 resultato de 8 bits
01 reservado
10 resultado de 10 bits
11 reservado
Apos Escrever conforme o Data MC9S08QG8 o programa funcionou normalmente e pude simular o AD sem nenhum problema.
Valeu pessoal
Falou
LOSER
Edited by - loser on 09/01/2006 07:01:52
Fabio Pereira
Conselheiro
Brazil
2205 Posts Posted - 09/01/2006 : 09:22:08
--------------------------------------------------------------------------------
Realmente,
A informação do livro está incorreta, houve um problema de revisão neste item

De qualquer forma, o arquivo hcs08.h está correto e se utilizar os símbolos que eu tive o cuidado de criar para o livro, seu programa funcionará sem problemas.
Até +
Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br