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

Odliczanie czasu Atmega8 i wyświetlacz trzy segmentowy

czesio0502 08 Gru 2015 19:11 1011 10
  • #1 08 Gru 2015 19:11
    czesio0502
    Poziom 5  

    Witam wszystkich
    Mam takie oto zadanie: po wciśnięciu przycisku ma zacząć się odliczanie czasu (od 999 do zera).
    Wartość na bieżąco wyświetlana na wyświetlaczu 3 seg. ze wspólną anodą .
    Z obsługą wyświetlacza dam sobie radę, ale z timerów jeszcze nigdy nie korzystałem.
    Prosiłbym o linka jeśli ktoś widział gdzieś podobny program albo opis konfiguracji timerów i przerwań zewnętrznych lub o jakieś wskazówki.
    Pracuję na Eclipse
    Pozdrawiam!
    (wyświetlacz podłączony jest poprzez HEF4543B(sterownik wyświetlacza) do atmegi8 )

    -1 10
  • #2 08 Gru 2015 19:43
    szczywronek
    Poziom 27  

    czesio0502 napisał:
    Prosiłbym o linka jeśli ktoś widział gdzieś [...] opis konfiguracji timerów
    Tu widziałem - Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji :]

    Przykładowe projekty znajdziesz bez problemu przez google... poszukaj haseł w stylu "stoper led atmega", itp. Przykładowy link: klik.

    0
  • #3 08 Gru 2015 21:24
    czesio0502
    Poziom 5  

    Dzięki za linki ;) ale tak sb myśle przecież można zrobić to bez timerów :D
    Napisałem już program ale nie działo moglibyście sprawdzić i coś poprawić ? :D

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #4 08 Gru 2015 21:47
    BlueDraco
    Specjalista - Mikrokontrolery

    A jak wygląda wyświetlacz 3-segmentowy? Nigdy jeszcze takiego nie widziałem...

    Program napisz od nowa - ten nie ma prawa działać. Zacznij od przerwania timera. Odliczania czasu NIE DA się zrobić bez timera.

    0
  • #5 08 Gru 2015 22:09
    czesio0502
    Poziom 5  

    Sorki wkradł się błąd 7 seg. 3 cyfrowy ;)

    Dodano po 10 [minuty]:

    Językiem c posługuje się od jakiegoś miesiąca i nie znam jeszcze wszystkich funkcji , jedyne te podstawowe ,
    Mam wielką prośbę pomożecie mi skonfigurować ten timer,żeby odliczał od 999 do zera ? Plss
    Zacząłem już nawet szukać porównań do innych projektów tego typu i splotłem takie cosik ;) #include <avr/io.h>
    #include <util/delay.h>


    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #6 08 Gru 2015 23:05
    BlueDraco
    Specjalista - Mikrokontrolery

    Całkiem źle. Timer ma działać ciągle i odliczać stałe odcinki czasu, coś rzędu 1/1000..1/500 sekundy.

    0
  • #7 10 Gru 2015 21:23
    czesio0502
    Poziom 5  

    Znalazłem błędy w tam tym programie, poprawiłem i działa :D ale mam gdy chce dodać natępujący warunek licznik nie staruje (przez chwilę pokazuje liczbę a potem gaśnie ) jeżeli i=0 wymuś na porcie stan wysoki Pomóżcie ;)

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #8 10 Gru 2015 21:28
    dondu
    Moderator Mikrokontrolery Projektowanie

    Patrząc na to:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    dam Ci dobre rady na początek:

    1. Zacznij od poznania języka C np. z kursu z kompilatorem online CManiak: http://mikrokontrolery.blogspot.com/2011/02/kurs-jezyka-c-spis-tresci.html

    2. Później kurs AVR: http://mikrokontrolery.blogspot.com/2011/03/drzaskowy-pamietnik-wstep.html

    3. uporządkuj swój kod, bo jego sprawdzanie to katorga.

    0
  • #9 01 Sty 2016 22:15
    Sławek-K
    Poziom 15  

    Nie jestem pewnie wiele dalej w "C" , ale o ile się orientuję pojedyncze "=" jest operacją przyrównania np x=1 (zmienna x dostaje nową wartość czyli 1) . Inaczej ma się taka linia if (x==1) {........} . Oznacza to , jeśli zmienna x ma wartość 1 to wykonaj kod w klamrach. Różnica jest zasadnicza. Myślę , że o to chodziło.

    0
  • #10 01 Sty 2016 22:30
    2675900
    Użytkownik usunął konto  
  • #11 02 Sty 2016 13:26
    Sławek-K
    Poziom 15  

    [quote="Piotrus_999"]

    BlueDraco napisał:
    Jezeli mógłbys jeszcze powiedziec co oznaczają te przecinki w if-ie.

    Jak pisałem powyżej , w klamrze znajduje się kod programu, który ma być wykonywany jeśli zmienna x ma wartość 1.
    np
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0