Duvidas com atmega168

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

Duvidas com atmega168

Mensagempor cassiolws » 16 Abr 2009 22:31

Bom eu trabalho com PIC´s e estou começando com AVR´s. O uC que tenho em mãos eh o ATMEGA168 que eu chamo de MEGA168 (comecei com ele porque, eu iria começar com o 48, mas como nao consegui nenhum e consegui o 168 vi que é a mesma arquitetura e so muda o tamanho das memórias foi ele mesmo), então vai la:

Coloco aqui minhas perguntas e o que eu entendi e vcs forristas de plantão que puderem me ajudar vão dando as dicas!

a) Como funciona a frequência de trabalho?
Pelo que entendi ele nao tem divisor de frequência por exemplo se você colocar ele pra rodar a 20Mhz ele vai trabalhar a 20MIPs!

b) Ele possui oscilador interno? Se sim como ativo esse recurso?
Pelo que entendi sim, mas nao entendi como ativar.

Ah estou programando em C com o microC for Avr mas estou pensando em mudar para o Code Vision.

Abraço a todos!
Editado pela última vez por cassiolws em 24 Abr 2009 17:31, em um total de 1 vez.
eletronic´s 666 \m/
cassiolws
Bit
 
Mensagens: 26
Registrado em: 15 Jul 2008 00:42

Mensagempor Maia » 17 Abr 2009 08:57

Todas essas configurações são feitas nos fuses. Ele tem um divisor por 8 do clock e tem oscilador interno de 8 MHz. Para facilitar use essa página.

http://www.engbedded.com/fusecalc/

Abraços,
Maia
Avatar do usuário
Maia
Byte
 
Mensagens: 348
Registrado em: 15 Out 2006 16:25
Localização: Rio de Janeiro

Mensagempor styg » 17 Abr 2009 13:42

a) nao tem divisor de frequencia, entao teoricamente 20MHz = 20MIPS
(teoricamente pq nem todas as instruções gastam apenas 1 ciclo)
b) possui de 8MHz, e ja vem ativado de fabrica com divisor por 8, resultando em 1MHz.
então é só alimentar e já podes gravar o código nele e começar a brincadeira.

compilador recomendo o avrstudio, e é grátis
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor RobL » 18 Abr 2009 09:44

Na família ATmega 48, 88, 168:
Se estivermos falando de oscilador, todas as fontes de clock (cristal, osc interno, externo, etc) tem sim divisor de frequencia por software. Divide por 1,2,4,8,16,32,64,128 e 256, inclusive pode ser modificada durante o processamento "runtime" (bits CLKPR do registro do prescaler).

O oscilador interno vem habilitado de fábrica. Gera 8Mhz mas vem configurado por default para resultar em 1Mhz (CKDIV8 ativo ajusta o prescaler para dividir por oito).
Poderá ser desabilitado através do fuse CKSEL por onde podemos selecionar os demais tipos de oscilador.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor cassiolws » 24 Abr 2009 02:27

Opaaa conssegui entender essa parte inicial, ja conssegui fazer o 168 se comunicar com o mundo haha passei minha função de lcd para o codevision e tudo mais. Agora preciso entender como funciona os timers, ainda não tive tempo de olhar no datasheet, assim que eu olhar e as duvidas surgirem posto aqui...

No momento minha duvida eh sobre o Codevision.

Como faço para trabalhar bit a bit em uma variavel?

tentei dessa forma, como se faz com os registradoes.
ex.:

unsigned char EXEMPLO;

EXEMPLO.0 = 1; // bit zero da variavel exemplo setado.

e assim não funfo, haha sei que eh um problema simples mas eh que aqui num foi, tentei outras maneira mais num deu tb..
Comé que faz esse negócio em em???

fico no aguardo.. abraço a todos[/b]
eletronic´s 666 \m/
cassiolws
Bit
 
Mensagens: 26
Registrado em: 15 Jul 2008 00:42

Mensagempor Sergio38br » 24 Abr 2009 08:27

bom dia, declara tua variavel como bitfield (struct).. a sintaxe depende de compilador para compilador.

ex.:
Código: Selecionar todos
typedef struct
{
  unsigned char b0:1;
  unsigned char b1:1;
  unsigned char b2:1;
  unsigned char b3:1;
  unsigned char b4:1;
  unsigned char b5:1;
  unsigned char b6:1;
  unsigned char b7:1;
}variavel;

variavel.b0 = 1;
variavel.b1 = 0;



[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor Maia » 24 Abr 2009 08:36

Pode fazer assim tb:

PORTC &= ~(1 << 5); // bit 5 da porta C = 0

PORTC |= (1 << 5); // bit 5 da porta C = 1

Abraço,
Maia
Avatar do usuário
Maia
Byte
 
Mensagens: 348
Registrado em: 15 Out 2006 16:25
Localização: Rio de Janeiro

Mensagempor RobL » 24 Abr 2009 14:54

Com microcontrolador o uso direto de funções lógicas, para setar / resetar bits é imediato, super eficiente, sem uso de stack, e outros recursos, conforme o exemplo do Maia. Struct vai reservar variáveis e outras. Struct organiza melhor o fonte mas pode não ser interessante com um microcontrolador pequeno por exigir mais recursos.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor cassiolws » 29 Abr 2009 01:44

Bom algumas dessas formas eu ja conhecia e outras havia imaginado, sei que existem n formas de se fazer isso, mas no caso minha pergunta seria especifica ao codevision se ele possui acesso direto a cada bit de uma variavel de 8 bits, pois ele possui acesso direto ao bits dos registradores, dai então surgiu a duvida, até agora não encontrei nada referente ao assunto, mas que eh estranho é, enfim vo me virando por aqui logo posto mais duvidas e pelo que vejo elas serão pertinentes a Timers =D

Obrigado a todos.
eletronic´s 666 \m/
cassiolws
Bit
 
Mensagens: 26
Registrado em: 15 Jul 2008 00:42

Mensagempor Sergio38br » 29 Abr 2009 08:07

Na verdade a maioria dos compilador tem acesso ao bitfield, que é definido geralmente no arquivo .h do componente que é utilizado , onde por meio de struct é possivel acessar os bits de cada registrador.

[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor brasilma » 29 Abr 2009 12:45

Faço da forma como o Maia demonstrou, para quem estava acostumado com Assembly tbem achei muita coisa pra pouco, mas depois acabei me acostumando. :)
" 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 cassiolws » 30 Abr 2009 18:20

Pois é eu to achando mta coisa, pois tb programo Asembly e programo C para Pic , utilizo o MikroC e nele isso fica bem facíl de se fazer pois tem acesso ao bitfields... mas sem problemas vamos por bolean mesmo! e ver no que vai dar.
eletronic´s 666 \m/
cassiolws
Bit
 
Mensagens: 26
Registrado em: 15 Jul 2008 00:42


Voltar para AVR

Quem está online

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

cron

x