Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 9 kwi 2026, o 13:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 29 mar 2014, o 21:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Przerabiałem właśnie przykład z BB na temat obsługi TWI dla RTC PCF8583 i chciałem go dostosować do mojego RTC DS1307 na Atmegę 16 8MHz wewnętrzny oscylator i mam pewien problem z ustawieniem poprawnego czasu na nim.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W przypadku wykorzystania tego kawałka kodu ustawia mi tylko godzinę prawidłowo,i dziesiątkę minut,poza tym nie mogę ustawić całych minut oraz sekund.
Zaglądałem do noty katalogowej mojego DS1307 ale przyznam się że si,ę pogubiłem troszkę i niewiem co musze zmienić w tym kodzie tak żeby poprawnie ustawić godzinę (Ustawianie czasu na godzinę: 18:34:27)
Następne pytanie dotyczy przerwania zewnętrznego ustawionego na INT0 w przykładzie z BB.
Mój RTC ma wyjście SQW/OUT i niewiem czy mogę go użyć do tego celu tak jak jest użyty pin w RTC PCF8583 oznaczony jako INT??,a jeśli mogę go użyć to co muszę jeszcze zmienić bo mi on nie działa.

Podaję adresy mojego RTC DS1307 z noty katalogowej.

Obrazek

Prosze o pomoc jeśli ktoś potrafi:-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2014, o 08:38 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

No nie wiem cz dobrze kombinuje ale skoro ustawiasz funkcje wysyłania buforów na adres 0x01 i określasz że wysyłać 4 bajty to popatrz: adres 0x01 w DS1307 odpowiada minutą a u Ciebie pierwszym l elementem bufora jest 0, musisz dostosować elementy bufora do adresów ds1307.

jak dla mnie powinno być tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


EDIT

Chyba jednak się pomyliłem bo w DS1307 zapisujesz jeszcze w bajcie z godziną czy to PM czy AM tutaj masz przykład zegarka na DS1307 http://www.ermicro.com/blog/?p=950



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2014, o 09:54 
Offline
Użytkownik

Dołączył(a): 25 sty 2014
Posty: 185
Lokalizacja: Działoszyn
Zbananowany użytkownik

Pomógł: 8

powinienes zapisywac od komórki 0x00
czyli podajesz adres urzadzenia , adres od kąd zapisywać :
0xD0 0x00 sekundy minuty godziny itd wszystko w formacie bcd
sekundy nie podawaj wpisz zero

aby ustawic wyjscie sqwt

musisz ustawic 4 bit i dwa pierwsze zaczynajc od komórki 0x07

czyli jak wyzej
adres urzadzenia adres zapisu spreparowany bajt

0xD0 0x07 <00010000>
sqwout bedzie tykac 1hz
wspomne tez ze mozna sterowac tym pinem recznie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2014, o 19:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Zgodnie z Twoim postem zrobiłem tak i działa ustawianie czasu a nawet sekund.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz dalej zapytam o jedną sprawę,powiedzmy że ustawiłem już poprawnie czas w pamięci RAM mojego DS1307,teraz to zakomentuje te linijki kodu co są powyżej i czy w tym momencie zegar powinien już działać?
Bo cała ta pętla if działa od warunku przerwania zewnętrznego INT RTC na INT0 procesora a ja mam tylko wyjście SGWE w moim DS1307 a więc mogę go wykorzystać w pętli zamiast przerwania na INT0 czy w jaki sposób???

I jeszcze jedna sprawa w odczycie z eeprom mojego 24C32 powinien pojawić się tekst "EEPROM" a u mnie tylko 7 kwadracików pustych się wyświetla na LCD.
Czy jest to może związane z pojemnością pamięci eeprom bo w przykładzie z BB jest pomięć 24C04 a ja mam pamięć 24C32 i myślę że funkcje zapisu i odczytu do eeprom muszą być zmienione nieco/
Teraz jest tak dla 24C04
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ale pewnie muszę to jakoś zmienić i dostosować do 24C32 ale jak??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 mar 2014, o 16:36 
Offline
Użytkownik

Dołączył(a): 25 sty 2014
Posty: 185
Lokalizacja: Działoszyn
Zbananowany użytkownik

Pomógł: 8

Cytuj:
Teraz dalej zapytam o jedną sprawę,powiedzmy że ustawiłem już poprawnie czas w pamięci RAM mojego DS1307,teraz to zakomentuje te linijki kodu co są powyżej i czy w tym momencie zegar powinien już działać?


tak bedzie dzialac bez ustawiania czasu
    The CH bit in the seconds register will be set to a 1. The clock can be halted whenever the timekeeping functions are not required, which minimizes current (IBATDR).

mozesz go kontrolowac tym bitem CH = 1 wtedy zatrzymujesz zegar i oszczedzasz prad i analogicznie CH =0 tyka
Cytuj:
Bo cała ta pętla if działa od warunku przerwania zewnętrznego INT RTC na INT0 procesora a ja mam tylko wyjście SGWE w moim DS1307 a więc mogę go wykorzystać w pętli zamiast przerwania na INT0 czy w jaki sposób???


