logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C] Zapis - o jakiej porze została jaka akcja wykonana - ?

Defozo 26 Gru 2009 19:59 945 3
REKLAMA
  • #1 7438922
    Defozo
    Poziom 17  
    Witam, potrzebuję napisać w C program, który mi zapisze o jakiej porze (czasie) została określona akcja wykonana.
    Np. zostanie wykonana jakaś procedura i ta procedura ma zapisać ten czas o jakim się zaczęła wykonywać, a później zapisać o której już się wykonała.

    Przykład po zapisaniu:
    12:20:50,10-A4-1
    17:33:26,35-A2-1
    18:22:23,05-A2-0
    19:55:11,37-A1-1
    20:00:33,49-A3-1
    20:43:33,25-A1-0
    21:45:37,27-A3-0
    22:06:55,30-A4-0


    A1-1 - A = Akcja; 1 = Numer akcji; 1 - zn. start, 0 - zn. stop
    Najlepiej jakiś taki zapis (a może jeszcze krótszy?), ponieważ pamięć na ATmega8 nie jest zbyt duża.

    Dodam, że programuję na mikrokontroler Atmel AVR - ATmega8.
    Programuję w Programmer's Notepad.

    Proszę o pomoc,
    Pozdrawiam,
    Defozo
  • REKLAMA
  • #2 7439035
    Estarriol
    Poziom 15  
    Temat raczej do działu mikrokontrolery się nadaje - do końca myślałem, że o PC chodzi.

    Musisz na Atmedze zrobić zegar - w jaki sposób to już zależy od Ciebie.
    Pierwsza opcja to skorzystanie z liczników ATmegi do pomiaru czasu. A niech zliczają np. sekundy UNIXowe, a potem funkcjami można z tego wszystko wyłuskiwać. Z dokładnością już gorzej, aczkolwiek chyba nie jest tak źle(nie wiem, gdyż nie używałem tej metody).

    Druga to jakiś scalak, np. DS1307 - obsługuje się go po i2c i jest to niezależny zegar/kalendarz.

    Co do samego zapisu - jeśli ma być ich wiele to odradzam eeprom atmegi - należy pamiętać o ilości cykli zapisu/kasowania takiego rodzaju pamięci.

    Co do formatu - zamiast "12:20:50,10-A4-1" możesz np na 3 bajtach zapisywać czas, a na jednym akcje i jej typ - możliwości oszczędzania pamięci jest wiele... Albo ostatecznie na 3 bajtach dałoby się wszystko zmieścić - chyba ze akcji jest baaardzo duzo( wykorzystac 17 bitów na godzine, 1 na typ akcji i 6 na akcje co daje nam 2^6-1 mozliwych akcji do zapisania)

    Pozdrawiam
  • REKLAMA
  • #3 7441252
    Defozo
    Poziom 17  
    Estarriol napisał:
    Temat raczej do działu mikrokontrolery się nadaje - do końca myślałem, że o PC chodzi.

    Rzeczywiście, trochę zboczyłem z tematu.

    Estarriol napisał:
    Musisz na Atmedze zrobić zegar - w jaki sposób to już zależy od Ciebie.

    To chyba nie problem.

    Estarriol napisał:
    Co do samego zapisu - jeśli ma być ich wiele to odradzam eeprom atmegi - należy pamiętać o ilości cykli zapisu/kasowania takiego rodzaju pamięci.

    Pamięć eeprom na początek powinna wystarczyć.
    Ilość cykli zapisu też będzie niewielka, tak czy owak, nie będzie to jakaś wielka pętla.

    Estarriol napisał:
    Co do formatu - zamiast "12:20:50,10-A4-1" możesz np na 3 bajtach zapisywać czas, a na jednym akcje i jej typ - możliwości oszczędzania pamięci jest wiele... Albo ostatecznie na 3 bajtach dałoby się wszystko zmieścić - chyba ze akcji jest baaardzo duzo( wykorzystac 17 bitów na godzine, 1 na typ akcji i 6 na akcje co daje nam 2^6-1 mozliwych akcji do zapisania)

    Oczywiście, ale najpierw to zrobię, a później będę się martwić czy wystarczy :)

    Może trochę rozjaśnie temat...
    Z atmegi chcę zrobić "przekaźnik", który będzie zapisywał co przekazuje.
    Przykład:
    Podłączam programator do portów atmegi nr 1 - tyle, że nie do portów, przez które zwykle programuję.
    Inne porty podłączam do atmegi nr 2.
    I teraz tak: programator wysyła info do atmegi nr 1, która zapisuje to co przechodzi przez nią i wysyła dalej do atmegi nr 2.
    Po zaprogramowaniu atmegi nr 2, biorę atmegę nr 1 i podłączam do atmegi nr 3.
    Atmega nr 1 z zapamiętanego przekazu, programuje atmegę nr 3.
    Żeby było jasne, wszystkie atmegi są takie same.

    Nie chodzi mi specjalnie jakoś, by atmega zapisywała realny czas. Wystarczy, by zapisywała te czasy między dotarciem prądu oraz czas przez jaki ten prąd "jest włączony".

    Czy to zadziała?

    Jakieś propozycje jak to napisać?

    Proszę o pomoc,
    Pozdrawiam,
    Defozo
REKLAMA