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 - Nie reaguje na sygnały wejściowe!

22 Mar 2013 22:42 1053 6
  • Poziom 9  
    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 ?
  • 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.
  • Poziom 9  
    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: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Poziom 35  
    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?
  • Poziom 9  
    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.
    Code:
    $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
    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.
  • Poziom 9  
    Bardzo dziękuję za pomoc, poprawiłem i już działa.
    Code:
    $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