Cześć,
Przed przystąpieniem do prób skomunikowania mikrokontrolera z zegarem RTC (PCF8583F) poprzez magistralę IIC, chciałem sprawdzić przerwanie zewnętrzne generowane na podstawie sygnałów z pinu INT RTC.
Według specyfikacji zegara :
Powinien on generować przerwania cykliczne co 1 sekundę, pod warunkiem iż bit alarmu wcześniej nie został skonfigurowany.
Tak też jest ustawiony rejestr kontrolny po resecie :
Przerwanie zewnętrzne dla Atmegi664P jest skonfigurowane prawidłowo. W przypadku wystąpienia przerwania INT0 powinna zapalić się dioda, podłączona do PORTU A, PA0.
Przy zwarciu PD2 do dowolnego pinu VCC na płytce reakcja zachodzi. Przy podłączeniu PD2 do wyprowadzenia INT zegara nic się nie dzieję.
Poniżej wycinek z kodu testowego :
Konfiguracja przerwania.
Kod:
void ext_init()
{
EICRA |= (1<<ISC01);
EIMSK |= (1<<INT0);
EIFR |= (1<<INTF0);
}
// External Interrupt Request 0
ISR(INT0_vect)
{
LED_TOGGLE;
}
Dodatkowo w funkcji main port PD2 jest ustawiony jako wyjście, aby je podciągnąć.
Czy może być tak że zegar fabrycznie ma ustawiony inaczej rejestr kontrolny i dla tego przerwanie nie przychodzi ?