Autor Tópico: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS  (Lida 94375 vezes)

Description:

0 Membros e 3 Visitantes estão vendo este tópico.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #225 Online: 03 de Dezembro de 2009, 23:39 »
Olá Carlos,

Não conheço o assembly que vc está usando, apenas da família 8051 ou dos PICs. Mas segue um algoritmo (pseudocódigo):

i: ponteiro para a memória RAM
imax: número de posições da RAM

i=0
Loop infinito:
  Testa se apertou botão:
     Se for Botão Numérico:
        Testa se i < imax:
            Se for:
                 Incrementa i
                 Salva código do botão na RAM (posição i);
     Se for Botão Reset:
        Testa se i = 0:
            Se não for:
                  Decrementa i
  Mostra código da posição i da RAM no display
       

caipira

  • Visitante
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #226 Online: 04 de Dezembro de 2009, 07:15 »
Oi.
Estou a usar o Atmel AVR Studio 4.
Abraço
Carlos Lavrador


Olá Carlos,

Não conheço o assembly que vc está usando, apenas da família 8051 ou dos PICs. Mas segue um algoritmo (pseudocódigo):

i: ponteiro para a memória RAM
imax: número de posições da RAM

i=0
Loop infinito:
  Testa se apertou botão:
     Se for Botão Numérico:
        Testa se i < imax:
            Se for:
                 Incrementa i
                 Salva código do botão na RAM (posição i);
     Se for Botão Reset:
        Testa se i = 0:
            Se não for:
                  Decrementa i
  Mostra código da posição i da RAM no display
       

caipira

  • Visitante
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #227 Online: 08 de Dezembro de 2009, 11:23 »
oi.
li algo sobre usar a SRAM como stack.
poderá ajudar neste caso?
obrigado.
carlos lavrador

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #228 Online: 19 de Dezembro de 2009, 14:41 »
Carlos,

Qual é o processador?

caipira

  • Visitante
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #229 Online: 20 de Dezembro de 2009, 07:33 »
Boas.
Possivelmente será para um Attiny2313.
Obrigado.
Carlos Lavrador


Carlos,

Qual é o processador?

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #230 Online: 20 de Dezembro de 2009, 13:57 »
Carlos,

Possivelmente será para um Attiny2313.

A localização da pilha na SRAM é definida pelo conteúdo do registrador respectivo (STACK_REGISTER). Mas não sei se entendi bem a sua dúvida.


caipira

  • Visitante
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #231 Online: 21 de Dezembro de 2009, 18:47 »
Ora boas...
O que eu pretendo é algo do género:
-cada vez que um botão é pressionado é armazenado em memória, mas só é  mostrado o último. Ao acionar o RESET, este valor é apagado e o display mostra o valor anterior e assim sucessivamente. Se outro botão for pressionado este passa a ser mostrado e o outro que estava sendo mostrado é armazenado
Obrigado.
Carlos Lavrador

Carlos,

Possivelmente será para um Attiny2313.

A localização da pilha na SRAM é definida pelo conteúdo do registrador respectivo (STACK_REGISTER). Mas não sei se entendi bem a sua dúvida.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #232 Online: 21 de Dezembro de 2009, 20:43 »
Carlos,

Ora boas...
O que eu pretendo é algo do género:
-cada vez que um botão é pressionado é armazenado em memória, mas só é  mostrado o último. Ao acionar o RESET, este valor é apagado e o display mostra o valor anterior e assim sucessivamente. Se outro botão for pressionado este passa a ser mostrado e o outro que estava sendo mostrado é armazenado
Obrigado.
Carlos Lavrador

O que voce quer fazer é facilmente resolvido com a pilha (stack) de um microcontrolador. O número é armazenado na pilha com a instrução "push" e é retirado com a instrução "pop".

caipira

  • Visitante
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #233 Online: 21 de Dezembro de 2009, 22:34 »
Eu ainda estou a começar a aprender, aqui está o código que já fiz:

;* q_alvos *

.include <C:\Programas\Atmel\AVR Tools\AvrAssembler\Appnotes\1200def.inc>

.def temp=r16      ;define variável temp no registo 16

