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

Podłączanie przycisków do masy czy do Ucc

xamrex 09 Paź 2010 11:40 2362 4
REKLAMA
  • #1 8599439
    xamrex
    Poziom 28  
    Witam,
    Wczoraj doszedł mi procek attiny2313 więc dzisiaj postanowiłem się z nim pobawić.
    Znalazłem sobie taki kurs:

    http://www.dioda.com.pl/forum/topics20/kurs-bascom-lekcja3-zaczynamy-programowac-vt1091.htm

    I był tam taki schemat:
    Podłączanie przycisków do masy czy do Ucc

    Z takim kodem
    $regfile = "attiny2313.dat"                 'najpierw określamy typ proca
    $crystal = 1000000                          'definiujemy z jakim taktowaniem będzie pracował
    
    
    config portb=input                          'port b  jako wejścia
           portb=&B00000000                     'wszędzie stan spoczynkowy-0
    config portd=output                         'pprt d jako wyjścia
           portd=&B0000000                      'wszędzie stan spoczynkowy-0
    
    
     do                                         'pętla nieskończona
    
       if pinb.0=1 then                         'jeżeli przycisk 1 wciśnięty
       portd.0=1                                'zapal diode
       elseif pinb.1=1 then                     'jeżeli przycisk 2 wciśnięty
       portd.0=0                                'zgaś diodę
       endif                                    'koniec bloku warunkowego
    
     loop                                       'koniec pętli
     
    end                                         'koniec programu 


    Wszystko zrobiłem jak na obrazku... i układ NIE DZIAŁAŁ
    Myślałem, że ja coś robię źle, ale robiłem wszystko dobrze.


    Znalazłem 2gi schemat:
    http://www.elportal.pl/ea/prog001.html
    Podłączanie przycisków do masy czy do Ucc
    Oraz kod:
    $regfile = "attiny2313.dat"
    
    Config Portb = &B11111111               ' ustawienie całego Portu B jako wyjscia
           Portb = &B11111111               ' stan spoczynkowy wszystkich wyjsć ustawiony na 1
    Config Portd = &B1111100                ' ustawienie bitów PD0 i PD1 jako wejscia reszta Portu D jako wyjscia
           Portd = &B1111111                ' stan spoczynkowy wszystkich bitów ustawiony na 1
    Do                                      ' poczatek nieskończonej pętli
      If Pind.0 = 0 Then Portb.0 = 0        ' jak przełacznik podłaczony do PD0 jest nacisnięty
                                            ' to PB0 jest w stanie niskim i dioda LED się zaswieci
      If Pind.1 = 0 Then Portb.0 = 1        ' jak przełacznik podłaczony do PD1 jest naci?nięty
                                            ' to PB0 jest w stanie wysokim i dioda zgasnie
    Loop                                    ' gdy nie ma warunku - pętla będzie się wykonywać w nieskończonosć
    End


    I teraz wszystko działa elegancko.

    Moje pytanie to:
    Dlaczego jeśli przyciski podłączymy do Vcc, a diodę do GND, to układ nie działa.
    A jeśli diodę podłączymy do Vcc, a przyciski do GND, to układ działa
  • REKLAMA
  • #2 8599522
    Mad.
    Poziom 18  
    xamrex napisał:
    Moje pytanie to:
    Dlaczego jeśli przyciski podłączymy do Vcc, a diodę do GND, to układ nie działa.
    A jeśli diodę podłączymy do Vcc, a przyciski do GND, to układ działa

    To zależy jak ustawiane będą piny wybranych portów (stan wysoki lub niski). Piny przycisków ustawione są na stan wysoki (1 = +5V) i w programie warunki if zadziałają jak na wejściach tych pinów pojawi się stan niski (0 = GND). Jeśli podłączysz przyciski pod +5V, to jeśli przyciśniesz przycisk to pin zostanie połączony z +5V. Czyli nic się nie zmieni, bo pin już "miał" +5V (Portd = &B1111111) - fachowo, pin jest podciągnięty do VCC. Warunek pętli nie będzie spełniony (czeka aż pojawi się 0 = GND). Trzeba zmienić ustawienia pinów, po zmianie przycisków.
    Co do diody, to jeśli ma być podłączona jedną stroną do GND, to zawsze katodą, a w programie trzeba ustawić na odwrót stany na wyjściu pinu podłączonego do diody.

    Są to podstawy, więc odsyłam do jakiejś książki lub kursu na necie. Dla treningu, zmień połączenie przycisków i diody (katodą do GND), a następnie zmodyfikuj kod, aby program działa podobnie :D
  • REKLAMA
  • #3 8599544
    xamrex
    Poziom 28  
    Podstawy znam, ale jeśli skonstruuję układ wg. tego schematu:
    Podłączanie przycisków do masy czy do Ucc
    I kod:
    $regfile = "attiny2313.dat"                 'najpierw określamy typ proca
    $crystal = 1000000                          'definiujemy z jakim taktowaniem będzie pracował
    
    
    config portb=input                          'port b  jako wejścia
           portb=&B00000000                     'wszędzie stan spoczynkowy-0
    config portd=output                         'pprt d jako wyjścia
           portd=&B0000000                      'wszędzie stan spoczynkowy-0
    
    
    
    Do                                                          'pętla nieskończona
    
       if pinb.0=1 then                         'jeżeli przycisk 1 wciśnięty
       portd.0=1                                'zapal diode
       elseif pinb.1=1 then                     'jeżeli przycisk 2 wciśnięty
       portd.0=0                                'zgaś diodę
       endif                                    'koniec bloku warunkowego
    
     Loop                                                       'koniec pętli
    End


    To po wgraniu programu do procka, dioda świeci od razu ( i nie reaguje na przyciski)

    A wydaje mi się, że powinna być zgaszona, gdyż wszędzie jest stan niski (0)
  • REKLAMA
  • Pomocny post
    #4 8599573
    Mad.
    Poziom 18  
    W poprzednim poście myślałem, że pytania dotyczą tylko drugiego schematu :/

    Schemat i kod wygląda ok. Odłącz wszystko od portu B i odpal jeszcze raz program (dioda nie powinna świecić). Może wina leży gdzie indziej, np. płytka stykowa, błąd w połączeniu... Przy okazji, przy pinie VCC powinien być kondensator filtrujący.

    edit:
    Piny od przycisków podłącz bezpośrednio do GND (przyciski odłącz). Dioda nie powinna świecić. Najlepiej byłoby sprawdzić miernikiem, co jest na danych pinach.
  • #5 8599622
    xamrex
    Poziom 28  
    Po odłączałem wszystko, zaprogramowałem procek, i gdy wkładałem diodę to ona zaczęła świecić.
    (przycisków nawet nie podłączyłem)
    Mówiąc ściślej to ona mruga bardzo szybko..
    Mam kondensator 33p pomiędzy Ucc a GND, więc powinno być ok.

    Mierzyłem napięcia na portach B i wygląda to tak:
    portb.0 = 0,15 V
    portb.1 = 0,15 V
    portb.2 = 0,15 V
    portb.3 = 0,15 V
    portb.4 = 0,15 V
    portb.5 = 0,15 V
    portb.6 = 0,15 V
    portb.7 = 0,15 V

    EDIT: Problemem okazały się zakłócenia (złe kondensatory)
REKLAMA