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

Programowanie w BASCOM AVR jeden program dziala drugi nie

kundzios 06 Sie 2006 11:06 1467 6
REKLAMA
  • #1 2885395
    kundzios
    Poziom 19  
    Posty: 401
    Pomógł: 20
    Ocena: 42
    Witam
    Mam problem z programowaniem dlatego zwracam sie do was
    Dlaczego ten program dziala:

    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Portd = Output
    Portd = &B01010101
    Do
    Rotate Portd , Left
    Waitms 145
    Loop
    End

    a ten nie:

    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Pind.0 = Output
    Config Pind.1 = Output

    Do
    Set Pind.0
    Set Pind.1
    Wait 1
    Reset Pind.0
    Reset Pind.1
    Wait 1
    Loop
    End

    nie moge zalapac co jest zle

    mam wersje 1.11.7.4 Bascom AVR

    pozdrawiam
  • REKLAMA
  • Pomocny post
    #2 2885456
    tomsyty

    Poziom 26  
    Posty: 696
    Pomógł: 102
    Ocena: 20
    Powinien wyskoczyć Ci błąd podczas kompilacji - pinx.y używa się w operacjach odczytu i ustawiania końcówki jako we/wy. Gdy chcesz zmienić stan wyjścia, używa się portx.y=0/1 albo set/reset portx.y
    Konto firmowe:
    Tomasz Jędras (tomsyty)
    Wierzbowa 30a, Lubin, 59-300 | Tel.: 601XXXXXX (Pokaż) | Strona WWW: https://tomsyty.pl
  • REKLAMA
  • #3 2885478
    kundzios
    Poziom 19  
    Posty: 401
    Pomógł: 20
    Ocena: 42
    zadne bledy mi nie wyskoczyly, moze wiesz dlaczego?? moze skopany BASCOM???

    wielkie dzieki dziala teraz

    a co zrobic zeby kompilator pokazywal bledy??
  • Pomocny post
    #4 2885522
    tomsyty

    Poziom 26  
    Posty: 696
    Pomógł: 102
    Ocena: 20
    Faktycznie, jak wkleiłem to mi też nie pokazało błędu. Pokazuje błąd dopiero jak używa się notacji pinx.y=0/1 a jak set/reset to nie. W sumie niby polecenia taki sam wynik dają, może Bascom ma jakieś niedociągnięcie.
    Konto firmowe:
    Tomasz Jędras (tomsyty)
    Wierzbowa 30a, Lubin, 59-300 | Tel.: 601XXXXXX (Pokaż) | Strona WWW: https://tomsyty.pl
  • REKLAMA
  • #5 2885530
    kundzios
    Poziom 19  
    Posty: 401
    Pomógł: 20
    Ocena: 42
    ten program przepisalem z ksiazki Programowanie mikrokontrolerow AVR w jezyku BASCOM i tez nie dziala???

    $sim
    $regfile = "m8def.dat"
    $crystal = 8000000

    Config Portd = Output
    Config Pinb.0 = Input

    Dim Kierunek As Bit

    Przycisk Alias Pinb.0

    Set Portb.0

    Portd = &B11111110
    Reset Kierunek

    Do
    If Przycisk = 0 Then
    Waitms 50
    Toggle Kierunek

    Do
    Loop Until Przycisk = 1
    End If
    If Kierunek = 1 Then
    Rotate Portd , Left

    Else
    Rotate Portd , Right

    End If
    Waitms 100
    Loop
    End

    swieca wszystkie diody ale jakos slabo
  • REKLAMA
  • Pomocny post
    #6 2885551
    tomsyty

    Poziom 26  
    Posty: 696
    Pomógł: 102
    Ocena: 20
    Nie działa, tzn. mam rozumieć że nie działa po zaprogramowaniu mikroprocesora?
    EDIT no to usuń dyrektywę $sim, ona jest tylko do symulacji programowej, nie ma co się dziwić, z nią jakiego byś nie dał opóźnienia to będzie ono minimalne i program będzie zasuwał za szybko.
    Konto firmowe:
    Tomasz Jędras (tomsyty)
    Wierzbowa 30a, Lubin, 59-300 | Tel.: 601XXXXXX (Pokaż) | Strona WWW: https://tomsyty.pl
  • #7 2885573
    kundzios
    Poziom 19  
    Posty: 401
    Pomógł: 20
    Ocena: 42
    tak, po skompilowaniu nie pokazuje rzadnych bledow

    Dodano po 11 [minuty]:

    wielkie dzieki w tej ksiazce nie ma wszystkiego

    program dziala dobrze dioda "plynie"

    ale nie chce dzialac zmiana kierunku plyniecia
    ten sam program

    Dodano po 5 [minuty]:

    sorry wszystko jest ok przepraszam

    wielkie dzieki jestem winien ci przysluge
    juz 1 rok sie meczylem i nic nie moglem zaprogramowac

    WIELKIE DZIEKI

Podsumowanie tematu

✨ Problem dotyczył programowania mikrokontrolera AVR w BASCOM AVR, gdzie jeden program działał poprawnie, a drugi nie. Błąd wynikał z nieprawidłowego użycia notacji pinx.y do ustawiania stanu wyjścia – w BASCOM AVR do zmiany stanu pinu należy używać portx.y=0/1 lub poleceń set/reset portx.y, natomiast pinx.y służy do odczytu stanu pinu. Kompilator w wersji 1.11.7.4 nie zgłaszał błędów przy użyciu set/reset, co mogło wprowadzać w błąd. Dodatkowo, problem z programem symulacyjnym wynikał z użycia dyrektywy $sim, która jest przeznaczona tylko do symulacji i powoduje minimalne opóźnienia, co wpływa na nieprawidłowe działanie programu po zaprogramowaniu mikrokontrolera. Po usunięciu $sim program działał poprawnie, a problem z kierunkiem przesuwania diod został rozwiązany.
Wygenerowane przez model językowy.
REKLAMA