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

[Atmega8][bascom]Czy poniższy program jest poprawny?

Greendesign.08 06 Lip 2008 01:37 1761 16
  • #1 5315914
    Greendesign.08
    Poziom 10  
    Czy poniższy program jest poprawny?
    Na symulatorze wszystko działa lecz nie w rzeczywistości.
    Zadanie programu:
    Po Zwarciu PinC.1 do masy ma wygenerować 2s impuls na PinC.0
    następnie po rozwarciu zacząć odliczać czas ustalony przy urzyciu zmiennej T, po upływie którego poda impuls 2s na PinC.0.
    Jeśli przed upływem czasu ustalonego zmienną T1 PinC.1 zostanie zwarty do masy wtedy po rozwarciu PinC.1 znowu zacznie odliczać czas od nowa.


    $regfile = "m8def.dat"
    Config Pind.0 = Input
    Config Pind.1 = Input
    Config Pinc.1 = Input
    Config Pinc.0 = Output
    
    Set Pind.1
    Set Pinc.1
    Set Pinb.5
    
    Dim C As Integer
    Dim T As Integer
    
    Wy Alias Pinc.0
    We Alias Pinc.1
    T1 Alias Pind.1
    T2 Alias Pinb.5
    
    If T1 = 0 Then
    T = 360
    Elseif T2 = 0 Then
    T = 480
    Else
    T = 240
    End If
    
    Startprog:
    Do
        Debounce Pinc.1 , 0 , Prog
    
    Loop
    End
    
    Prog:
    Set Wy
        Wait 2
    Reset Wy
          Gosub Prog1
    
    Prog1:
    Do
    Debounce Pinc.1 , 1 , Mierz_czas
    Loop
    
    Mierz_czas:
    C = 0
    Do
    C = C + 1
    Wait 1
    If C = T Then
    Set Wy
    Wait 2
    Reset Wy
    Gosub Startprog
    Elseif We = 0 Then
    Gosub Prog1
    End If
    Loop


    Post raportowany, należy stosować znaczniki code, oraz stosować tagi w tematach.
    And!
  • #2 5315950
    JmL(TM)
    Poziom 24  
    brak: $crystal = ?????
  • #4 5316408
    Greendesign.08
    Poziom 10  
    Witam.Jeśli się nie mylę gdy nie użyje dyrektywy
    $Crystal to zostanie użyty wewnętrzny 1Mhz oscylator.
  • Pomocny post
    #5 5316440
    dawid512
    Poziom 32  
    Wpisz do $crystal taka wartosc jaka masz. Jezeli masz fusy na wew generator to wpisz 1MHz.

    Cytat:
    Set Pind.1
    Set Pinc.1
    Set Pinb.5


    BZDURA! Ile można powtarzać?

    Rejestr PORTX służy do wystawiania 1 lub 0 na port.
    Rejestr PINX służy do sprawdzania stanu danej końcówki portu.
    Rejestr DDRX służy do ustalenia czy port ma być wyjściem czy wejściem.

    Czyli zamiast tego co podalem wyzej ma byc:

    Set PORTD.1 itd.
  • #6 5316464
    Greendesign.08
    Poziom 10  
    A tak poza tym czy program jest poprawny?
  • #7 5316479
    JmL(TM)
    Poziom 24  
    Greendesign.08 napisał:
    A tak poza tym czy program jest poprawny?


    Dobry jestes! Popraw najpierw wszystkie bledy, ktore zostaly wskazane, skompiluj, wrzuc do uC i zobacz. Troche wlasnej inicjatywy a nie tylko gotowe na tacy!
  • #8 5316696
    Greendesign.08
    Poziom 10  
    Jeszcze jedno pytanie.
    Jak z powodu kompilatora Bascom ustawić wewnętrzny oscylator 1Mhz.
    Poza tym dzięki za pomoc.
    Pozdrawiam
    Greendesign.08
  • #9 5316697
    JmL(TM)
    Poziom 24  
    Greendesign.08 napisał:
    Jeszcze jedno pytanie.
    Jak z powodu kompilatora Bascom ustawić wewnętrzny oscylator 1Mhz.
    Poza tym dzięki za pomoc.
    Pozdrawiam
    Greendesign.08


    Z powodu czy poziomu? uC nowy? Zmieniales juz cos z fuse bitami?
  • #10 5316745
    Greendesign.08
    Poziom 10  
    Układ był parę razy programowany i kasowany.
    Fuse bitów nie zmieniałem, przynajmniej celowo.
    Używam programatora STK200/300 i Programu Bascom
    AVR 1.11.9.1 .
    Weryfikacja przebiega prawidłowo , można odczytać program z układu lecz układ nadal nie działa.
    Za chwilę podeślę schemat.
  • #11 5316754
    JmL(TM)
    Poziom 24  
    No to w takim razie pracuje na fabrycznym ustawieniu na wew. kwarc 1MHz i taki wlasnie musisz w programie deklarowac:

    $crystal = 1000000


    chyba, ze zmienisz na zewnetrzny to wtedy wpisujesz wartosc zewnetrznego :D
  • #12 5317069
    Greendesign.08
    Poziom 10  
    Opis Działania:
    Czy poniższy program jest poprawny?
    Na symulatorze wszystko działa lecz nie w rzeczywistości.
    Zadanie programu:
    Po Zwarciu PinC.5 do masy ma wygenerować 2s impuls na PinC.0
    następnie po rozwarciu zacząć odliczać czas ustalony przy użyciu zmiennej T, po upływie którego poda impuls 2s na PinC.0.
    Jeśli przed upływem czasu ustalonego zmienną T1 PinC.5 zostanie zwarty do masy wtedy po rozwarciu PinC.5 znowu zacznie odliczać czas od nowa.
    PinC.4 i PinC.3 służy do ustalania czasu.

    A oto zmodyfikowany Program i Schemat.
    $regfile = "m8def.dat"
    $crystal = 4000000
    
    Config PinC.5 = Input
    Config PinC.4 = Input
    Config PinC.3 = Input
    Config PinC.0 = Output
    
    Set PortC.5
    Set PortC.4
    Set PortC.3
    
    Dim C as Integer
    Dim T as Integer
    
    Wy Alias PinC.0
    We Alias PinC.5
    T1 Alias PinC.4
    T2 Alias PinC.3
    
    If T1 = 0 Then
    T = 360
    Elseif T2 = 0 Then
    T = 480
    Else
    T = 240
    End If
    
    Startprog:
    Do
       Debounce PinC.5 , 0 , Prog
    Loop
    End
    
    Prog:
    Set Wy
      Wait 2
    Reset Wy
    Gosub Prog1
    
    Prog1:
    Do
      Debounce PinC.5 , 1 , Mierz_czas
    Loop
    
    Mierz_czas:
    C = 0
    Do
    C = C + 1
    Wait 1
    If C = T Then
    Set Wy
    Wait 2
    Reset Wy
    Gosub Startprog
    Elseif We = 0 Then
    Gosub Prog1
    End If
    Loop
    
    
    


    [Atmega8][bascom]Czy poniższy program jest poprawny?

    Proszę o korektę ewentualnych błędów i pomocne wskazówki.
    Pozdrawiam.
  • #13 5317386
    Balu
    Poziom 38  
    Pomocne wskazówki poza pisaniem na forum zajrzyj proszę do DATASHEETA!
    RTFM!!!

    Ile razy można Wam, młodym bascomowcom pisać do czego służy PIN? A Jak się "wystawia stan" na wyjściu...

    NIEREFORMOWALNI!


    Clue:
    Poczytaj w datasheecie jak się obsługuje porty.

    P.S. W symulatorze, też nie działa :)
  • #14 5317524
    JmL(TM)
    Poziom 24  
    Caly czas zastanawia mnie dlaczego ludzie wciaz i wciaz robia takie cos:
    {...}
    
    Prog:
    Set Wy
      Wait 2
    Reset Wy
    Gosub Prog1 --+
                  |
    Prog1:      <-+ skok tutaj - jakby program mogl niespodziewanie skoczyc do EntryPoint'u ;)
    Do
      Debounce PinC.5 , 1 , Mierz_czas
    Loop
    
    {...}
  • #15 5317652
    Greendesign.08
    Poziom 10  
    Witam.Proszę o dokładny opis co jest źle i co trzeba poprawić.
    Układ muszę mieć gotowy na poniedziałek i będę wdzięczny za pomoc.
    Jak widać dopiero zaczynam zabawę z AVR i zdarzają się błędy.
    Dzięki za pomoc, pozdrawiam
    Greendesign.08
    :D
  • #16 5317660
    Balu
    Poziom 38  
    CO ZA OPIS??
    MA CI KTOŚ TWÓJ KOD WKLEIĆ Z POPRAWKAMI???
    DRWISZ??
    DOSTAŁEŚ KAWĘ NA ŁAWĘ.

    UŻYJ...

    I..jakby Ci to powiedzieć...z tym poniedziałkiem...Twój pech
    Trzeba się było wcześniej za to zabrać:]

    Dodano po 7 [minuty]:

    P.S. Caps lock nie był dziełem przypadku... (Informacja dla moderatorów;-) )
  • #17 5317918
    JmL(TM)
    Poziom 24  
    Greendesign.08 wszystko bylo juz powiedziane wiec przeczytaj wszystkie odpowiedzi raz jeszcze, zapisz wskazowki na kartce, zerknij ponownie na swoj kod i na pewno wylapiesz to co powinienes. A zastanawia mnie jedno... czy to jest u ciebie zamierzone by spr. stan przyciskow T1,T2 tylko podczas uruchamiania urzadzenia, a nie w trakcie jego dzialania?

    Balu praktycznie wykrzyczal juz to co "trapi" twoj program wiec popatrz uwaznie co on napisal.
REKLAMA