extronic.pl
Test multimetru Sanwa PC5000a
miernik
,
multimetr
,
Sanwa PC5000
,
Sanwa PC5000a
,
test
|
Autor:
Dominik Leon Bieczyński
|
12.12.11
AVR: Real Time Clock DS1307
DS1307 to bardzo dobry i tani zegar czasu rzeczywistego. Posiada swój własny kwarc oraz baterię niezależną od pozostałych części naszego urządzenia, dzięki czemu jest niezależny i działa zawsze, nawet w przypadku awarii nadrzędnego procesora. Układ ma także kalendarz z obsługą lat przestępnych i jest bardzo prosty w obsłudze - działa na magistrali I2C, która jest wspierana sprzętowo przez mikrokontrolery AVR. DS1307 umożliwia także wygenerowanie sygnału prostokątnego o częstotliwości 1Hz, 4kHz, 8kHz, 32kHz.
Układ DS1307 wykorzystuje tani i łatwo dostępny rezonator kwarcowy 32kHz. Należy go podłączyć do wejść X1 i X2 bez dodatkowych kondensatorów. Zaleca się położyć ten kwarc w pozycji poziomej i jego obudowę połączyć z masą układu. Do zasilania awaryjnego można wykorzystać popularną baterię CR2023 podłączoną do nóżki VBAT, która wystarczy na kilka lat. W przypadku kiedy układ nie ma baterii, wejście VBAT należy podłączyć do masy, bo w przeciwnym razie DS1307 nie będzie działać. Wyjścia SDA, SCL i SQW są wyjściami z otwartym kolektorem, więc należy zastosować odpowiednie rezystory podciągające, typowo 4,7k.
Przykładowy schemat DS1307
Zapis do DS1307
Nie będę tutaj omawiał tajników komunikacji przez I2C, a jedynie samą procedurę zapisu. Na początek zobaczmy mapę pamięci RAM tego układu, która ma 64 bajty. Jak widać wykorzystywane jest tylko 8 bajtów, a resztę możemy sobie wykorzystać do własnych celów.
Koniecznie należy zwrócić uwagę na to, że DS1307 zapisuje liczby w postaci BCD a nie binarnej! Czyli w jednym bajcie zapisywane są dwie cyfry - pierwsza na bitach od 0 do 3, a druga cyfra jest zapisana w bitach od 4 do 7.
Procedura zapisu godziny do pamięci wygląda w ten sposób:
- Zainicjalizuj I2C (chyba, że już wcześniej zostało zainicjalizowane)
- Wyślij sygnał START
- Wyślij adres zapisu 208 - to adres DS1307 na magistrali I2C
- Wyślij adres pierwszego bajtu, który będzie zapisywany. Najczęściej zapisujemy całą pamięć od początku, czyli od zera.
- Wyślij sekundy
- Wyślij minuty
- Wyślij godziny - bit 6 decyduje czy zapisujemy godzinę w formacie 24h czy 12h. Jeżeli bit 6 jest ustawiony, to bit 5 decyduje czy mamy czas przed południem AM, czy po południu PM. Aby było "po naszemu", nie zawracamy sobie głowy bitem 6 i wpisujemy godziny tak samo jak minuty i sekundy.
- Wyślij dzień tygodnia - ważne: niedziela oznaczona jest przez 1, poniedziałek przez 2, wtorek przez 3...
- Wyślij dzień miesiąca
- Wyślij miesiąc
- Wyślij dwie ostatnie cyfry roku
- Wyślij bajt konfiguracyjny (jeśli trzeba)
- Dalsze komórki pamięci RAM można wypełnić swoimi danymi
- Wyślij sygnał STOP
Bajt konfiguracyjny decyduje o roli wyjścia SQW. Aby uruchomić wyjście generatora, należy bit SQWE ustawić na 1, a bity RS0 i RS1 ustawić wg poniższej tabelki. Jeżeli nie chcemy włączyć generatora, bo bierze on dodatkowy prąd z baterii, ustawiamy go na 0, a wtedy możemy sterować stanem wyjścia SQW poprzez bit OUT. Szczegóły wyjaśnia tabela poniżej.
Przykład funkcji, która zapisuje godzinę do DS1307:
void ds1307_write(uint8 h, uint8 m, uint8 dd, uint8 mm, uint8 yy, uint8 dt) { // dt to dzień tygodnia (poniedziałek=2) i2c_init(100); // częstotliwość SCL 100kHz i2c_start(); i2c_write(208); // adres DS1307 if(TWSR != 0x18) { // sprawdzanie czy DS1307 odpowiada t("zegar nie odpowiada"); return 0; } i2c_write(0); // zapis od poczatku pamieci // sekundy i2c_write(0); // minuty i2c_write(((m/10)<<4)+(m%10)); // godziny i2c_write(((h/10)<<4)+(h%10)); // dzień tygodnia i2c_write(dt); // dzień i2c_write(((dd/10)<<4)+(dd%10)); // miesiąc i2c_write(((mm/10)<<4)+(mm%10)); // rok i2c_write(((yy/10)<<4)+(yy%10)); i2c_stop(); return; }
Odczyt z DS1307
Jak to zwykle bywa w układach I2C, najpierw należy zapisać adres, od którego będziemy odczytywać pamięć, zresetować transmisję i dopiero potem odczytywać dane.
- Zainicjalizuj I2C (chyba, że już wcześniej zostało zainicjalizowane)
- Wyślij sygnał START
- Wyślij adres zapisu 208 - to adres DS1307 na magistrali I2C
- Wyślij adres pierwszego bajtu, od którego będziemy odczytywać pamięć. Najczęściej odczytujemy całą pamięć od początku, czyli od zera.
- Wyślij ponownie sygnał START
- Wyślij adres odczytu 209
- Odczytuj po kolei wszystkie komórki pamięci
- Przy odczytywaniu ostatniej komórki nie należy wysyłać sygnały potwierdzenia
- Wyślij sygnał STOP
Przykład funkcji odczytującej godzinę i datę z DS1307:
void ds1307_read(void) { uint8_t sek, min, godz, dztyg, dzien, mies, rok; i2c_init(100); i2c_start(); i2c_write(208); // adres zapisu DS1307 if(TWSR != 0x18) { // sprawdzanie czy DS1307 odpowiada t("zegar nie odpowiada"); return; } i2c_write(0); i2c_start(); i2c_write(209); // adres odczytu DS1307 sek = i2c_read(); min = i2c_read(); godz = i2c_read(); dztyg = i2c_read(); dzien = i2c_read(); mies = i2c_read(); rok = i2c_read_nack(); i2c_stop(); // wszystkie zmienne przechowują wartości w kodzie BCD // jeżeli w programie masz gdzieś funkcje wyświetlającą liczbę // szesnastkową, to możesz ją tutaj wykorzystać out_hex(godz); t(":"); out_hex(min); t(":"); out_hex(sek); t(" "); out_hex(dzien); t("."); out_hex(mies); t(".20"); out_hex(rok); t(" "); switch(dztyg) { case 1: t("nd"); break; case 2: t("pn"); break; case 3: t("wt"); break; case 4: t("sr"); break; case 5: t("cz"); break; case 6: t("pt"); break; case 7: t("sb"); break; } return; }
Kolekcja: Lampy i inne
Spis eksponatów:
Zbieram stare kalkulatory, komputery i układy scalone, a w szczególności pamięci EPROM z dużą strukturą (powyżej 1cm) i mikrokontrolery z charakterystycznym okienkiem, przez które widać strukturę scaloną. Jeżeli masz takie zabytki to pisz do mnie na adres
Multimetr ТЛ-4М
Ampierwołtomietr ispytatiel tranzistorow tipa TL-4M - czyli rosyjski multimetr. Kiedyś tata kupił go na bema od ruskich i schował do szafy. Tym sposobem przeleżał 20 lat w stanie praktycznie fabrycznym. Gdyby nie rozlane baterie to miernik jest w stanie doskonałym. Fabryczne opakowanie styropianowe, instrukcja obsługi z pieczątką 1990 na karcie gwarancyjnej i kable. W instrukcji jest schemat tego wynalazku - trudno w to uwierzyć, ale multimetr z 1990 roku nie ma w sobie ani jednego układu scalonego! Wspomniane wcześniej baterie są nietypowe i dzisiaj już się takich nie dostanie - ich termin przydatności minął jakieś 20 lat temu. Baterie są potrzebne tylko do omomierza i testera tranzystorów. Tester jest dość rozbudowany. Umożliwia regulację prądu kolektora, bazy i pomiar hFE w różnych warunkach, czego w zachodnich współczesnym miernikach nie ma. Amperomierz i woltomierz działają, choć trochę niedokładnie. Pewnie to kwestia kalibracji. Gdyby ktoś chciał skany instrukcji to piszcie na maila.Lampa elektronowa ГКЗ-100
Ot taka sobie lampeczka wielkości butelki od piwa :)Transformator HV
Miał służyć do budowy lampy plazmowej, kiedy byłem w liceum. Z lampą nie wyszło, ale transformator zostawiłem, bo ładnie wygląda.Kolekcja: Komputery
Zbieram stare kalkulatory, komputery i układy scalone, a w szczególności pamięci EPROM z dużą strukturą (powyżej 1cm) i mikrokontrolery z charakterystycznym okienkiem, przez które widać strukturę scaloną. Jeżeli masz takie zabytki to pisz do mnie na adres
ZX Spectrum
Legendarny gumiak - kiedyś marzenie wielu ludzi. Potrafił przyciągać do telewizora przez długie zimowe wieczory. Egzemplarz w pełni sprawny i w doskonałym stanie technicznym.ZX80 własnej roboty
Spróbujcie dzisiaj zrobić własny komputer :) Prezentowane tutaj urządzenie zostało zrobione przez Marka Pyżalskiego.Elwro TVG-10
Jedyna polska konsola do gier. Myślałem, że w środku siedzi Z80 i jakiś EPROM z programem, a tu tylko jeden scalak z importu. Trochę się rozczarowałem. Mam też pistolet Wideotraf. Działa na zasadzie pióra świetlnego.RAM firmy Apple
Kiedyś firma Apple zajmowała się produkcją pamięci RAM. Nieważne jakie to ma parametry, ważne że Apple :)RAM 16MB
RAM o pojemności 16MB w roku 1982? To możliwe? W czasach ZX Spectrum, który miał ledwie 64kB było to nie do pomyślenia, a jednak były już w tedy takie w produkcji. Są to dwie płytki, obsadzone scalakami z obu stron. Daje to 32 scalaki o pojemności 512kB każdy. To musiało być baaaardzo drogie.
Subskrybuj:
Posty
(
Atom
)