init:
ser temp         ;define temp $FF (255)
out ddrb,temp      ;define direção como output
ldi temp,0b11111110 ;copia o valor binário para variável temp
out ddrd,temp      ;define a entrada (1ª - PD0)

programa:

clr temp         ;limpa o registo
out portb,temp      ;coloca porta B a zero
ldi temp,0b01111111   ;
out portd,temp      ;define saída porta D
ldi temp,0b00000000
out portb,temp


teste:

sbis pind,0         ;verifica se o botão 1 está carregado
rjmp n1
sbis pind,1         ;verifica se o botão 2 está carregado
rjmp n2
sbis pind,3         ;verifica se o botão 3 está carregado
rjmp n3
sbis pind,5         ;verifica se o botão 4 está carregado
rjmp n4
sbis pind,6         ;verifica se o botão 5 está carregado
rjmp n5
sbis pind,2
rjmp reset
         
rjmp teste

n1:

ldi temp,0b00000110
out portb,temp
rjmp teste

n2:

ldi temp,0b01011011
out portb,temp
rjmp teste

n3:

ldi temp,0b01001111
out portb,temp
rjmp teste

n4:

ldi temp,0b01100110
out portb,temp
rjmp teste

n5:

ldi temp,0b01101101
out portb,temp
rjmp teste

reset:

jmp programa

falta-me intercalar as referidas instruções.
Abraço.
Carlos Lavrador

Carlos,

Ora boas...
O que eu pretendo é algo do género:
-cada vez que um botão é pressionado é armazenado em memória, mas só é  mostrado o último. Ao acionar o RESET, este valor é apagado e o display mostra o valor anterior e assim sucessivamente. Se outro botão for pressionado este passa a ser mostrado e o outro que estava sendo mostrado é armazenado
Obrigado.
Carlos Lavrador

O que voce quer fazer é facilmente resolvido com a pilha (stack) de um microcontrolador. O número é armazenado na pilha com a instrução "push" e é retirado com a instrução "pop".

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #234 Online: 22 de Dezembro de 2009, 05:48 »
Carlos,

;* q_alvos *

.include <C:\Programas\Atmel\AVR Tools\AvrAssembler\Appnotes\1200def.inc>

.def temp=r16      ;define variável temp no registo 16

init:
ser temp         ;define temp $FF (255)
out ddrb,temp      ;define direção como output
ldi temp,0b11111110     ;copia o valor binário para variável temp
out ddrd,temp      ;define a entrada (1ª - PD0)

programa:

clr temp         ;limpa o registo
out portb,temp      ;coloca porta B a zero
ldi temp,0b01111111   ;
out portd,temp      ;define saída porta D
ldi temp,0b00000000
out portb,temp


teste:

sbis pind,0         ;verifica se o botão 1 está carregado
rjmp n1
sbis pind,1         ;verifica se o botão 2 está carregado
rjmp n2
sbis pind,3         ;verifica se o botão 3 está carregado
rjmp n3
sbis pind,5         ;verifica se o botão 4 está carregado
rjmp n4
sbis pind,6         ;verifica se o botão 5 está carregado
rjmp n5
sbis pind,2                  ;verifica se o RESET está carregado
rjmp reset

out    portb, temp      ; mostra variavel temp no display 

rjmp teste

n1:

push  temp          ; salva temp anterior
ldi temp,0b00000110
rjmp teste

n2:

push  temp          ; salva temp anterior
ldi temp,0b01011011
rjmp teste

n3:

push  temp          ; salva temp anterior
ldi temp,0b01001111
rjmp teste

n4:

push  temp          ; salva temp anterior
ldi temp,0b01100110
rjmp teste

n5:

push  temp          ; salva temp anterior
di temp,0b01101101
rjmp teste

reset:
pop   temp                   ; recupera o temp salvo na pilha
rjmp teste



Dê uma olhada, ainda falta testar se a pilha chegou no limite inferior, e não dar mais pop nesse caso. Sugestão: testar se valor do registrador de pilha (STACK) chegou no valor inicial de endereço  na SRAM.


« Última modificação: 22 de Dezembro de 2009, 06:05 por minilathe »

