Strona Domowa

Dawida Urbanskiego

- Dział: arts -

< Go Back to List

elektronika/ds1302_asm

Komunikacja DS1302 z attiny3113

autor: Dawid napiano:2010-wrzesnia-23

Firmware ver 0.1

Pierwsza robocza wersja oporogramowania komunikacji, celem tej wersji jest sprawdenie poprawności wysyłanych danych przez mikrokontroler.

Dizałanie firwaru ogranicza się do przeprowadzenia 3 działań:

  • Odblokowanie flagi zapisu
  • Odblokowanie zegara, czyli włączenie go
  • Odczyt sekund

Uwaga! obiektem testu jest poprawność wysłanych danych, odbieranie danych będzie opracowywany w dalszych wersjach.

Podłoczenie

Rys 1 prezentuje schemat podłączenia układów. Podłoczenie nie zostało jeszcze wykonane! Ma ono jedynie harakter orientacyjny. Schemat podłączenie DS1302 do Attint2313 podłączenie DS1302 do Attint2313 Niebieskie linie to progrmator, Purpura - CE Pomarańcz- I/O Zieleń - SCLK

firmware w działaniu

Oto test działania firmware ver0.1. Obserwacji danych dokonano przy użyciu AVT389 przy frekwencji 2MHz, zapis uruchamiało pierwszy stan wysoki lini CE. Przedstawia podgląd działania firmware w wersji 0.1.

UWAGA: układ DS1302 nie był podłączony do mikrokontrolera podczas testu.

Czerwone linie wydzielają 3 komunikaty:

  • usuniecie flagi WP
  • usuniecie flagi CH
  • oraz odczyt sekund

Każdy z komunikatów dzieli się na 2 części:

  • Command Data - adres do odczytu/zapisu
  • Data - informacje odczytane/zapisane

Szczegółowy opis znajduje się w dokunentacji.

I. usunięcie flagi zapisu

Aby móc dokonywać zapisu do RAM/ZEGARA musimy najpierw usunąc flagę WP. WP - w stanie niskim oznacza możliwość zapisu. WP - w stanie wysokim oznacza zakaz zapisu. Flaga WP znajduje się na 7 bicie pod adresem(8F,8E)
Aby to zrobić musimy wyslać do zegara:

  • COMMAND BYTE z adresem flagi WP [zobacz Tab 3a]
    odczyt (hex) zapis (hex) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
    8F 8E WP 0 0 0 0 0 0 0

    Dokonamy zapisu tak więc interesuje nas adres: 0x8E(hex) = 0b01110001(bin). [zobacz Tab 3b]

    Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
    0 1 1 1 0 0 0 1
  • DATA wartość zero: 0x00h = 0b00000000

    Nie jestem pewien czy tak ma wyglądać, tego kroku nie ma opisanego w dokumentacji. Staram się ustawić 7Bit na zero wartość 0x00 = 0b00000000

    Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
    0 0 0 0 0 0 0 0
II. usunięcie flagi stopu zegara

Aby zegar, 'tykał' musimy go o to poprosić. Odbywa się to przez usunięcie flagi CH (Clock Halt Flag) CH - w stanie wysokim oznacza że zegar stoi CH - w stanie niskim zegar tyka Flaga CH znajduje się na 7 bicie pod adresem (81h,80h)

Aby ustawić flage CH musimy wyslać do zegara:

  • COMMAND BYTE z adresem flagi CH:
    odczyt (hex) zapis (hex) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
    81 80 CH 10 Seconds Seconds

    Dokonamy zapisu tak więc interesuje nas adres: 0x80(hex) = 0b10000000(bin).

    Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
    1 0 0 0 0 0 0 0
  • DATA wartość 0: 0x00(hex) = 0b00000000

    Aby wyzerować Bit7,wysyłam wartość 0.

    Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
    0 0 0 0 0 0 0 0
II. odczyt

Dla testu działania program odczyta sekundy. Sekundy są zapidane na bicie6,7,4 oraz 3,2,1,0 pod adresem(81h,80h) Aby je odczytać musimy wyslać do zegara:

  • COMMAND BYTE z adresem flagi CH:
    odczyt (hex) zapis (hex) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
    81 80 CH 10 Seconds Seconds

    Dokonamy zapisu tak więc interesuje nas adres: 0x80(hex) = 0b10000000(bin).

    Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
    1 0 0 0 0 0 0 0
  • DATA wartość: tę wartość powinien podać na DS1302

    wartość odczytaną, narazie pomijamy gdyż DS1302 nie był podłączony.

strony [1] [2] [3] [4] [5] [6] [7] [8]
czytaj dalej...

Back to List


komentarze

  • gość
    Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/dawidurb2/domains/dawidurbanski.pl/public_html/engine/framework/smarty/libs/plugins/modifier.date_format.php on line 53
    Apr 19, 2018
    Tu podaj treść
  • gość
    Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/dawidurb2/domains/dawidurbanski.pl/public_html/engine/framework/smarty/libs/plugins/modifier.date_format.php on line 53
    Dec 24, 2018
    I am ltonser. I need help. What can i do it?
  • gosc
    Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/dawidurb2/domains/dawidurbanski.pl/public_html/engine/framework/smarty/libs/plugins/modifier.date_format.php on line 53
    Apr 30, 2021
    Como se llamo esto i am from SPAIN

dodaj komntarz

tools

qrcode:
qrcode
-

code by: Dawid Urbanski

Copyright © by Dawid Urbanski 2010 - 2020