Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Bascom do sterowania zegarem+ rozpoznawanie napięcia

servgsm 11 Oct 2008 10:11 1229 8
  • #1
    servgsm
    Level 23  
    Witam!

    Robię zegar ciemniowy na procku ATMEGA8 no i nastał problem... Nie wiem jak zarządzać zegarem :]

    Otóż mam podłączony kwarc 10MHz w piny XTAL1 i XTAL2 i na tym chcę oprzeć swój wzorzec czasu.

    Zasada działania jest taka:
    W procku zostaje ustawiony czas z dokładnością do 0,1s. Gdy zostaje wciśnięty przycisk start, zegar startuje z ustawionym czasem, leci w dół a na pinie 0 w porcie B ustawiony zostaje stan wysoki . Jak dojdzie do 00,0s zegar ma się zatrzymać i ustawić stan niski na pinie 0 w porcie B. Tyle :)

    No i podkreślam że pierwszy raz robię własną konstrukcję na AVR więc proszę o zrozumienie mojej niewiedzy :)

    Proszę o pomoc z tym kawałkiem chleba - chodzi mi jedynie o kod do startowania zegara i stopowania go :)

    Pozdrawiam!

    P.S.
    Jakby ktoś już się rozpędził... To jak w tej ATMEDZE rozpoznać czy do pinu dochodzi np napięcie 1, 3,3 lub 5V?
  • #2
    Balu
    Level 38  
    1) nie ten dział
    2) Timer1 z preskalerem przez 1024 i zliczać 9766 impulsów, wtedy na jedno przeładowanie masz 1 sekundę, lub, 977 impulsów -> wtedy na jedno przeładowanie masz 0,10005s ;)
    Ew. zmniejszyć preskaler i dobrać jeszcze raz;)
    3) Kod Sobie napisze kolega Sam. Jeśli chce kolega gotowca jest inny dział -> bazar podzespoły.
    4) 5V, 3,3V nie ma problemu poprostu będą miały logiczną :1: na pinie, co do 1V to trzeba np. przez tranzystor puścić lub OPa (przerost formy nad treścią).

    Łukasz.
  • #3
    servgsm
    Level 23  
    Balu wrote:
    1) nie ten dział
    2) Timer1 z preskalerem przez 1024 i zliczać 9766 impulsów, wtedy na jedno przeładowanie masz 1 sekundę, lub, 977 impulsów -> wtedy na jedno przeładowanie masz 0,10005s ;)
    Ew. zmniejszyć preskaler i dobrać jeszcze raz;)
    3) Kod Sobie napisze kolega Sam. Jeśli chce kolega gotowca jest inny dział -> bazar podzespoły.
    4) 5V, 3,3V nie ma problemu poprostu będą miały logiczną :1: na pinie, co do 1V to trzeba np. przez tranzystor puścić lub OPa (przerost formy nad treścią).

    Łukasz.


    ok to tak...

    1) Nie mam pojęcia jaki dział więc proszę o podpowiedź
    2) Nooo taka dokładność by mnie nawet satysfakcjonowała... A da się dokładniej?
    3) Nie chcę gotowca tylko pomocy w pisaniu jako początkujący ;)
    4) Tzn... Chodzi mi o to żeby procek rozpoznawał jakie to napięcie... że np jak będzie 5v to ma włączyć to, jak 3,3 to co innego a jak 1 czy ile tam... to jeszcze inna akcja.

    Pozdrawiam!
  • #5
    servgsm
    Level 23  
    Więc proszę jakiegoś moderatora o przeniesienie tego postu ;)

    No dobra... postaram się z międzyczasie zapoznać się bliżej z tymi pojęciami ;)

    Pozdrawiam!
  • #7
    servgsm
    Level 23  
    Hmmm... W sumie to tak myślę że chodzi mi bardziej o powtarzalność... A taka dokładność o której kolega wcześniej wspomniał w sumie by starczyła... :)

    Czyli... Tak na chłopski język... Co mam zrobić z tym zegarem żeby to działało jak powinno działać i czy ten kwarc 10MHz będzie ok? :)
  • #8
    Balu
    Level 38  
    Inicjacja timera w trybie normalnym, z odpowiednim prescalerem. Zezwolenie na przerwania od OVF + załadowanie timera wartością (0xffff-wyliczona wartość). Tak będzie działać z 10Mhz.
    W każdym przerwaniu przeładowanie timera + (de)inkrementacja zmiennej globalnej :) i to tyle folks;-)
  • #9
    mirley
    Level 17  
    Witam. Jestem już dawno zalogowany na elektrodzie ale jeszcze nic nie napisałem więc czas zacząć.

    Odnośnie programu w BASCOM'ie to mogę z przyjemnością pomóc rozwiązać kilka problemów. Sam wykonywałem podobny układ dla znajomego (timer fotograficzny) było to na mikrokontrolerz AT89C2051. Nie jest zbyt dokładny ale takie miał założenia. Jeśli się na coś przyda to opis znajduje się na mojej stronie (http://mirley.firlej.org/prosty_timer).

    Obługę ADC wykonywałem na mikrokontrolerz ATMEGA16 ale myślę że nie bedzie problemów także pod ATMEGA8