Witam
Na początek napisze ze jestem początkujący w C. "Napisałem" program który czyta czas i datę z PCF8583 i pokazuje to na LCD.I wszystko byłoby ok gdyby nie to ze dla testu na przerwaniu procesor ma generować krotki sygnał dźwiękowy co 1 sek. i "prawie" jest ok TYLKO raz na jakiś czas nie chce piknąć na mijającą sekundę, tak jakby gubił te sekundę. Nadmienię ze od strony PCB jest wszystko OK bo w Bascomie to działa.Problem mam w C
Uzywam WinAVR-20100110
Na początek napisze ze jestem początkujący w C. "Napisałem" program który czyta czas i datę z PCF8583 i pokazuje to na LCD.I wszystko byłoby ok gdyby nie to ze dla testu na przerwaniu procesor ma generować krotki sygnał dźwiękowy co 1 sek. i "prawie" jest ok TYLKO raz na jakiś czas nie chce piknąć na mijającą sekundę, tak jakby gubił te sekundę. Nadmienię ze od strony PCB jest wszystko OK bo w Bascomie to działa.Problem mam w C
Uzywam WinAVR-20100110
#include <avr/io.h>
#include <inttypes.h>
#include <avr/pgmspace.h>
#include "delay.h"
#include <avr/interrupt.h>
#include <pcf8583.h>
#include <hd44780.c>
/* ------------------------------------------------------------------------- */
/* Deklaracje tablic i zmiennych */
/* ------------------------------------------------------------------------- */
uint8_t ssek,sek,min,godz,dzien,mies; /* aktualny czas */
int16_t rok;
volatile unsigned char fzegar; //flaga odswieTenia stanu zegara na LCD
SIGNAL(SIG_INTERRUPT0)
{
fzegar=1; //ustaw flage odczytania danych
}
int main(void)
{
/* PB1 wyjście - buzzer z generatorem */
DDRB = 0x02;
_delay_ms(200);
PORTB^=0x02; //ustawia bit 0x02
GIMSK=1<<INT0; //włacz przerwanie zewnetrzne INT0
MCUCR=0x02; //przerwania INT0 wyzwalane opadajacym zboczem
PCF8583_init(); // inicjowanie ukladu PCF8583
LCD_Initalize();
LCD_Clear();
PCF8583_start(); // uruchomienie zegara w ukladzie PCF8583
sei(); //wlacz przerwania
while(1)
{
LCD_GoTo(0,0);
lcd_put_time();
LCD_GoTo(0,1);
lcd_put_date();
if(fzegar) //czy moTna odswieTyc czas na LCD
{
fzegar=0;
PORTB^=0x02;
_delay_ms(25);
PORTB^=0x02;
}
}
return 0;
}