ten pin łączysz z pinem procesora nie zapomnij pinu SGWE przez rezystor do VCC 4.7k - 10k
zobacz na obrazku w nocie na 1 stronie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 kwi 2014, o 23:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Teraz chciałbym uruchomić zapis i odczyt do mojej pamięci eeprom 24C32 i mam z tym problem.
Jak zmodyfikować te funkcje i dostosować je do mojej pamięci??
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i druga funkcja odczytu

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 12:39 
Offline
Użytkownik

Dołączył(a): 25 sty 2014
Posty: 185
Lokalizacja: Działoszyn
Zbananowany użytkownik

Pomógł: 8

ale z czym masz problem ?funkcja nie czyta ,czy nie zapisuje ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 22:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Te funkcje są dla zapisu i odczytu z pamięci eeprom 24C04 a ja mam pamięć 24C32 a to na pewno nie to samo.
Druga sprawa że RTC zapis i odczyt działa mi dobrze i z tym jest ok.
o ile dobrze myślę jeśli zapis i odczyt dobrze by mi działał to w tym projekcje z BB powinno mi sie pojawić na LCD napis "EEPROM" a pojawiają mi się tylko same kwartaciki (około 5sztuk) w tym miejscu .
Myślę że nie są to uniwersalne funkcje do zapisu i odczytu do eeprom dlatego proszę o pomoc w tym temacie:-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2014, o 07:12 
Offline
Użytkownik

Dołączył(a): 25 sty 2014
Posty: 185
Lokalizacja: Działoszyn
Zbananowany użytkownik

Pomógł: 8

mirek1868 , czy Ty chcesz sie nauczyć czy tylko Copy - Paste ?

bo wlasnie otwarłem noty obydwu ukladów i widze tam juz na pierwszej stronie że róznica miedzy nimi to rozmiar dostepnej pamieci obydwa układy sa z interfacem two wire

24C32 32K (4096 x 8)
24C04 4k (512 x 8)

wiec nie "pitol" ze to nie to samo przyłuż sie , bo napewno na tym forum nie znajdzie sie nikt kto poda Ci to na tacy gotowy kod dla kazdego nowego układu czas chyba zagłębic "tajniki" TWI ?

bierz przykład ze mnie :) nie mam zadnej ksiazki bb, innych a twi poznałem z noty obsłuzyłem juz kilka roznych ukłądów czytajac tylko to forum i jedno konkurecyjne

już nie bede taki podam ci link do DS otówrz na 11 stronie a tam prawie jak na tacy "gotowy kod"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2014, o 09:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

mirek1968 napisał(a):
Jak zmodyfikować te funkcje i dostosować je do mojej pamięci??


Na końcu tematu topic2603.html masz mój działający kod z tego typu pamięcią ;)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2014, o 10:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

karolek
Niestety bardzo słabo znam angielski i nie mam jeszcze doświadczenia z programowaniem ,dlatego jestem na tym forum i dużo pytam.
Osobiście łatwiej przychodzi mi zrozumienie czegoś i zgłębienie jak mi coś już działa zwłaszcza że dla mnie temat z zapisywaniem do pamięci eeprom to coś nowego i chciałbym to ogarnąć i zrozumieć-ale nie wszystko można zrozumieć jak czasami Ktoś bardziej doświadczony nie pomoże i nie naprowadzi troszkę.:-)


fredek
Dziękuje bardzo za pomoc,Twój kod działa u mnie dobrze teraz zapis i odczyt z pamięci co mnie bardzo cieszy:-)
Teraz muszę dokładnie ten kod przestudiować aby go zrozumieć dokładnie i nauczyć się poprzez to komunikacji po I2C.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 10:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Mam jeszcze jedną sprawę z ustawieniem bitu nr 4 w bajcie CONTROL układu DS1307
Próbowałem to zrobić w ten sposób ale po tej operacji jak mierze miernikiem pomiędzy GND a SQWE to nic się nie zmienia i stale jest napięcie 2,42V i nie zmienia się czyli generator 1HZ pewnie nadal nie uruchomiłem.
Co robię nie tak??

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 10:38 
Offline
Użytkownik

Dołączył(a): 25 sty 2014
Posty: 185
Lokalizacja: Działoszyn
Zbananowany użytkownik

Pomógł: 8

sprobuj bez dec2bcd nie wszystkie rejestry potrzebuja konwersji na bcd
ja na sztywno zrobilem sobie maske 0b1000000 i taka wysyłam bez zadnej kownersji na bcd



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 23:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Stworzyłem sobie taką funkcję

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i jeszcze wywołanie

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jutro to sprawdzę



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2014, o 10:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Funkcja zadziałała właściwie.Wszystko działa prawie dobrze musiałem tylko zamienić w procedurze obsługi przerwania

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w pętli głównej także musiałem to zmienić bo nie działało nic bez zmiany,
Jeszcze jedna sprawa pomimo tego że wszystko działa to lCD tak jakby jego kontrast się cyklicznie co sekundę zmieniał pewnie jest to związane z tym że przerwanie od DS1307 z generatora 1Hz to powoduje(bo jak miałem ten sam program bez przerwania czyli zamiast if (int0_flag) to if (1) to kontrast się nie zmieniał i było korzystniej.
Co można z tym zrobić??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 10 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO