LusoRobótica - Robótica em Português
Sistemas específicos => PIC => Tópico iniciado por: fernandor em 19 de Março de 2009, 13:58
-
Galera...alguem ai ta interessado em trocar algumas informacoes sobre uC pic via skype?
se alguem interessar aqui esta o meu
Alem de utilizarmos este forum podemos nos comunicar via skype e discutirmos via microfone.
fernandor@franksintl.com.br
abraço
fernando
-
ja se pensou nisso :) mas acho que e preferivel discussoes no forum :)
assim pode haver mais alguem com a mesma duvida e ja sabe a resposta :D
-
beleza fifas...
seguinte...fiz um programinha em ccs e quero utilizar tmr0.
clock = 4Mhz
entao temos:
4/4*256*256 = 0,065536 s
15*0,065536 = 1seg
se eu tiver um overflow 15 vezes isso significa eu ter 01 seg. Assim eu posso contar de 1 em 1 seg e jogar no lcd
Entretanto nao esta incrementando a variavel counter.
#include <16C77.h>
#use delay(clock=4000000)
#include <lcd.c>
#int_TIMER0
void TIMER0()
{
int counter;
set_timer0(0);
if(counter == 15)
{
counter++;
}
}
void main() {
setup_timer_0(RTCC_INTERNAL| RTCC_DIV_256|RTCC_8_BIT); //clock interno; prescaler; 8bits
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
lcd_init();
lcd_gotoxy(1,1);
delay_ms(100000);
lcd_putc("teste");
}
Abraços
fernando
-
Fernando já viste esta biblioteca do Arduino, MSTimer2?
Fica aqui o link MSTimer2 (http://www.arduino.cc/playground/Main/MsTimer2).
Esta biblioteca facilita o uso de interrupções no Arduino. Mesmo que não queiras usar, podes ver o código dela e perceber como se fazem as interrupções ;)
-
Olá
a variavel counter não incrementada porque o programa nao entra dentro do ciclo if
dentro da rotina de interrupção deve estar só o incremento de count e a inicialização do timer se necessário.
Na rotina principal deve estar a condição if para testar o numero de ciclos:
#int_TIMER0
void TIMER0()
{
set_timer0(0);
counter++;
}
void main() {
setup_timer_0(RTCC_INTERNAL| RTCC_DIV_256|RTCC_8_BIT); //clock interno; prescaler; 8bits
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
lcd_init();
lcd_gotoxy(1,1);
delay_ms(100000);
lcd_putc("teste");
if(count==15)
}