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

Jak ustawić Timer0 w Atmega8 z BASCOM do odliczania sekund?

Quaniq 06 Cze 2014 17:23 1542 17
REKLAMA
  • #1 13684548
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    Witam,
    jestem w trakcie wykonywania projektu na podstawie: http://extremeelectronics.co.in/avr-projects/microwave-controller-using-atmega8-avr-project/

    W tym projekcie jest podany kod źródłowy, ale ja piszę własny od podstaw w BASCOM. Doszedłem do timera i trochę stanąłem w miejscu. Musze ustawić jakoś Timer, tak żeby aktywował on się po przyciśnięciu przycisku START i co sekundy zmniejszał ilość sekund, aż dojdzie do 00:00. Po przyciśnięciu przycisku STOP timer powinien zatrzymać się.

    Nie wiem jak w Timerze ustawić prescaler do Atmegi8a, tak żeby przerwania były co 1 sekundę ; <

    Proszę o jakieś wsparcie.

    Druga sprawa w projekcie jest również taki schemat:
    http://extremeelectronics.co.in/avrprojects/Images/buzzer.png
    nie wiem jak mam zaintepretować tą strzałkę do góry która idzie od buzzera, gdzie to mam podłączyć?
  • REKLAMA
  • #2 13684577
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    Quaniq napisał:
    Nie wiem jak w Timerze ustawić prescaler do Atmegi8a, tak żeby przerwania były co 1 sekundę ; <

    Jakie jest taktowanie atmegi?

    Quaniq napisał:
    Druga sprawa w projekcie jest również taki schemat:
    http://extremeelectronics.co.in/avrprojects/Images/buzzer.png
    nie wiem jak mam zaintepretować tą strzałkę do góry która idzie od buzzera, gdzie to mam podłączyć?


    Strzałka ta określa plus zasilania. Podłącz ją po prosty do plusa zasilania (+5V).
    Pozdrawiam.
  • #3 13684595
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    Po podłączeniu tak jak na tamtym schemacie buzzer mi piszczy od razu. Akurat aktualnie nie mam tego jaki tam jest potrzebny, tylko jakiś inny 3-24V pasywny, może przez to.

    Taktownie to prawdopodobnie 16MHz
  • #4 13685319
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    Quaniq napisał:
    Po podłączeniu tak jak na tamtym schemacie buzzer mi piszczy od razu.

    To znaczy, że przewodzi. Jeżeli jest podłączony do procka, to wyślij na port, do którego podłączona jest baza tranzystora stan niski a jeśli tranzystor nie jest podłączony do procka to jego bazę podłącz do masy.

    Quaniq napisał:
    Taktownie to prawdopodobnie 16MHz


    Prawdopodobnie? Czyli jak ustawiasz fusebity??
  • #5 13685479
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    $regfile = "m8def.dat"
    $crystal = 4000000
    $hwstack = 40
    $swstack = 16
    $framesize = 32


    Taką konfigurację generuje BASCOM dla Atmegi8, gdzieś indziej widziałem:
    $crystal = 16000000
  • REKLAMA
  • #6 13685506
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    To zdecyduj się 4MHz albo 16MHz. Wybieraj.
  • #7 13685543
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    Niech będzie 4MHz
  • Pomocny post
    #8 13689499
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    Zrób to tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #9 13689870
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    Zbyt wolno to leciało..
    Zamiast 125 w pozamieniałem na 16, to minimalnie się po pewnym czasie spóźniały sekundy, a na 15 to minimalnie zbyt szybko.
  • REKLAMA
  • #10 13690005
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    To znaczy kolego, że masz źle ustawione fusebity. 8ms razy 16 to ok 130ms a wiec prawie 10 razy za szybko. Procesor taktowany jest rezonatorem kwarcowym, czy wewnętrznym oscylatorem? Zapewne jest włączony podział częstotliwości przez 8.
  • REKLAMA
  • #11 13690139
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    Nie znam się na tym. No ale chyba wewnętrznym oscylatorem.
  • #12 13690154
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    Kolego. Może najpierw poczytaj co to jest rezonator kwarcowy, oscylator RC, bo teraz taka pomoc jest bezcelowa. Pokaż jak ustawiłeś fusebity.
  • #13 13690194
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    Nic nie ustawiałem, więc pewnie są domyślne

    "Domyślnym (fabrycznym) ustawieniem mikrokontrolera ATMEGA 8 są bity CKSEL3..0 = "0001" oraz SUT = "10". Oznacza to że fabryczny mikrokontroler, przed zmianą jakichkolwiek "Fusow" pracuje na wewnętrznym oscylatorze RC z najdłuższym czasem startu i taktowaniem 1MHz."
  • Pomocny post
    #14 13690295
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    Więc tak. Odcinek 1 sekundy ma być bardzo dokładny, czy nie musi? Jeżeli procek będzie pędzony z wewnętrznego oscylatora, to czas 1 sekunda nie będzie bardzo dokładny. Musisz zmienić fusebity, aby procek był taktowany z 4MHz, bo teraz jak sam widzisz pracuje na 1MHz.
  • #15 13690375
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    Ok dzięki, muszę ogarnąć jak to zrobić w BASCOMIE. Może jakoś sobie poradzę.
  • Pomocny post
    #16 13690392
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    Jaki masz programator? Ściągnij sobie lepiej MkAvrCalculator. Jest to naprawdę bardzo przyjemny programik i nie ma możliwości abyś źle ustawił fusebitów i zablokował procka. W bascomie ustawianie fusebitów jest dość trudne i może przysporzyć sporo kłopotów.
    Pozdrawiam.
  • #17 13690421
    Quaniq
    Poziom 9  
    Posty: 29
    Ocena: 1
    Prosty programator usbasp.
  • #18 13690470
    kaka0204
    Poziom 28  
    Posty: 954
    Pomógł: 148
    Ocena: 153
    Więc w 100% spełni zadanie i będzie współpracował z MkAvrCalculator. Obsuga programu jest bajecznie prosta, ale jeśli będziesz miał jakieś wątpliwości to w sieci znajdziesz poradnik twórcy programu.

Podsumowanie tematu

✨ Użytkownik pracuje nad projektem z wykorzystaniem mikrokontrolera ATmega8 w języku BASCOM, w którym chce skonfigurować Timer0 do odliczania sekund. W odpowiedziach poruszono kwestie dotyczące ustawienia preskalera, taktowania procesora oraz podłączenia buzzera. Ustalono, że dla dokładnego odliczania sekundy, mikrokontroler powinien być taktowany z częstotliwością 4MHz, a nie 1MHz, co wymaga zmiany fusebitów. Użytkownik otrzymał również wskazówki dotyczące konfiguracji Timer0 oraz użycia programu MkAvrCalculator do ustawienia fusebitów.
Wygenerowane przez model językowy.
REKLAMA