Przecież wystarczy zajrzeć do dokumentacji obu układów..... PCF8583: adres I2C ustawiany jako 0xA0/0xA2 (pinem zewnętrznym) 24C04: adres I2C ustawiony "na sztywno" jako 0xA0 dla pierwszych 256 bajtów i 0xA2 dla drugiej połowy. Masz ewidentny konflikt adresów! Te układy nie będą razem działać! Wstaw sobie EEPROM 24LC256, jego adres będziesz mógł sobie...
Sda i Scl są skonfigurowane w kompilatorze (używam Bascom Avr). Adres się zgadza. A sprawdziłeś czy Twój PCF odpowiada ACK , po wysłaniu jego adresu na magistralę :?: Piotrek
linia A0 służy do ustalania adresu układu. Radzę poczytać notę katalogową którą można ściągnąć z internetu. W zależności czy linia A0 jest podłączona do zasilania czy do masy, zmienia się adres układu. Pozdrawiam !!
ja niedawno odpaliłem rtc na twi i działa świetnie na stronie radzio.dxp.pl są podane procedury do twi sprawdzałem je i działają nie wiem czy wiesz ale PCF w przeciwieństwie do eeprom adres+1 to odczyt więc jeśli masz adres A2 to do niego zapisujesz a z pod A3 czytasz
Mając trochę wolnego czasu napisałem parę funkcji do obsługi układu PCF8583. Funkcja która ustawia godzinę i datę zapisuje też dane potrzebne do obliczenia pełnego roku, dzień tygodnia jest obliczany automatycznie na podstawie daty. Funkcje Pcf8583_write i Pcf8583_read można wykorzystać do zapisywania/odczytywania danych z wolnej pamięci ram. Dostępne...
Niedawno robiłem taki zegarek i proponowano mi napisanie progra,owego roku niz korzystanie z tego z pcf-a. Najpierw musisz ustawić 3 bit w rejestrze kontrolnym np tak: Dim B1 As Byte Set B1.3 I2cstart I2cwbyte 162 I2cwbyte 0 I2cwbyte B1 I2cstop Potem żeby ustawić podstawowe wartości musisz je zamienić na kod bcd a następnie wysłać tak: I2cstart I2cwbyte...
Witam, 1. Nie podałeś jaki jest rozmiar pamięci EEPROM a od tego zależy sposób adresowania. Linie A0,A1,A2 masz podpięte do +5V (logiczna 1) czyli jeżeli masz pamięć mniejszą niż 24C16 to adres 0xA0 jest niewłaściwy. 2. Linia WP dla normalnego trybu pracy powinna być podpięta do GND (logiczne 0). 3. Aby zdiagnozować problemy na I2C po zakończeniu każdej...
Nie analizowałem dokładnie kodu, ale na pierwszy rzut oka brakuje mi ustawienia częstotliwości taktowania magistrali (rejestr TWBR i bity TWPS1:0 w rejestrze TWSR). Maksymalna częstotliwość taktowania SCL układu PCF8583 to 100kHz. Nie napisałeś jaką częstotliwością jest taktowany procesor. Po starcie procesora te rejestry są ustawione na wartość 0 i...
Wykonuję Kolejno czynności: -Inicjuję I2C (I2C_Init) - Wysyłam START transmisji i adres układu z 1 na końcu czyli zapis (I2C_SendStartAndSelect) - Wysyłam adres rejestru do odczytu (I2C_SendByte) - Wysyłam START transmisji i adres układu z 0 na końcu czyli odczyt (I2C_SendStartAndSelect) - Odczytuję dane z rejestru I2C_ReceivData_NACK(); Zapis to 0...
Powtórna inicjalizacja (sygnał START) wymagany jest tylko w momencie w którym Master zapisuje do układu adres rejestru z którego następnie chce odczytać wartość (FIG. 17 z dokumentacji). W przykładzie z pierwszego postu powtórna inicjalizacja podyktowana była "cechą" układów na I2C - automatyczna inkrementacja licznika rejestru. Jeśli wpisujesz wartość...
Na schemacie znalazłem błąd. Linia A0 układu PCF8583 powinna być połączona z plusem, a nie masą. Inaczej układy I2C będą się nawzajem zakłócać, ponieważ pamięć EEPROM i układ RTC będą miały ten sam adres bazowy.
No tak dwa bity z lewej to rok dalsze 2 to 10 dni i ostatnie 4 to dzień zrobiłem taki program Zapisuje na starcie godzinę 23:59:58 i datę 31-12 dzień wpisuję tak &B00110001 , daję mi to 31 dzień miesiąca , kiedy przechodzi data na 1-01 to zmienną dnia wyświetla mi tak &B00000001 ale bity roku nie uległy zmianie. Jak do tego nie dojdę chyba zmienię...
Ad.1, Ad.3 Kondensator może być podpięty do masy lub do zasilania. Odpowiednia wartość kondensatora umożliwia precyzyjne ustawienie stałej czasowej tak aby zegar pracował dokładnie. Ad.2. A0 określa adres elementu. Jeśli podepniesz do masy, to odpowiednio wartość zero należy przesłać w ramce danych i2c. Dzięki temu do jednej magistrali i2c można podłączyć...
Jeśli w rejestrze kontrolnym 00h bit b2 jest wyzerowany to śmiało można adresować 08h do 0fh jako pamięć RAM. Co do resetu programowego, to po wpisaniu b00000000 pod adres 00h rzeczywiście powinien on nastąpić. Proponuję zrobić taki myk techniczny: wpisy do rej kontrolnego (00h): - najpierw b00000000 czyli nieszczęsny reset; - potem b10000000 (128dec)...
To czy gwiazdka jest przy typie, czy przy zmiennej nie ma znaczenia. Jedni stawiają przy typie, bo gwiazdka w tym kontekście oznacza "typ wskaźnikowy na obiekt typu...". Drudzy stawiają przy nazwie zmiennej, bo np: int *a, b; to osobna deklaracja wskaźnika (*a) i zmiennej (b). Do wskaźnika można przypisać adres obiektu. Adres uzyskujesz korzystając...
Witam, poniżej zamieszczam kod z Bascoma mojego sterownika BMS, w tej chwili kontroluje temperaturę, czas, Rs232, LCD 2x16. Obsługa z klawiatury lub pilota RC5, w obecnej chwili rozwiajm go o dostęp przez internet. zajmuje ok 8kb pamięci więc w A162 będziesz miał jeszcze drugie tyle pamięci. Ja kożystam z A32 Pozdrawiam. PS. daj znać jak zakończysz...
Witam, Próbuje w ramach nauki zbudować zegarek w oparciu ATMegę168 i PCF8583. Zbudowałem następujący układ: http://obrazki.elektroda.pl/4826984900_1... Napisałem do niego następujący program: [syntax=c] #include <avr/io.h> #include <stdio.h> #include <util/delay.h> #include "HD44780.h" #include "i2c.h" #include "PCF8583.h"...
W dokumentacji 24c02 jest podany adres 160-zapis, 161-odczyt z bloku pierwszego, 162-zapis do bloku drugiego a 163-odczyt z bloku drugiego.... wiec jak mozna zapisywac do drugiego bloku jak pcf8583 ma adres 162 ????moze mi to ktos wyjasnic....
Ten PCF nie może poprawnie działać. Jest &B10100000 = 160 - adres PCF8583 dla zapisu &B10100001 = 161 - adres PCF8583 dla odczytu danych Powinno być odpowiednio &B10100010 lub 162 -adres PCF8583 dla zapisu &B10100011 lub 163 - adres PCF8583 dla odczytu danych
ret=twi_start(Dev_Addr+TWI_WRITE)... if (ret) { twi_stop(); } else { twi_write(Seconds_Addr); twi_rep_start(Dev_Addr+TWI_READ)... sek=bcd2bin(twi_readAck()... odczyt rej sekund OK minut=bcd2bin(twi_readAck()&... OK hours=bcd2bin(twi_readAck()&... OK...
Witam! W załączniku masz biblioteki do sprzętowej obsługi magistrali TWI, układu PCF8583, wyświetlacza lcd, oraz przykładowy plik projektu. Testowane na takim samym sprzęcie (EvB 4.3). W pliku config.h masz napisane do jakich pinów podpięty jest wyświetlacz. Możesz podpiąć tak samo lub zmienić. Pozdrawiam.
Cześć! zastanawia sie nad adresowaniem w i2c , chodzi mi o wybór elementu . Czyli master wysyła adres slawa z ktorym chce sie komunikować! no i ok kapuje!!!!!! ale co jest jak podlanczamy dwa te same układy czyli np dwa pcf8583 lub dwie te same pamieci a maja te same adresy ! dzieki na info!
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). http://obrazki.elektroda.net/21_12497604... http://obrazki.elektroda.net/58_12497606... http://obrazki.elektroda.net/95_12497605...
Witam Właśnie zaczynam zabawę z tą magistralą i oczywiście już zaczęły się problemy... Jeśli dobrze rozumiem to na samym początku transmisji danych trzeba najpierw wysłać adres do jakiego układu będę zapisywał dane. I tu pojawia się problem. Skąd wziąć ten adres? Próbuje "dogadać" sie z PCF8583 Piotr
Witam. Mam taki problem. Napisałem krótki programik podający adres układu I2C. Z układem PCF8583 działa prawidłowo ale jak podepne DS1307 niewidzi go. Niewiem już w czym może tkwić problem. Może jakoś pomożecie? '---------------------------------------... ' DS1307.BAS ' Moje ds1307 clock on the Mega16 futurlec board...
No więc, tak jak obiecałem jakiś czas temu postaram się przybliżyć i wytłumaczyć kwestię programowej obsługi popularnego układu RTC – PCF8583. Układ ten ma zarówno zwolenników jak i przeciwników, a jedni i drudzy mają swoje racje. Są układy prostsze w obsłudze programowej, posiadające wszystkie interesujące nas dane w osobnych rejestrach prostych...
Na schemacie pin A0 PCF8583 jest dołączony do masy, więc adres powinien być 160 i 161.
Trzeba koledze uswiadomić że przyjęto aby wszystkie pamieci na szynie I2C maiły adresy $Ax a ustawienia adresów wykonuje sie przez odpowiednie podłaczenie pinów adresowych. PCF8583 jest traktowana jako pamiec i może miec adres $A0 lu A2, natomiast 24c moze miec adresy $A0,$A2....$AE I tutj może byc źródło konfliktu.
Kod jest przerobiony, z innego ale go ogarniam, a teraz co znaczą komentarze. jeśli chodzi o wartość 0xa0, która jest w kodzie, a ja napisałem że to nie działa, natomiast działa dla 0x50. 0x50 = 01010000; 0xa0 = 10100000; Według noty katalogowej PCF8583, adres scalaka jest 10100000 = 0xa0, z czego 1010 - to adres stały 000 - to adres zmienny i zależy...
Zakładającego temat , patrząc na datę , sprawa już nie interesuje. Ale ..... PCF8583 może mieć adres 160/161 lub 162/163, ustawiane jest to nóżką A0 24C04 może mieć adres : 160/161 , 164/165 , 168/169 , 172/173 , ustawiane jest to nóżkami A1 i A2 Można sobie wybrać żeby się nie pokrywały. Adres układu jest czym innym niż adresy pamięci i ich stron
Witam Na początku bradzo ci dziękuje august_a za pomoc. Wykorzystałem Twój kod zapisu i czytania z zegarka pcf8583, niestety nic to nie pomogło, ale tak nie do końca. Stwiedziłem, że wszystko działa poprawnie tzn: -uC komunikuje sie poprawnie z tą kostka zegarka -prawidłowo zczytuje adres z kości tzn 160 -poprawnie wpisuje wartości (skorzystałem z procedury...
Witam wszystkich serdecznie, Chciałbym prosić o pomoc w analizie błędów inicjalizacji i komunikacji z zegarem RTC, który wszyscy znają. Chciałbym przedstawić kod, który nie działa - opisać objawy i spytać o parę rzeczy, które mnie nurtują. A więc do rzeczy. Najpierw Kod: [syntax=c] #define PCF8583_ADDR ((uint16_t)(0x50)) #define I2C_SCL GPIO_Pin_6 #define...
Faktycznie podlaczenie rezystorkow oraz poprawienie schematu pomoglo. Udaje mi sie wpisac dane i je prawidlowo odczytac. Niestety odczytuje caly czas to samo... tak jakby zegar byl wylaczony... co zrobic? EDIT: I2C_Start(); // inicjalizacja zegara I2C_Send(0xA0); // adres PCF8583 do zapisu I2C_Send(0x00); // adres w RAM I2C_Send(0x00); czy I2C_Send(0x80);...
Zegar działa prawidłowo Czyli po włączeniu zasilania jest odczytywany PCF8583, na wyświetlaczu idą sekundy, minuty. Co by wykluczyło: "Czy adres sprzętowy PCF8583 pin3 A0 ustawiony jest prawidłowo - pin do masy ?" "Czy linie SDA SCL są podciągnięte rezystorami zewnętrznymi ?"
No tak, to święta prawda. Do tego Bascom sam z siebie dodaje sporo zbędnych procedur. Najgorszym przykładem jest obsługa LCD - ok 1kb kodu. Ja teraz kończę obsługę I2C Slave bo Bascom oferuje to tylko za dopłatą. Bascom , jest jak ... klucz uniwersalny. Potrafi odkręcić wiele śrubek , ale jest jest duuuuużo większy od np. ósemki oczkowej ;) Tą z kolei...
Mama takie pytanko otoż w ukladzie mam zamontowane 3 uklady pracujace na magistrali I2C. Sprawdzalem czy wszystkie mi odpowiadaja i adresy za pomoca programu Dim Adres As Byte 'deklaracja zmiennej Adres = ( 0 - 255)- 1 bajt Config Scl = Portc.5 ' konfiguracja magistrali i2c Config Sda = Portc.4 I2cinit 'Config Lcd = 16 * 1a ' konfiguracja wyświetlacza...
Witam, jak w temacie, czyli źle wyświetlają mi się cyfry na LCD w sensie tak chcą ( 00 -> 01 -> 00 -> 01 -> 00 -> 08). Nie wiem po jakiej stronie leży problem. Pracuje na płytce ewaluacyjnej GOTRONIK z Atmega32A z RTC PCF8583 ( INT-PD2, A0-GND, SDA-PC1, SCL-PC0) Umieszczam kody programu: Main.c [syntax=c]#define F_CPU 16000000L #include...
Pomogło - program nie jest uwięziony w pętli, komunikuje się z PCF i wyświetla poprawne informacje - na razie tylko sekundy, mam nadzieję, że z dalszą rozbudową nie będzie problemów, jak jednak się pojawią zwrócę się o pomoc. Dzięki wszystkim za wszystko i pozdrawiam :).... kod po przeróbkach: ldi r21, 160 ' adres zapisu PCF8583 (A0 = 0) ldi r22, 161...
Zgadzam się adres SHT na linii to 10000000 adres innego urządzenia na przykład PCF8583 to 10100000 Czyli da się :)
Witam! Zaczynam swoją przygodę z AVR i mam mały problem. Chciałem ustawić godzinę i datę i wszystko cacy poza tym, że gdy dzień miesiąca dojdzie do 30 to przeskakuje na 10 zamiast 1. Próbowałem też zamaskować rok,ale bez skutku Nie mam pojęcia dlaczego tak się dzieje. Poniżej umieszczam fragment kodu i proszę o pomoc: [syntax=c] // Ustawianie czasu...
Znowu prawie dobrze . Dlaczego ten termometr podpiołeś tak dziwacznie ? Linia A0 w PCF8583 to jest linia ustalająca adres układu i takie podłączenie spowoduje że nie odczytasz ani temperatury ani godziny .
Witam Doczytaj w nocie o adresowaniu tego układu, bo coś mi się wydaje że masz adres nie taki. Pozdrawiam
Na pierwszy rzut oka I2cwbyte 15 'rejestr timera wg mnie adres to 7.
Twoja prośba jest trochę zbyt lakoniczna. Potrzeba trochę więcej informacji np. -czy korzystasz z Atmel AVR Assebler2 czy gcc-assembler - jak mają być przekazywane parametry do funkcji czy będziesz np podawał adres zmiennych zawierających czas, czy raczej parametry będą w rejestrach - czy masz już gotową obsługę I2C - ... I przy okazji może byś wyjaśnił...
Na PCF8583 działa normalnie i znajduje adresy a kod jest taki. $regfile = "m168def.dat" $crystal = 8000000 'Deklaracja portów od wyświetlacza LCD Config Lcd = 20 * 4 'konfiguracja typu wyťwietlacza 'LCD Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2 'konfiguracja linii 'mikrokontrolera,...
Nie da się na to patrzeć :D BASCOM ma wbudowana zoptymalizowaną biblioteke do takich rzeczy. Trzeba jednak wskazac że używamy zegarka zewnętrznego. Stworzone zostana zmienne _sec,_min,_hour,_day,_month itd... Idąc dalej jak tylko powiesz mu wyswietl numer dnia to sam bedzie wiedział że jest Piątek :D Jest do tego Funkcja Dayofweek() Trzeba tylko połaczyc...
spróbuj jeszcze adres przesunąć o bit w lewo i dodać bit R/W czyli chyba (0xA0<<1)+1 To operacja, której nie wróżę powodzenia, ale sugestia odnośnie adresu jest dobra, bo teraz sprawdziłem adresy w w dokumentacji i jest: "I2C-bus slave address: read A3H; write A2H" Adres 0xA0 to ma PCF8583 - frajerski błąd z przyzwyczajenia po poprzednim RTC,...
Sęk w tym że i z tymi Atmela bywało różnie. Ale już znalazłem rozwiązanie. Należy zmienić adres pamięci tak aby nie był sąsiadujący z adresem PCF-a. Działa OK z kostkami z którymi były problemy.
W nocie http://www.nxp.com/acrobat_download/data... na stronie 14 masz opis adresowania tego ukłądu. Wynika ze adres zapisu to 162 a odczytu 163. Tylko to musisz zmienić w swoim kodzie. Nie bede wklejał poprawionego kodu bo chyba niewarto Pozdrawiam
Mozliwe ze PCF8583 i 24c02 masz ustawiony pod tym samym adresem. W chwili wpisywania danych do pamieci 24c02 zegar szaleje i zawiesza sie. Sprawdz i wrazie czego zmien adres jednego z nich.
adres pcf8583 pcf8583 adres timer pcf8583 asembler
dioda przedłużacz zmiana dekoder polsat beninca antena bramy
transoptor klucz renault master
Gdzie kupić ładowarkę do akumulatora 18V Niteo Tools? Fallo remoto w BMW X1 - przyczyny i diagnostyka