collapse

* Posts Recentes

Bibliotecas para arduino e drivers de stepper - o problema da 'distracção' por SerraCabo
[Ontem às 23:27]


Zener BZW04-105? por brunus
[Ontem às 17:34]


Artigo 11, 13 e os restantes por jm_araujo
[10 de Dezembro de 2018, 11:05]


Compra Colectiva Mouser N3-2018 (limite 25 Nov) por Hugu
[10 de Dezembro de 2018, 01:07]


Ajuda para reparar Luzes de LED de Natal por brunus
[09 de Dezembro de 2018, 00:59]


Como reproteger as pontas de cobre do ferros de soldar? por brunus
[09 de Dezembro de 2018, 00:12]


Usar steppers de 5 pontas como se fossem de 4 pontas por SerraCabo
[08 de Dezembro de 2018, 21:18]


LusoRobótica - Website - Estado actual por Tech_JA
[06 de Dezembro de 2018, 09:18]


Como transformar um mosquito killer de tomada em um portátil? por brunus
[05 de Dezembro de 2018, 23:28]


LR, passado, presente e futuro por iyahdub
[05 de Dezembro de 2018, 04:16]

Autor Tópico: Horas - Motor de Passo  (Lida 1039 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 847
Horas - Motor de Passo
« em: 23 de Fevereiro de 2013, 16:11 »
Boas pessoal.

Precisava de fazer um relogio com horas/minutos/segundos, que fosse possivel ver num lcd e que dê para alterar as horas/minutos/segundos em que se encontra. Basicamente um relogio normal.

Futuramente este relogio será ligado a um motor de passo e sempre que se atinge uma determinada hora/minuto/segundo o motor execute 30 passos (isso acontecerá 4x ao longo de 24h).

Pelo que andei a ver acho que o relogio ja está, o que acham?

Código: [Seleccione]
#include <avr/io.h>

int main(void) {

int time_s = 0; //segundos
int time_m = 0; //minutos
int time_h = 0; //horas
int prev_value = TCNT1;
TCCR1B |= (1<<WGM12); // Modo: CTC com OCR1A como TOP
TCCR1B |= (1<<CS12); // Clock do sistema com prescaler de 256
OCR1A = 62500; // Valor do TOP para 1 segundo.

for(;;){ // Loop eterno

if(prev_value > TCNT1)
time_s++; // Incrementar segundos
prev_value = TCNT1;
if(time_s > 59)
time_s = 0;
time_m++; // Incrementar minutos
if(time_m > 59)
time_m = 0;
time_h++; // Incrementar horas


}
}
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 847
Re: Horas - Motor de Passo
« Responder #1 em: 23 de Fevereiro de 2013, 21:17 »
Como posso testar o codigo?

E alguem sabe de uma biblioteca do pcd8544 para avr-gcc (avrstudio)?
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.585
  • Helpdesk do sitio
Re: Horas - Motor de Passo
« Responder #2 em: 23 de Fevereiro de 2013, 21:43 »
Nenhuma das variaveis passa do 60, logo para quê usar ints que são de 16 bits?
Deves usar interrupções e não polling, nos meus tutoriais, a implementação do milis é perfeita para o que queres.
Avr fanboy