logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega16 + PCF8583 + C + ALARM interrupt

roniku 29 Maj 2009 20:52 2156 3
  • #1 6591406
    roniku
    Poziom 2  
    Witam serdecznie !
    Od 3 dni siedzę nad poniższym problemem. Szukałem odpowiedzi na elektrodzie i na zagranicznych stronach. Niestety nie udało mi się znaleźć rozwiązania.
    Problem:
    Nie działa wyjście int na PCF8583 przy ustawieniu alarmu "clock alarm function"

    Dodam, że kiedy ustawiałem alarm na "timer alarm" do rej 0x08 wysylalem c2 i do rej 0x0f wpisywałem 0x05 to sygnał int był generowany po 5 sekundach i działał to dobrze.
    Teraz nie przerywa wcale.

    void setal()
    {
    	unsigned char tmp=0x04;
    	writePcf(0x00, tmp); //wlacznie alarmu
    	
    	writePcf(0x08, 0xa0);//al int enable, weekday alarm
    	writePcf(0x0e, 0x7f); //pn-nd 
    	writePcf(0x09, 0x00);//setne sek na 0
    	writePcf(0x0a, 0x00);//sek na 0
    	writePcf(0x0b, 0x01);//min al.na 1
    	writePcf(0x0c, 0x00);//godz al.  na 0
    }
    
    
    	
  • #3 6601359
    roniku
    Poziom 2  
    Ale z tego co wyczytałem w PDFie wynika ze bit 6 rejestru 0x08 to jest "timer alarm enable" , a mnie chodzi o alarm interrupt enable czyli bit 7.

    Ale jest pewien postęp:
    Przerwanie działa przy następującym kodzie:
    
    writePcf(0x00, 0x04);
    writePcf(0x08, 0x90);//dayly alarm
    	//writePcf(0x0d, 0x01); //dla dayly alarm to jest nie istotne
    	//writePcf(0x0e, 0x01); //dla dayly alarm to jest nie istotne 
    	writePcf(0x09, 0x00);//setne sek na 0
    	writePcf(0x0a, 0x00);//sek na 0
    writePcf(0x0b, 0x01); // min na 1
    writePcf(0x0c, 0x00);// godz na 0
    
  • #4 6601857
    franrad
    Poziom 10  
    Jeśli chciałbyś ustawić weekday alarm to do rejestru 0x08 wpisz 0xa0 tak jak napisales w pierwszym poscie i wtedy w rejestrze 0x0e ustawiasz valid dni tygodnia. Reszte rejestrów wpisz recznie i sprawdz czydzialaja. Powinno byc OK powodzenia
REKLAMA