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



Teraz jest 10 mar 2026, o 10:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 25 lis 2013, o 21:31 
Offline
Nowy

Dołączył(a): 13 lip 2013
Posty: 2
Pomógł: 0

Witam serdecznie.

To moja pierwsza aktywność na forum i od razu pisze z prośbą o pomoc.
Miałem zamiar skorzystać z programu obsługi zegara PCF8583 dołączonego do niebieskiej książki Pana Mirka. Problem polega na tym że kod (lub układ) nie działa. Program jest niemal dokładnie taki sam jaki został napisany przez autora, jedyne co w nim zmieniłem to typ wyświetlacza (oryginalnie był użyty wyświetlacz HD44780 ja użyłem S1D15710).
Wydaje mi się ze problem tkwi gdy program dochodzi do tej funkcji:

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

dodałem kilka funkcji lcd_value.... aby wyświetlić kilka danych pomocniczych.
Oto wyniki:
wartość binarna TWCR = 1000100
wartość ack = 1
wartość argumentu funkcji while = 1

Wniosek jest taki że do bitu TWEA nie została przypisana wartość 1. Pytanie tylko czemu?

Poniżej dorzucam schemat
Obrazek

Z góry dziękuje za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2013, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 lut 2013
Posty: 376
Lokalizacja: Kłopoty-Stanisławy
Pomógł: 33

http://www.atnel.pl/i2c_twi_lib_stop_error.html

Może pomoże :)

_________________
50 znaków Atnela ....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2013, o 22:02 
Offline
Nowy

Dołączył(a): 13 lip 2013
Posty: 2
Pomógł: 0

Dzięki za informacje, tego nie wiedziałem a na pewno się przyda. Ale problem dotyczy innej funkcji i innego warunku logicznego w funkcji while. Usunięcie negacji zawsze powoduje wyświetlenie wartości przypadkowej, takiej samej dla godzin minut i sekund :p Więc chyba nie w tym rzecz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2013, o 00:29 
Offline
Użytkownik

Dołączył(a): 10 paź 2012
Posty: 123
Pomógł: 10

Witam.
biolyvilk napisał(a):
Oto wyniki:
wartość binarna TWCR = 1000100
wartość ack = 1
wartość argumentu funkcji while = 1

Wniosek jest taki że do bitu TWEA nie została przypisana wartość 1. Pytanie tylko czemu?


Jeśli nie pomyliłeś się w przepisaniu wartości TWCR to bit TWEA jest ustawiony na 1 bo to bit 6 czyli Twój pierwszy z lewej.
Zauważ ze masz zapisane tylko 7 bitów czyli ósmy najstarszy jest 0 i się pewnie nie wyświetlił (nie wiem jak wygląda Twoja funkcja lcd_value ale może być tak, że nie wyświetla wiodących zer). Ten najstarszy bit to TWINT. Wprawdzie wpisywana jest w tej linii :
TWCR = (1<<TWINT)|(ack<<TWEA)|(1<<TWEN);
do niego wartość 1 ale jak na szybko zerknąłem do noty i dobrze ją zrozumiałem to flaga ta jest zerowana poprze właśnie wpisanie do niej jedynki. Stąd wynika że odczyty masz poprawne.
Teraz pętla while będzie się wykonywać do momentu aż flaga TWINT nie będzie miała wartości 1 a zostanie to ustawione hardware'owo kiedy interfejs TWI zakończy swoją bieżącą pracę czyli odczyt danego bajtu. Od strony logicznej więc wszystko jest ok. Jeśli nie wychodzi Ci z pętli oznacza to że interfejs TWI nie może zakończyć odbioru.
Problem może być więc z fizycznym połączeniem/działaniem PCF-a lub też softwareowy - jeśli możesz to pokaż z jakimi parametrami wywołujesz funkcję TWI_read_buf.
Pozdrawiam
Jarek
ps.
To że wyrzucasz negację z while i otrzymujesz te same wartości dla poszczególnych prametrów jest normalne ale nie świadczy o tym że masz połączenie z pcf-em. W takim przypadku program odczytuje jakąś przypadkową wartość znajdującą się w rejestrze TWDR.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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