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.

Atmega32 - Co robię źle? Licznik impulsów.

ddarkyo 17 Lip 2012 15:56 1578 7
  • #1 17 Lip 2012 15:56
    ddarkyo
    Poziom 7  

    Jestem początkujący w temacie AVR'ów, niedawno zakupiłem zestaw uruchomieniowy (od GoTronika) No i rozpocząłem naukę, język C szybko mnie do siebie zniechęcił (Nie oszukujmy się jest trudny dla osoby początkującej) więc tymczasowo postanowiłem zająć się bascomem (A potem do C planuję wrócić).
    No ale dosyć tego wstępu :> Posiadam procesor ATMEGA 32 i chcę napisać "Licznik Impulsów" chodzi o to że gdy zostanie wciśnięty microswitch na LCD powinna zostać dodana cyfra do "obecnej wartości" (zmienna K)
    I tu 2 problemy, przy obecnym kodzie podczas uruchomienia programu cyfry same dodają się z dużą prędkością a w momencie naciśnięcia przycisku proces ustaje, jednak gdy go puścimy, liczba ponownie zaczyna rosnąć. Co robię źle?
    Drugi Problem wygląda nieco inaczej, w momencie gdy w kodzie dodam coś takiego

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    To na ekranie wyświetla się coś takiego

    Impulsy
    (liczba) Impulsy

    Pomimo że w niższej linijce nie ma zdefiniowanego takiego napisu.

    A to cały kod programu, przepraszam jeżeli robię jakiś głupi błąd, ale niestety stoję aktualnie w miejscu, a chciał bym kontynuować swoją "edukację"

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    [/code]

    0 7
  • Pomocny post
    #2 17 Lip 2012 16:01
    mariuz
    Poziom 32  

    Spróbuj:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    A najlpeiej używaj poleceń
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #3 17 Lip 2012 16:14
    MArSTER_1
    Poziom 18  

    Spróbuj wgrać ten kod.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #4 17 Lip 2012 19:43
    ddarkyo
    Poziom 7  

    Ok, dzięki. Ale problem na tym się nie skończył.
    Teraz po naciśnięciu switcha atmega zachowuje się nietypowo

    ***********************
    https://www.dropbox.com/s/wsodhlckfw60le8/video-2012-07-17-19-27-43.3gp
    ***********************
    Zamieszczam film.

    Wgrałem kod od kolegi @UP :>

    nie dodaje do zmiennej 1 "impulsu" a zamiast tego, początkowo 5 a potem inne wartości.

    Wypiszę kilka po kolei.

    5, 10, 16, 22, 27, 33 itp. itd

    (Czasem zdarza się w innej kolejności np. 5, 10, 15, 21)
    Nie trzymam m.switcha, naciskam go jednorazowo i puszczam.

    Jak mogę sprawić aby za każdym razem wartość zwiększała się o jeden i co w tym momencie mogę robić źle? Może to wina mikrokontrolera (Miałem już małe problemy z prostymi programami na świecenie diodami w bascomie, zwalałem to na swoją niewiedzę, ale desktopowego basica w miarę ogarniam A może to wina mojego oprogramowania Bascom 2.0.7.3, sam już nie wiem :<)

    mam atmegę32 i chyba ten zapis

    $regfile = "m32def.dat"
    $crystal = 8000000

    Jest poprawny, w opcjach bascoma też nie trzeba chyba nic zmieniać...

    0
  • #5 17 Lip 2012 19:52
    MArSTER_1
    Poziom 18  

    Z tego co zaprezentowałeś na filmie to zlicza dobrze. Tak jak ma być w programie. Ale rozumiem, że chcesz aby po naciśnieciu zmienna nie rosła a jedynie zwiększała sie o 1 niezależnie od tego jak długo trzymasz przycisk? Następnie puszczasz przycisk i naciskasz ponownie i znów zwiększa się o 1?

    0
  • #6 17 Lip 2012 19:54
    ddarkyo
    Poziom 7  

    Tak jest ;> A co do programu to on zwiększa zmienną "O tyle ile chce" a nie tym więcej im dłużej trzymam.

    0
  • #7 17 Lip 2012 20:11
    MArSTER_1
    Poziom 18  

    Może tak?

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #8 17 Lip 2012 23:23
    adampyndzel
    Poziom 16  

    Cytat:

    chcę napisać "Licznik Impulsów" chodzi o to że gdy zostanie wciśnięty microswitch na LCD powinna zostać dodana cyfra do "obecnej wartości" (zmienna K)


    nie rozumie jakie cyfry tzn ze ma się zwiększyć wartość tej zmiennej o jeden??

    bo jeśli o to chodzi to przedstawię Ci program w C i to banalnie prosty, który zniechęci Cię od Bascoma. Ja wiem też to przerabiałem.

    Nie mogę się powstrzymać i muszę to napisać, ale jeśli weźmiesz w rękę lekturę typu tzw. elementarz języka C dla mikroklocków AVR i będziesz już znał bascoma to stwierdzisz ze ten bascom to w ogóle porażka. A jakie książki to pisz prywatnie bo nie wiem czy reklama zgodna z regulaminem.

    0