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

Atmega16 + PCF8583 problem

atari85 05 Maj 2009 20:33 4005 5
REKLAMA
  • #1 6494289
    atari85
    Poziom 2  
    Na początku chciałem się serdecznie przywitać, to mój pierwszy post...

    Jestem bardzo początkującym programistą avr'ów i natrafiłem pewnie na bardzo prosty do rozwiązania problem, lecz samemu chyba sobie nie poradzę:

    Robię klasyczny zegarek na atmedze + pcf8583, schemat poniżej:


    Korzystam z gotowych bibliotek rklibavr. Symulacja w programie proteus.

    Moje pytanie brzmi, jak po prostu wyświetlić czas pobrany z rtc na wyświetlaczu? Oraz czy mój sposób ustawiania godziny jest poprawny? Gdyż na przykład chcę wpisać 10 minut to wyświetlacz pokazuje za każdym razem coś innego.

    Przy odczycie mam następny problem.
    -odlicza mi 10 sekund a później brak zmiany. RTC zdaje się nie liczyć dalej.


    Oto mój plik main, wszystko ładnie się kompiluje, biblioteki podpięte.

    Bardzo proszę o pomoc, lub chociaż naprowadzenie co jest nie tak...

    A może PROTEUS nie potrafi zasymulować poprawnie PCF8583??


    
    int main(void)
    {              
      
    typedef unsigned char u08;
    
    u08 godz,min,sek,setne,i;
    
      LCD_init();				// inicjalizacja LCD
      PCF8583_init();			// inicjalizacja rtc
      
        delayms1000();
    	LCD_cursor_on();
    	delayms1000();
    	LCD_clear();
    	
    	
    
    
    	delayms1000();
    	PCF8583_set_time(20,10,0,0);  // chce ustawic godzine 20:10
    	
    
    	
    	while(1)
    	{
    		LCD_xy(0,0);
    		PCF8583_get_time(&godz,&min,&sek,&setne);
    		delayms(1000);
    
    
    	
    		LCD_putU08(godz);
    		LCD_putU08(min); // wyswietl 
    		LCD_putU08(sek); 
    	}
    	
     
    }
    

    Atmega16 + PCF8583 problem
  • REKLAMA
  • #2 6494583
    Wojtek75
    Poziom 24  
    Zaglądałeś do data sheet'a tego układu. Wydaje mi się że w konfiguracji z rezonatorem sugerują żeby linie A0 podłączyć do GND a nie do VDD.

    Atmega16 + PCF8583 problem
  • REKLAMA
  • #3 6494642
    atari85
    Poziom 2  
    próbowałem i tak i tak ( symulacja w proteusie ), jutro będe miał fizyczny układ to sprawdzę "na żywo". W symulacji układ zachowuje sie tak samo :(

    Czy program i sposób programowania godziny jest poprawny?
    zczytuje dane z magistrali i2c lecz przy odczycie 10 sekundy... wisi..


    zastanawiam sie czy to nie wina programu symulacyjnego.... hmmm
  • REKLAMA
  • #4 6494944
    Terminator
    Poziom 23  
    Podłączenie A0 do GND albo VCC powoduje tylko tyle że adres pcf się zmienia, i nie jest to wymagane aby A0 było podłączone do GND
    The clock/calendar slave address is shown in Fig.16. Bit A0 corresponds to hardware address pin A0. Connecting this
    pin to VDD or VSS allows the device to have one of two different addresses

    Symulacja symulacją , sprawdź na rzeczywistym obiekcie :)
    Poza tym przyjęło się że stosujemy 4.7k jako pull-up I2C przy 5V ale jak z 10k działa to możesz zostawić. Osobiście nie znam rklibavr ale polecam samemu napisanie takiego protokołu zapisu/odczytu. Na elektrodzie znajdziesz działające przykłady wysyłania/odbierania po I2C dla avr.
  • REKLAMA
  • #5 6500668
    Wojtek75
    Poziom 24  
    Masz rację. Inny sposób aplikacji tego układu spowodował, że tej notki już po prostu nie doczytałem.
  • #6 6502216
    atari85
    Poziom 2  
    winny jest PROTEUS, na fizycznym układzie zachowuje się wszystko tak jak powinno.... :) dziekuje za bardzo szybkie odpowiedzi!!! :)
REKLAMA