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

Atmega8 - Brak reakcji na sygnały wejściowe po wgraniu nowego programu

PrzemoMaslak7 22 Mar 2013 22:42 1245 6
REKLAMA
  • #1 12098076
    PrzemoMaslak7
    Poziom 10  
    Witam!

    Mam problem z Atmega8 bo gdy napisze program w którym podanie jakiegoś stanu zapala lub gasi diadę to procek wcale nie reaguje, a jeśli napisze program w którym sam ustalam stany to wszystko działa. Dodam, że wcześniej był na niej program który wykorzystywał przyciski i wszystko działało a po wgraniu nowego zero reakcji.
    Czy ktoś wie jaka może być tego przyczyna ?
  • REKLAMA
  • #2 12098263
    Dople
    Poziom 19  
    Za mało informacji... Może po prostu kod jest źle napisany albo są błędy w schemacie?
    Najlepiej przy zakładaniu takiego tematu wstawić kod i schemat.
  • REKLAMA
  • #3 12098399
    PrzemoMaslak7
    Poziom 10  
    Podłączone jest na 100% dobrze, bo nie robię tego pierwszy raz, a kod uprościłem do tego stopnia, że naprawdę niema co być źle.
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #4 12098464
    Ture11
    Poziom 39  
    Zmień "If portc.5" na "if pinc.5".

    Dodano po 32 [sekundy]:

    Swoją drogą możesz zastąpić to "Portc = &B1111111" linijką "Set portc.5" (jeśli chcesz podciągnąć do plusa tylko przełącznik.)

    Dodano po 41 [sekundy]:

    No i jeszcze to:
    Config Pind.7 = output
    Portb = &B00000000 - dlaczego portB?
  • REKLAMA
  • #5 12099025
    PrzemoMaslak7
    Poziom 10  
    Pozmieniałem ale dalej nie reaguje.
    Cytat:
    Config Pind.7 = output
    Portb = &B00000000 - dlaczego portB?
    Tu zrobiłem literówkę ale w programie było dobrze.
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Pind.7 = output
    Reset Pind.7
    
    Config Pinc.5 = Input
    Set Pinc.5
    
    Do
    
    If Pinc.5 = 0 Then
    Set Pind.7
    End If
    
    If Pinc.5 = 1 Then
    Reset Pind.7
    End If
    
    Loop
    
    End

    Najciekawsze jest to, że miesiąc temu napisałem program w którym wciśnięcie guzika zwiększało szybkość migania diody i wszystko działało.
  • Pomocny post
    #6 12099054
    M. S.
    Poziom 34  
    Cytat:
    Set Pind.7 ???


    Było już tysiące razy, że do procka wchodzi się przez rejestr PINx.y, a wychodzi przez rejestr PORTx.y. W rejestrze DDRx.y zapisuje się kierunek pracy portu - 0 - wejście, a 1 - wyjście.
    Poczytaj o portach.
  • REKLAMA
  • #7 12099074
    PrzemoMaslak7
    Poziom 10  
    Bardzo dziękuję za pomoc, poprawiłem i już działa.
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Portd.7 = Output
    Reset Portd.7
    
    Config Pinc.5 = Input
    Set Pinc.5
    
    Do
    
    If Pinc.5 = 0 Then
    Set Portd.7
    End If
    
    If Pinc.5 = 1 Then
    Reset Portd.7
    End If
    
    Loop
    
    End
REKLAMA