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

[Bascom] Przyciski same się "naciskają" ....

mradamf1985 29 Paź 2010 08:33 1525 12
REKLAMA
  • #1 8676766
    mradamf1985
    Poziom 12  
    Witam!

    Mam taki problem, po złożeniu układu wszystko działa poprawnie ale w momencie gdy podłącze przyciski zaczynają "same się przyciskać". Korzystam i z Debuence i z if p1 = 0 then..... Próbowałem zmieniać waitms od 25 do 500 dalej nic. Wygląda to tak jak by przewody "zbierały" coś. Blokujecie to jakoś? Bo już różne rzeczy kombinowałem ale jakoś nic. Dodam że bez klawiatury też próbowałem i jest to samo a tasiemkę dawałem nawet taką 2cm i to samo. Pozdrawiam.
  • REKLAMA
  • #2 8676808
    tadzik85
    Poziom 38  
    Pull-upy włączone?
  • #3 8677086
    mradamf1985
    Poziom 12  
    raczej nie bo nie wiem co to jest. Na razie staram się pisać według książki i nic tam nie zauważyłem takiego. Jakieś wskazówki bardzo bardzo bym prosił.
  • REKLAMA
  • #4 8677097
    gregoorr
    Poziom 17  
    Nie mogą wisieć w powietrzu. Podciągnij rezystorem, albo programowo:
    
    Set Portd.5                                                 'podciągnięcia do klawiszy
    Set Portd.6
    Set Portd.7
    Set Portb.0
    
  • REKLAMA
  • #5 8677132
    mradamf1985
    Poziom 12  
    Takie coś oczywiście zrobiłem! Tylko jak mierze nie ma tam 5v tylko jakieś 1,6 na tych nóżkach, dlatego zastanawiałem się czy to nie za mało skoro set ustawia wyjścia na 5V.
  • #6 8677195
    gregoorr
    Poziom 17  
    Powinien być kod i schemat pokazany, bo oczywiście jest coś skopane. Skoro przyciski same się włączają, to pewnie wiszą w powietrzu.
  • REKLAMA
  • #7 8677372
    mradamf1985
    Poziom 12  
    Co do schematu nie ma się czego czepić.
    Przyciski są zwierane do masy prosto z wejść atmegi. Dziwne jest to, że jak kabelki są odpięte nic się nie dzieje.
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    
    
    Config Clock = Soft
    Config Date = Dmy , Separator = /
    Config Pinb.1 = Input
    Config Pinb.2 = Input
    Config Pinb.3 = Input
    Config Pinb.4 = Input
    
    Config Pind.1 = Output
    Config Pind.2 = Output
    Config Pind.3 = Output
    
    Przek_dzien Alias Portd.1
    Przek_noc Alias Portd.2
    Przek_zra Alias Portd.3
    
    Reset Przek_dzien
    Reset Przek_noc
    Reset Przek_zra
    
    
    
    
    P1 Alias Pinb.1
    P2 Alias Pinb.2
    Menu Alias Pinb.3
    Wyjdz Alias Pinb.4
    
    Set Wyjdz
    Set P1
    Set P2
    Set Menu      ' Początek
    
    
    
    Sub Menu1      'Przykładowy podprogram
    Cls
    Lcd "Ust Zegara"
    Lowerline
    Locate 2 , 8
    Lcd Chr(1)
    Waitms 25
    If P2 = 0 Then
    Waitms 25
    If P2 = 0 Then
    Call Menu2
    End If
    End If
    If Menu = 0 Then
    Waitms 25
    Call Ust_godz
    End If
    If Menu = 0 Then
    End If
    If Wyjdz = 0 Then
    Waitms 25
    If Wyjdz = 0 Then
    Call Wysw_czas
    End If
    End If
    Call Menu1
    End Sub


    Na symulatorze wszystko chodzi aż miło :D
    Nie daję kompletnego kodu bo jestem w pracy i nie mam przy sobie mam tylko kawałki, które pisałem na tym komputerze, potem całość robiłem na innym. Dziwne bo jak załączam stanem wysokim po ówczesnej zmianie kodu też się same załączają.
  • #8 8677432
    gregoorr
    Poziom 17  
    Nie podciągaj przez


    Tylko przez


    Tak jak tu:
    
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Portd = Output
    
    Config Pinb.0 = Input
    Config Pinb.1 = Input
    Config Pinb.2 = Input
    
    Dim Kierunek As Bit
    Dim Czas As Byte
    
    Przycisk1 Alias Pinb.0
    Przycisk2 Alias Pinb.1
    Przycisk3 Alias Pinb.2
    
    
    Set Portb.0
    Set Portb.1
    Set Portb.2
    
    
    Portd = &B11111110
    
    Reset Kierunek
    Czas = 100
    
    Do
    
    If Przycisk1 = 0 Then
    Waitms 50
    Czas = Czas + 10
    End If
    
    
    If Przycisk2 = 0 Then
    Waitms 50
    Czas = Czas - 10
    End If
    
    If Przycisk3 = 0 Then
    Toggle Kierunek
    End If
    
    Do
    Loop Until Przycisk2 = 1
    
    
    Do
    Loop Until Przycisk1 = 1
    
    Do
    Loop Until Przycisk3 = 1
    
    
    
    If Kierunek = 1 Then
    Rotate Portd , Left
    
    Else
    Rotate Portd , Right
    End If
    
    Waitms Czas
    
    Loop
    End                                                         'end program
  • #9 8677481
    mradamf1985
    Poziom 12  
    I sama nazwa miała by taki wpływ na działanie? Aż sprawdzę ale nie jestem do tego przekonany że to wina tego, ale sprawdzę po południu.
  • #11 8677764
    mradamf1985
    Poziom 12  
    Chodziło mi głównie o to czy ktoś się spotkał z czymś takim. Przecież tych projektów jest naprawdę dużo dlatego nie wiem czy ja zrobiłem jakiś błąd. Deklaruje np. Pinb.1 = input potem daje p1 alias pinb.1 i set p1. A tutaj kolega widzę dał set Portb.1 to czasem tutaj nie jest coś nie tak?
  • #12 8677765
    pixel7
    Poziom 23  
    mradamf1985 napisał:
    I sama nazwa miała by taki wpływ na działanie? Aż sprawdzę ale nie jestem do tego przekonany że to wina tego, ale sprawdzę po południu.


    Aliasy masz dla PINx a to jest rejestr tylko do odczytu. Rejestr sterujący pull up nazywa się PORTx. Zrób set PORTx.
  • #13 8677925
    mradamf1985
    Poziom 12  
    Zmieniłem i teraz wszystko działa tak jak powinno, 2 literki a kombinowałem z tym cały tydzień. Dziękuje wszystkim za zainteresowanie i pomoc. Pozdrawiam.
REKLAMA