Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega32 - Zegar widmowy na Atmega32

06 Sty 2016 17:19 1050 13
  • Poziom 10  
    Witam, potrzebuję pomocy w zaprogramowaniu uC Atmega 32 w zegarze widmowym, Zegar w pełni wykonany i opisany znajduje się tutaj : https://www.elektroda.pl/rtvforum/topic944484.html
    Jednak nie mam kontaktu z autorem, nie posiadam znajomości języka C dlatego proszę was o pomoc w modyfikacji programu polegającej na ustawieniu godziny i daty, oraz krótkiego poradnika jak tego dokonać i jak zaprogramować ten układ.
    Autor dodał krótki poradnik ustawiania godziny jednak dla jednego indywidualnego przykładu (wstawił plik .hex z ustawioną godziną konkretnego dnia i kazał o tej godzinie uruchomić zegarek) jednak nie jest opisane jak samemu zmodyfikować program dla tego liczę na waszą pomoc z góry dziękuję i pozdrawiam.
    W załączniku program autora projektu.
  • Poziom 21  
    Czas nie jest zapisany w programie tylko pobierany z DS1307. Zreszta autor to napisal
    Cytat:

    Czas przetrzymywany jest w układzie DS1307, a dzięki zastosowaniu baterii podtrzymującej (widocznej na zdjęciu) pozostaje on tam bardzo długo. Dokładność zegarka jest satysfakcjonująca.

    Jak nie umiesz programowac to najlepiej znajdz w necie gotowca, ktory potrafi ustawic RTC i zrob tak jak autor tego projektu - ustaw RTC gotowcem (RTC musi posiadac backup zasilania w postaci baterii) a pozniej zaprogramuj atmege programem , ktory dolaczyl autor projektu.
  • Poziom 10  
    Pozwolę sobie przytoczyć słowa autora :
    w tym projekcie został zastosowany bardzo pokręcony system ustawiania godziny, który wymaga wgrania dwóch różnych hexów po sobie :P. Jeden z nich ma wkompilowaną godzinę którą ustawia i tym samym kasuje tamten bit sterujący, a drugi z nich już tego nie robi. Żeby sprawdzić czy zegarek ruszy wstawiam do załącznika hexa, który powinien Ci ustawić godzinę na 15:00 z dzisiejszą datą. Jeśli o 15:00 sobie go wgrasz, przy włożonej baterii podtrzymującej, a następnie, nie wyłączając zasilania, wgrasz hexa dostępnego w archiwum na pierwszej stronie tego tematu to godzina będzie poprawnie odczytywana już zawsze.
    Ja z tego wnioskuję że w jednym programie musimy zmienić wartości (odpowiedzialne za czas i datę) następnie wgrać drugi program i ten program w którym zaszyty jest czas również autor udostępnia tylko ja nie wiem które wartości trzeba zmienić ...
  • Poziom 21  
    To jest dokladnie to co napisalem powyzej. Gdzie masz zrodlo tego programu co ustawia czas?

    ok (chyba) znalazlem.
    Odkomentuj to:
    /* gDataRTC[SECONDS_ADDR] = 00; //ustawianie godziny
    gDataRTC[MINUTES_ADDR] = 52;
    gDataRTC[HOURS_ADDR] = 00;
    gDataRTC[DAY_ADDR] = 1;
    gDataRTC[DATE_ADDR] = 11;
    gDataRTC[MONTH_ADDR] = 2;
    gDataRTC[YEAR_ADDR] = 8;

    for(Poz = 0; Poz < 8; Poz++)
    {
    gDataRTC[Poz] = DECtoBCD(gDataRTC[Poz]);
    }
    WriteBufI2C(0x00, gDataRTC, 7);
    //*/
    Poczytaj troche o kodowaniu czasu w bcd lub note katalogowa ds to bedziesz wiedzial jakie wartosci wstawic aby otrzymac czas, ktory chcesz ustawic.
  • Poziom 10  
    No i właśnie tutaj zaczynają się moje schody że nie mam zielonego pojęcia jakie wartości odpowiadają oczekiwanym efektom :/ nie wiem gdzie szukać i dlatego założyłem temat ...



    nie znam języka ''C'' ale w programie są opisy według mnie to te wartości odpowiadają za ustawianie godziny Atmega32 - Zegar widmowy na Atmega32
  • Poziom 21  
    Napisalem wyzej - w nocie katalogowej http://datasheets.maximintegrated.com/en/ds/DS1307.pdf
    Strona 8 a szczegolnie tabelka powie ci jakie wartosci masz wpisac.
    Bity 0-3 czytane sa 'normalnie', bity 4-7 tam gdzie masz w tabelce '10' musisz pomnozyc razy 10 i tak dzisiejsza data to:
    06 --> 0000 0110 (bity w rtc) czyli 6 dec
    01 --> 0000 0001 (bity w rtc) czyli 1 dec
    2016 ( a wlasciwie 16) --> 0001 (1x10) 0110 (6) (bity w rtc) czyli 22 dec
  • Poziom 10  
    A czy mógł byś mi w kodzie źródłowym oznaczyć które wartości oznaczają datę bo nie wiem nawet w którym miejscu mam je edytować. ( może być screen z opisem ''ta wartość oznacza godzinę, ta minuty...'' ) jestem na prawdę zielony w programowaniu wykonywanie gotowych projektów mam w małym palcu skleiłem już setki układów bardziej skomplikowanych ale nigdy nie musiałem ingerować w program ...
  • Pomocny post
    Poziom 21  
    Naprawde, wszystko masz podane na tacy we wczesniejszych postach. Nie potrzeba wiedzy o programowaniu, tylko przeczytac wszystko ze zrozumieniem. Odpowiem ci jeszcze raz ale juz pozniej nie bede odpowiadal, bo wszystko juz masz napisane.
    Tu wpisujesz swoje ustawienia odpowiednio dla:
    gDataRTC[SECONDS_ADDR] = <-sekund
    gDataRTC[MINUTES_ADDR] = <-minut
    gDataRTC[HOURS_ADDR] = <-godzin
    gDataRTC[DAY_ADDR] = <- dnia tygodnia
    gDataRTC[DATE_ADDR] = <-dnia miesiaca
    gDataRTC[MONTH_ADDR] = <-miesiaca
    gDataRTC[YEAR_ADDR] = <-roku

    Wzwiazku z tym, ze w kodzie masz konwersje DECtoBCD(gDataRTC[Poz]);, to dane nowych ustawien wpisujesz 'normalnie' (bez zamieniania liczb tak jak podalem wyzej). Czyli w odpowiednie pola wpisyjesz dla dzisiejszej daty: 06, 01, 16 (a nie jak wyzej napisalem kodujac do bcd - 06, 01, 22)
  • Specjalista - Mikrokontrolery
    Tak, cały Internet Ci o tym powie milionem głosów.
  • Poziom 10  
    pytam tutaj ponieważ ''cały internet'' nic mi nie mówi, albo źle szukam. Chciał bym wiedzieć jak skompilować to w avr studio.
  • Poziom 28  
    kamil1994zielony napisał:
    pytam tutaj ponieważ ''cały internet'' nic mi nie mówi, albo źle szukam. Chciał bym wiedzieć jak skompilować to w avr studio.


    Podczas kompilacji programu źródłowego powstaje właśnie plik z rozszerzeniem .hex
  • Użytkownik usunął konto