Offline Ribamar

  • Novato
  • *
  • Posts: 1
  • Sexo: Masculino
  • GUIA-CNC
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #235 Online: 02 de Novembro de 2010, 13:41 »
Programo em C para linha ATMEL a varios anos, e por tanto tenho alguma experiencia nesta linguagem. Caso tenham duvidas ou necessitem de ajuda com algum projeto postem aqui e tentarei ajudalos.
Desenvolvi uma biblioteca em C para quase todos os tipos de perifericos e controles como Display, teclado, controle por angulo de fase, RS232, conversor AD, DA, Dimer e varios outros.

  Ola Carlos,

       Bom, permita que me apresente, me chamo Ribamar, tenho 34 anos, moro em Minas Gerais e sou apaixonado por ciencia e tecnologia. Vi no site guiaCNC que você tem muita vontade de compartilhar o conhecimento que você adquiriu no decorrer da sua vida, e fico feliz por isso, você esta de parabens.

       Adoro microcontroladores, iniciei no PIC mas depois que conheci o AVR(atmel) apaixonei-me por ele. Sou um amador programo com a linguagm assembler e gostaria de comecar a programar com a linguagem C , mas quase nao vejo material em portugues na net. Você conhece algum livro que trata o assunto de programacao em C para os AVRs. Qualquer ajuda que pode me dar sera bem vinda.

 

   Obrigado

   Ribamar Luiz Dornelas

   [email protected]

Offline cientista13

  • CNCMASTER
  • ******
  • Posts: 1269
  • Sexo: Masculino
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #236 Online: 23 de Novembro de 2010, 23:43 »
Alguém sabe como programar o At89s8953 para usar o receptor módulo RR3 da telecontrolli, sem usar o CI decoder MC145027.


sobre os modulos RT4 e RR3
http://www.rogercom.com/pparalela/LptWireless.htm

Offline ivan braga

  • Se os fatos não se encaixam na teoria, modifique os fatos. Albert Einstein
  • Novato
  • *
  • Posts: 36
  • Sexo: Masculino
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #237 Online: 24 de Novembro de 2010, 23:14 »
Olá cientista13.

Alguém sabe como programar o At89s8953 para usar o receptor módulo RR3 da telecontrolli, sem usar o CI decoder MC145027.
sobre os modulos RT4 e RR3

Você não deu muita informação de sua necessidade sobre o modulo, porem você pode trata-lo como estivesse usando uma comunicação serial comum, substituindo os fios "tx-rx" serial pelo modulo "RT4-RR3" respectivamente em qualquer MCU.

Abraço.

Ivan Braga

ps: esqueci de informar acima, com o uso de um MCU, você não necessita de codificador e decodificador , pois pode tratar a informação diretamente em sua forma serial, já que é esta a função do CI que você cita.
« Última modificação: 24 de Novembro de 2010, 23:42 por ivan braga »

Offline cientista13

  • CNCMASTER
  • ******
  • Posts: 1269
  • Sexo: Masculino
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #238 Online: 24 de Novembro de 2010, 23:50 »
olá Ivan

O que estou querendo fazer é eliminar o decoder, visto que existe a possibilidade.

Estou usando o MCU para controlar a persianas. Os módulos RT4 e RR3 são apenas para controle remoto, que nada mais é do que 4 botões (abre, fecha, direita e esquerda). Nada de complicado, apenas sinais de botões a serem transmitidos. Minha dificuldade maior é justamente na comunicação serial, que nunca fiz no MCU. Faço meus programas em C, mas não sou "o cara"  :'(.  Minhas aulas não foram tantas assim, estou precisando aprender muito ainda.

Na verdade nem sei mesmo por onde começar a fazer a comunicação serial, e ai mora o meu problema. Se tiver um programinha exemplo ajuda bastante.

Abraço










Offline ivan braga

  • Se os fatos não se encaixam na teoria, modifique os fatos. Albert Einstein
  • Novato
  • *
  • Posts: 36
  • Sexo: Masculino
Re: MICROCONTROLADORES LINHA ATMEL - PROJETOS - DUVIDAS
« Resposta #239 Online: 25 de Novembro de 2010, 00:17 »
É como eu escrevi, trate como uma comunicação serial no modulo "USART" , "UART" e afins do seu MCU, depois desconecte seus MCUs e no lugar dos fios usados para a conexão dos mesmos ponha os modulos de RF.

Abraço.

Ivan

 

/** * */