Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATMega8][Bascom] Program sterujący pinami

20 Mar 2010 00:45 1374 10
  • Poziom 10  
    Witam
    Zaczynam programować atmege 8 i przeczytałem kilka kursów, lecz nadal nie wiem jak ustawić np. PD0 (GND) PB3 (V).
    Czyli jak do pinów podawać napięcie lub masę.
    W różnych kursach jest inaczej opisane morze się pogubiłem.
  • Poziom 41  
    Bo wszystkie te metody według tych kursów są dobre , ale musisz wybrać jeden według którego będziesz to robił później .

    Code:
    Config Portb = &B00000000                         'ustawiasz wszystkie wyjścia na <zero> ( masa )
    
    Config Portb = &B11111111                         'ustawiasz wszystkie wyjścia na <plus> ( +5V )

    Portb.0 = 0                                       'ustawiasz wyjście na <zero>
    Portb.0 = 1                                       'ustawiasz wyjście na <plus>

    Portb.0 = Reset                                   'ustawiasz wyjście na <zero>
    Portb.0 = Set                                     'ustawiasz wyjście na <plus>
  • Poziom 10  
    No właśnie używam jedną z tych metod i nadal mi to nie działa
    Powinno być to widoczne na pomiarze, lecz na tych portach, co stosuje jest tylko 0.30V
    Code:

    $regfile = "m8def.dat"
    $crystal = 1000000

    Portd.0 = 1
    Portb.3 = 0

    return

    End
  • Poziom 41  
    Ale należy również ustalić czy te piny mają być wejściami czy wyjściami dla sygnałów , a tego chyba nie zrobiłeś .

    Code:
    $regfile = "m8def.dat" 
    
    $crystal = 1000000
    Config Portb = &B11111111
            Portb = &B00000000
    Config Portc = &B00111000
            Portc = &B00000000
    Config Portd = &B11111111
            Portd = &B00000000

    Pierwsza linijka (portb) określa że port ( piny ) pracuje jako wyjście ( włączone rezystory podciągające ) .
    Druga ustala jaki jest stan wyjść ( w tym przypadku niski poziom napięcia ).
    Adekwatnie pozostałe dla następnych portów .
  • Poziom 10  
    Zdążyłem poprawić poprzedni post
    Sprawdzam
    Code:

    $regfile = "m8def.dat"
    $crystal = 1000000

    config portd=output
    Portd.0 = 1
    config portb=input
    Portb.3 = 0

    return
    end
  • Poziom 41  
    Tak nie pisz bo nie będziesz mógł zmieniać dowolnego pinu w porcie
    Code:
    config portd=output 
    
    Portd.0 = 1
    config portb=input
    Portb.3 = 0


    Lepiej tak pisać

    Code:
    Config Portd = &B11111111 
    
            Portd = &B00000000


    A to co napisałeś wyżej to jest cały program ?
  • Poziom 10  
    Nadal nie działa
    Do układu mam podłączoną jedną diodę i chciałem ją pomrugać, lecz nie mruga
    Na szybko zrobiłem schemat
    [ATMega8][Bascom] Program sterujący pinami
  • Poziom 41  
    To pokaż cały program bo ten który podałeś nie będzie działał .
    A gdzie masz podłączoną masę zasilania ?
    W tej konfiguracji układ nie będzie działać .
    Źle podłączony tranzystor , emiter ma być podłączony do masy .
  • Poziom 10  
    A ja myślałem, że będzie, czyli się przeliczyłem w prostocie napisania programu
    Tak w 100% jest podłączone tamto zrobiłem na szybko z pamięci nie patrząc jak jest i co podłączone
    [ATMega8][Bascom] Program sterujący pinami
  • Pomocny post
    Poziom 41  
    Na szybko napisany kod
    Code:
    $regfile = "m8def.dat" 
    
    $crystal = 1000000
    Config Portb = &B11111111
            Portb = &B11111111
    Config Portc = &B00111000
            Portc = &B00000000
    Config Portd = &B11111111
            Portd = &B11111111
    Do                                                'pętla nieskończona
      Portd.0 = 1                                     'zaświeć lampkę
          Wait 1                                     'czekaj 1 sekundę
      Portd.0 = 0                                     'zgaś lampkę
          Wait 1                                     'czekaj 1 sekundę
     Loop
    End                                         'koniec pętli
  • Poziom 10  
    Wielkie dzięki za doprowadzenie do mety
    Po poprawkach działa
    Code:
    $regfile = "m8def.dat"
    
    $crystal = 1000000
    Config Portb = &B11111111
            Portb = &B00000000
    Config Portd = &B11111111
            Portd = &B00000000
    Do                                                'pętla nieskończona
      Portd.0 = 1                                     'zaświeć lampkę
          Wait 1                                     'czekaj 1 sekundę
      Portd.0 = 0                                     'zgaś lampkę
          Wait 1                                     'czekaj 1 sekundę
     Loop
    End

    zamykam temat