Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  

Recommended Posts

Olá

 

Sou novo por aqui na participação, mas acompanho há um bom tempo o grande auxilio que é este fórum.

Estou entrando no mundo atmel e começando com o ATMEGA16 e durante as pesquisas li no datasheet a possibilidade de usar o RTC interno mas não encontrei nada que me esclarecesse de como operar o Timer/Counter2 responsável pelo RTC. E também não vi como tratar as informações para que seja útil o suficiente para não usar o DS1307.

Aguém pode me ajudar ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK, mas acho que está confundindo as coisas.

Se pretende usar o Timer2 como Real Time Clock, esqueça. Ele é Real Time Counter.

m16.jpg.fed0b25ae76797453436f979ba2db691

Quer dizer que tem que implementar a rotina de relógio por software. Mas isto qualquer um dos contadores faz, basta gerar interrupções, digamos a cada 10mS e fazer os contadores de centésimos, décimos, segundos, ...Etc.

A Vantagem do DS1307 é que pode colocar uma bateria de 3V, tipo botão, e esquecer de atualizações de horários... a não ser o de verão.

 

Editado por _xyko_

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Compreendo,  mas pensei numa base de tempo precisa  já que poderia colocar um cristal de 32768khz nos pinos 28 e 29 e tratar nao sei como para obter essa base de tempo precisa em segundos sem o ds1307. É  possivel? 

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    É possível, mas terá que manter o uC alimentado, senão toda ver que reiniciar, terá que atualizar as horas.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Sim ! isso não seria problema já que é só base de tempo com precisão! nada de data nem hora!

    Sabe como posso fazer isso em C ?  Pois não faço ideia de como fazer isso no software para esse fim!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    O problema é que só trabalho com o BascomAVR. Poucas linhas resolveria.

    Mas só como base de tempo de precisão pode usar o próprio cristal do sistema, que também é de precisão.

    Se quiser ver as linhas em Basic, depois posso fazer.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Gostaria muito de ver essas linhas em basic,  pois conheço um pouco.  Acho q poderei  entender em basic. 

    Fico muito grato e no aguardo. 

    Se ajuda,  costumo trabalhar com  cristal de 12 nos projetos . 

    Editado por Ricardo_pontes
    Esqueci de informar detalhe util

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Sugiro cristal de 16MHz, assim usando contador com prescaler de 16 teremos incremento de 1uS, aí podemos carregar o timer co 65536-1000 = 1 interrupção por overflow a cada 1mS e fazer a contagem de tempos exatas..

    É só um exemplo, porque também pode-se fazer bases de tempos de uS.

    Só posso fazer um exemplo de código + tarde, Aguarde.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Com (12) horas, minutos e segundos, idealizo algo minimalista como...

    -unsigned int segundo incrementado numa interrupção de ... 1 segundo: segundo++; if (segundo>12*3600) segundo=0;

    -unsigned char minuto, hora algo como hora=segundo%3600; minuto = segundo%60;

    24h(tente com unsigned long segundo), dia, mes, ano, dia da semana ... o buraco é + em baixo. Aguarde ajuda de gente grande...

    O atmega pode consumir pouco e menos ainda em 32768Hz. Ser for APENAS rtc, sugiro-o

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Em 16/01/2016 às 13:17, Ricardo_pontes disse:

    Olá

     

    Sou novo por aqui na participação, mas acompanho há um bom tempo o grande auxilio que é este fórum.

    Estou entrando no mundo atmel e começando com o ATMEGA16 e durante as pesquisas li no datasheet a possibilidade de usar o RTC interno mas não encontrei nada que me esclarecesse de como operar o Timer/Counter2 responsável pelo RTC. ""E também não vi como tratar as informações para que seja útil o suficiente para não usar o DS1307.

    Alguém pode me ajudar ?

     

    ôpa... só pude retornar agora.

    Pode me explicar a frase acima?

     

     

    Em 16/01/2016 às 20:35, Ricardo_pontes disse:

    Sim ! isso não seria problema já que é só base de tempo com precisão! nada de data nem hora!

     

    Qual seria um tempo...

    Um pulso?

     

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @Ricardo_pontes

    Bom dia, Ricardo.

    Não me respondeu a pergunta do meu último post.

    Um pulso? Uma frequência qualquer em algum pino?

    Como não deu pra formatar exatamente como é na IDE bascom, pode abrir arquivo .bas com:

    http://www.mcselec.com/index.php?option=com_content&task=view&id=14&Itemid=103

    Versão demo até 4KB de código. Basta copiar e color código abaixo.

    $regfile = "m16def.dat"                                                         'micro usado
    $crystal = 8000000                                                              'freq. do cristal
    
    Config Timer1 = Timer , Prescale = 8                                            'com este valor e cristal de 8MHz, 1 incremento a cada 1uS
    On Ovf1 Isr_t1 Nosave                                                           'habilita  int. T1 sem salvar registros
    Enable Ovf1                                                                     'interrupção toda vez que houver "estouro" no timer 1=65536
    Start Timer1
    
    Dim Tempo As Word , Recarga As Word                                             'variáveis de 16bits
    Config Portb.0 = Input                                                          'Configura portb.0 como entrada
    Chave1 Alias Pinb.0 : Portb.0 = 1                                               'label "chave1"= portb.0 : Ativa pullup neste pino
    Pulso Alias Portb.1                                                             'saída de um sinal de 500Hz. Se a int é de 1mS então freq.= 1/(2 x 0.001)
    Config Pulso = Output
    Recarga = 65536 - 1000                                                          'interrupção a cada 1mS (1000x1uS)
    Config Portb.2 = Output                                                         'saída 500Hz
    
    'rotina para pulso de 1 segundo na porta b.0  quando a chave for pressionada
    Loop1:
    Tempo = 0                                                                       'contador de 1000  x 1mS=1segundo
    Timer1 = Recarga                                                                'já deixa iniciamente timer 1 com valor de recarga
    
       Do : Loop Until Chave1 = 0                                                   'aguarda chave1 ser pressionada, considerando que é NA e está ligada ao GND.
       Set Pulso
       Start Timer1                                                                 'inicia contador
       Do : Loop Until Tempo = 1000                                                 'agrarda 1000 interrupções de 1mS
       Reset Pulso
    Goto Loop1
    '----------------------------------------------------------------------------------------
    Isr_t1:
    Pushall                                                                         'salva apenas registros usados no momento da int.
    Timer1 = Recarga
    Incr Tempo
    Toggle Portb.2                                                                  'inverte saída portb.2
    Popall                                                                          'restaura registros
    Return
    '----------------------------------------------------------------------------------------

     

     

     

    Editado por _xyko_

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @_xyko_ Desculpe. 1 Segundo.

    1 hora atrás, _xyko_ disse:

    @Ricardo_pontes

    Bom dia, Ricardo.

    Não me respondeu a pergunta do meu último post.

    Um pulso? Uma frequência qualquer em algum pino?

     

    exemplo para os 2 casos:

     

     

     

    @_xyko_  Fico Agradecido pela ajuda. Vou estudar essas linhas, porque entendendo elas posso fazer em C.

    Obrigado pela ajuda.

    Pode fechar o tópico

     

     

    1 hora atrás, _xyko_ disse:

    @Ricardo_pontes

    Bom dia, Ricardo.

    Não me respondeu a pergunta do meu último post.

    Um pulso? Uma frequência qualquer em algum pino?

     

    exemplo para os 2 casos:

     

     

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    9 horas atrás, Ricardo_pontes disse:

    @_xyko_ Desculpe. 1 Segundo.

     

    @_xyko_  Fico Agradecido pela ajuda. Vou estudar essas linhas, porque entendendo elas posso fazer em C.

    Obrigado pela ajuda.

    Pode fechar o tópico

     

     

     

    OK. Precisando só pedir pra reabrir.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Visitante
    Este tópico está impedido de receber novos posts.





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×