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.

Sprawdzenie programu sterującego silnikiem z przerwami.

Patryk6144 14 Maj 2011 10:21 1098 7
  • #1 14 Maj 2011 10:21
    Patryk6144
    Poziom 10  

    Witam, proszę o sprawdzenie programu, który ma polegać na prosto silniki 1s przerwy, tył 1s przerwy itd. Proszę o pomoc.:D

    Code:
    $regfile = "m88def.dat"
    
    $crystal = 16000000

    'Konfiguracja sterowania sprzętowym PWM
    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

    'Konfiguracja portów
    Config Portb = Output
    Config Portd = &B01111111
    Config Portc = Input

    Portd.7 = 1

    Przycisk Alias Pind.7
         Led Alias Portd.6
    Enable_a Alias Portb.1
    Enable_b Alias Portb.2
    Silnik_prawy_a Alias Portd.3
    Silnik_prawy_b Alias Portd.2
    Silnik_lewy_a Alias Portd.1
    Silnik_lewy_b Alias Portd.0

    Bitwait Bit , Set | Reset

    Bitwait Pind.7 , Reset                                      'czekaj aż 7 linia portu D będzie w stanie 0.

    Do
    'Obrót w jedną stronę
    Set Silnik_prawy_a
    Reset Silnik_lewy_b
    Wait 1
    'Obrót w stronę przeciwną
    Reset Silnik_prawy_a
    Set Silnik_lewy_b
    Wait 1
    'Stop
    Reset Silnik_prawy_a
    Reset Silnik_lewy_b
    Wait 1
    Loop

    End


    Sprawdzenie programu sterującego silnikiem z przerwami.

    0 7
  • Pomocny post
    #2 14 Maj 2011 12:39
    michal-michalik
    Poziom 23  

    Więcej opisu!
    Co nie działa? Nie kompiluje?
    Do ATmegi8 jest m8def.dat a nie m88def.dat
    „Bitwait Bit , Set | Reset” to przykład chyba tutaj nie potrzebny... ;)

    Pozdrawiam

    Edit:
    Nie napisałeś jak podłączyłeś silnik, no i masz nie wykorzystane dwa aliasy: Silnik_prawy_b i Silnik_lewy_a.
    No i napisz w czym ci pomóc, bo w sumie nadal nie wiem... ;P

    0
  • #3 14 Maj 2011 13:52
    Patryk6144
    Poziom 10  

    Tak nie działa, komplikuje i zapisuje na procku tylko jak włączam zasilanie to nie działa. Mam mega88 więc ok.
    Napisałeś, że to nie potrzebne „Bitwait Bit , Set | Reset” . Chciałbym włączyć program za pomocą przycisku, więc dlaczego nie to a jak nie to to co?:D
    Silniki lewy: OUT4 plus, OUT3 minus ; Prawy:OUT2 plus, OUT1 minus.
    I co aliasów czemu nie wykorzystane: Silnik_prawy_b i Silnik_lewy_a.?

    Pozdrawiam,
    Patryk:D

    0
  • Pomocny post
    #4 14 Maj 2011 13:59
    michal-michalik
    Poziom 23  

    Może ja ślepy jestem, ale masz przypisaną nazwę, ale dalej w programie z tego nie korzystasz...

    Nie lubię klepać kodu :D Spróbujmy najpierw dla prawego silnika lewy zostawmy.

    Code:
    Do 
    
    'Obrót w jedną stronę
    Set Silnik_prawy_a
    Reset Silnik_prawy_b 'było lewy, żeby uruchomić silnik potrzebna jest różnica potencjałów
    Wait 1
    'Obrót w stronę przeciwną
    Reset Silnik_prawy_a
    Set Silnik_prawy_b  'tez było lewy
    Wait 1
    'Stop
    Reset Silnik_prawy_a
    Reset Silnik_prawy_b  'j.w. bylo lewy
    Wait 1
    Loop


    Rozumiesz mój tok myślenia? Teraz powinno działać to samo dla drugiego silnika ;)
    Pozdro

    Edit:
    Na schemacie masz mega8 dlatego zwróciłem na to uwagę. ;)

    0
  • #5 14 Maj 2011 14:20
    Patryk6144
    Poziom 10  

    Ok,dzięki. Zrobię tak samo dla lewego i sprawdzę. A co z tym przyciskiem, bo ci coś tam nie pasowało.:D

    0
  • Pomocny post
    #6 14 Maj 2011 17:51
    michal-michalik
    Poziom 23  

    Code:
    Bitwait Bit , Set | Reset 
    

    Bitwait Pind.7 , Reset


    Ta pierwsza linijka nic nie robi, prawda :?: To jest tylko przepisane z HELP-a ;)

    Skasuj „Bitwait Bit , Set | Reset ” ;)

    0
  • #7 14 Maj 2011 21:36
    Patryk6144
    Poziom 10  

    I mam takie ostatnie pytanie. Jeśli chcę aby dioda podłączona do uC świeciła to jaki algorytm musze zastosować?Bo w helpie nic nie ma:D

    0
  • Pomocny post
    #8 14 Maj 2011 21:52
    michal-michalik
    Poziom 23  

    Zapalasz: „Set Led”
    Gasisz: „Reset Led”

    Cała linia odnośnie przerywania i PWM też jest nie potrzebna (Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down).

    Złap jakąś książkę z BASCOM-em naprawdę się przydaje, albo przynajmniej jakiś porządny kurs będziesz łykał co do czego ;)
    Pozdrawiam

    0