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



Teraz jest 17 kwi 2026, o 05:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 15 sty 2014, o 20:46 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 9
Pomógł: 0

Jestem nowym użytkownikiem forum więc na początku witam wszystkich.
Po przeczytaniu niebieskiej książki i przyswojeniu wiedzy teoretycznej postanowiłem napisać pierwszy projekt w c.
Jest to projekt zegara ledowego sterowany przez rejestry szeregowo-równoległe.
Sercem układu jest avr mega8, a zegar RTC PCF8563 z adresem 0xA2 i rezystorami 4,7k pomiędzy SCL - Vcc , SDA - Vcc.
Zewnętrzny rezonator kwarcowy 7372800Hz ustawiony w "Target Hardware" oraz fusebit do pracy z ww rezonatorem.
Układ pracuję już kilka lat , zapisuje oraz czyta dane z PCFa poprawnie z istniejącym wgranym programem napisanym w BASCOM.

fragment kodu odpowiedzialny z wysyłanie oraz odbieranie w BASCOM - wszystko działa OK:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Kod C dla tego samego układu sprzętowego [main.c] :

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


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


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


Program jest w trakcie budowy i zdaję sobie sprawę , że nie ma jeszcze pełnej obsługi RTC, ale chcę uzyskać na tym etapie
zapisanie do PCFa godziny 12:11:10 w programie napisanym w C.
Następnie wgrać poprzedni program w BASCOM do mega8 i odczytać tę godzinę.

Program się kompiluje, wgrywa do uC, ale do RTC nie wpisuje.
Sprawdzałem na Oscyloskopie i zarówno na SCL jak i na SDA przebiegi są generowane przez sprzętowy TWI zarówno przy BASCOM jak przy C.
Rożnica jest taka, że te przebiegi na oko się różnią, jak będzie potrzeba to załączę zrzuty z oscyloskopu.

dziękuje za pomoc, pozdrawiam



Ostatnio edytowano 15 sty 2014, o 21:32 przez pawel, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2014, o 21:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Nie żebym się czepiał ale umieść kody w syntax=c :)

Uwierz więcej widać (lepiej się analizuje )

tak na szybko brakuje
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: 15 sty 2014, o 21:45 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 9
Pomógł: 0

Przepraszam już poprawione.
zmyliło mnie na czerwono - "Do wstawiania kodu używamy znacznika 'syntax' zamiast znacznika 'code'" :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2014, o 21:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Niestety nie mogę znaleźć rażącego błędu
jedynie co mi się rzuciło w oczy to ustawienie portu D
chociaż nie wiem czy to ma znaczeni jeśli chodzi o twój problem
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


jeszcze zmieniłbym kolejność przy inicjalizacji ww portu
tzn.
najpierw bym ustawił kierunek a potem do niego pisał
w ten sposób
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: 15 sty 2014, o 22:13 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 9
Pomógł: 0

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


I niestety bez zmian.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2014, o 18:14 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 9
Pomógł: 0

Załączam ekrany z oscyloskopu:

1. Z wykożystaniem TWI_write_buf(PCF8563_ADDR , 0x02, 3, bufor ); w pętli while(1) :
Obrazek

2. Z wykożystaniem TWI_read_buf(PCF8563_ADDR , 0x02, 3, bufor); w pętli while(1) :
Obrazek

3.Sygnał na wyjściu PCFa przy opcji 1 lub 2.
Obrazek

Dodam iż przy użyciu TWI_read_buf(PCF8563_ADDR , 0x02, 3, bufor); procesor generuję przebiegi jak na obrazku po czym się "wiesza",wykonuje je tylko 1 raz, po których ustalają się stany jak na oscylogramie.
Natomiast przy TWI_write_buf(PCF8563_ADDR , 0x02, 3, bufor ); pracuje poprawnie w pętli.Dla czytelności przebiegów dodałem 100ms opóźnienia po wykonaniu funkcji zapisu i odczytu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2014, o 18:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Witam
Przy odczycie z PCF-a musisz dodać jeden do adresu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2014, o 18:43 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 9
Pomógł: 0

A przypadkiem ta funkcja z argumentem TWI_write(SLA + 1); tego nie robi w void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2014, o 18:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Faktycznie moje przeoczenie
sorry za zamieszanie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lut 2014, o 21:07 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 9
Pomógł: 0

Po kilku godzinach poszukiwań udało mi się uruchomić transmisję z PCF8563.Problem okazał się z zamienionymi liniami SDA z SCL.
Przypadkiem trafiłem na zamianę porównując oscylogramy dla przebiegu SCL z wgranym programem z BASCOM i C.



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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 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