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 AVR - Diody nie działają poprawnie w symulacji układu

karol123 15 Lip 2007 12:16 2142 10
REKLAMA
  • #1 4083302
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    Witam wszystkich na forum pisze ponieważ mam problem pewnie banalny jak dla kogoś ale od niego zalezy cała reszta A minowicie napisałem sobie program który przy symulacji wejść i podawaniu na wejscia w zaleznosci od róznych stanów ma na wyjsciu zapalć mi diody

    Config Portb = &B11111111

    Config Portd = &B1111100

    Do
    If Pind.1 = 1 Then Portb.7 = 0
    If Pind.2 = 0 Then Portb.5 = 1

    Loop
    End
    i jakos w symulacji mi sie o niesprawdza niewiem w czym tkwi problem.
    Pozdrawim i dzienkuje.
  • REKLAMA
  • #2 4083438
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    W oknie symulatora wciśnij na pasku narzędziowym drugi przycisk od prawej.

    Końcówki portu liczy się od zera. Zmień konfigurację Config Portd

    Config Portd = &B1111100
    
    If Pind.1 = 1 Then Portb.7 = 0 ' d.1 jest wejściem
    If Pind.2 = 0 Then Portb.5 = 1 ' d.2 jest WYJŚCIEM


    Powinno być
    Config Portd = &B1111001
  • REKLAMA
  • #3 4083507
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    Niestety nic to niepomogło nawed wcisniencie przycisku refresz variables
    nic niepomaga diody w oknie symulacji na nic niereagują
    Config Portb = &B11111111

    Config Portd = &B 1111001

    Do
    If Pind.1 = 1 Then Portb.7 = 0 ' d.1 jest wejściem
    If Pind.2 = 0 Then Portb.5 = 1 ' d.2 jest WYJŚCIEM


    Loop
    End
  • #4 4084231
    Stefan Rodemzgór
    Poziom 13  
    Posty: 120
    Ocena: 3
    Brakuje tutaj moim zdaniem warunku który by się wykonywał jeśli stany na podanych koncowkach byłyby inne od oczekiwanych.
    Mniej wiecej chodzi mi o to, żeby program zmienic tak:

    Do
    If Pind.1 = 1 Then Portb.7 = 0 Else Portb.7 = 1
    If Pind.2 = 0 Then Portb.5 = 1 Else Portb.5 = 0
    Loop
    End




    Można też zrobić tak:
    Do
    Portb.7 = NOT Pind.1
    Portb.5 = NOT Pind.2
    Loop
    End

    Teraz jest jeszcze prościej i szybciej sie kod wykonuje :-) Słowo NOT ma oznaczać negację argumentu, ale nie wiem czy tak to sie pisze w bascomie, nie pamietam juz.
  • REKLAMA
  • #5 4084264
    Villen
    Poziom 21  
    Posty: 572
    Ocena: 509
    Powinieneś nieco staranniej ten program napisac.
    Nie ma w nim nawet zakonczeń procedur sprawdzania warunku....

    Config Portd = 1111001 'pin.d 1 i 2 jako wejścia
    Config portb = 11111111 'port.b jako wyjście

    portd = 0000100 'pind.2 "podciągnięty" do +Vcc, pind.1 "wisi w powietrzu" (nie zalecam raczej do niczego innego niż symulacji :))

    Do

    If Pind.1 = 1 Then
    Portb.7 = 0
    End if

    If Pind.2 = 0 Then
    Portb.5 = 1
    End if

    Loop
    End

    Chyba dobrze wszystko napisałem, jeśli coś sie pomylilem to prosze o wybaczenie :P
  • #6 4084274
    Stefan Rodemzgór
    Poziom 13  
    Posty: 120
    Ocena: 3
    Jak sie pisze w jednej linii instrukcje warunkową 'IF' to 'End If' jest niepotrzebne zdaje się :P
  • REKLAMA
  • #7 4084290
    Villen
    Poziom 21  
    Posty: 572
    Ocena: 509
    Nie kłócę się :P Ja wole rozbijać sobie mimo wszystko, bo lepiej mi się tak napisany program czyta :)
  • #8 4087571
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    Witam ponownie no to jest juz problem teraz bo zaden z przykładów niedziała Mam jescze jedno pytanie jeśli chodzi o podciaganie wejść czy dla symulatora ma to znaczenie mysle ze tak no bo jak sama nazwa symulacja powino być symulowane wszystko tak jak w rzeczywistości ten program działa na zestawie uruchomieniowym
  • #9 4087637
    wzagra
    Poziom 33  
    Posty: 1965
    Pomógł: 224
    Ocena: 278
    Nie jestem specem, ale wydaje mi się (na podstawie Helpa), że należy najpierw zadeklarować piny lub porty - jeden jako wejście, drugi jako wyjście.
    przykład:
    Config Pind.5 = Input
    Config Pind.6 = Output

    lub
    Config Portd=Input
    Config Portb=Output
  • #10 4087728
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    No niedokonca ja to juz z konfigurowałem na poczatku poprzez config portb =&B11111111 ustawiłem wszystkie bity jako wyjscia
    i
    config portd=&B1111100 dwa ostatnie jako wejscia
    Niewiem dokońca jak z tym podciaganiem poprzez tranzystory wbudowane w układ procesora
  • #11 4088782
    przemotronik
    Poziom 13  
    Posty: 87
    Pomógł: 3
    Ocena: 1
    Cytat:
    config portd=&B1111100

    Wcześniej wejściami były Pind.1, Pind.2:idea:
    No ale dobrze. Więc tak: podciąganie wejść przez wewn. MOSFETy działa w ten sposób, że końcówki mają własną logikę z bramką NAND. Jedno jej wejście jest przez negator spięte z rejestrem DDRx,a drugie-bezpośrednio-z PORTx. dzięki temu tranzystor podciagający końcówkę do VCC włącza się tylko wtedy, gdy w DDRx jest logiczne "0", a w PORXTx -logiczna "1".
    Dokładnie zobaczysz to pełnej wersji dejtszitu na stronie ATMELa.
    Nie używałem jeszcze bascomowego symulatora, ale jedna rzecz mi w Twoim programie nie pasuje: zawsze na początku programu obok konfiguracji funkcji portów (wejście/wyjście) musi się znaleźć opis stanu spoczynkowego. Na przykład:

    config portb =&B11111111'wszystkie jako wyjścia
    portb=&B11111111 'na wszystkich stany H
    config portd=&B1111100 'dwa najmłodsze jako wejścia
    portd=&B1111111 'wejścia podciągnięte, reszta w stanie H

Podsumowanie tematu

✨ Dyskusja dotyczy problemów z symulacją działania diod sterowanych mikrokontrolerem AVR w Bascom AVR. Autor programu ustawił porty Portb jako wyjścia i Portd z dwoma pinami jako wejścia, jednak diody nie reagują poprawnie w symulatorze. Wskazano, że konfiguracja portów powinna uwzględniać prawidłowe ustawienie bitów i podciąganie wejść, np. Config Portd = &B1111001, a także konieczność definiowania stanów spoczynkowych portów (np. portb = &B11111111, portd = &B1111111). Zasugerowano poprawienie kodu poprzez dodanie warunków else, aby ustawiać stany wyjść również dla przeciwnych stanów wejść, co zapewnia stabilność sygnału. Poruszono też temat podciągania wejść przez wewnętrzne tranzystory MOSFET w mikrokontrolerze, które aktywują się przy odpowiedniej konfiguracji rejestrów DDRx i PORTx. Wskazano, że w Bascom AVR można stosować zarówno jednolinijkowe instrukcje If bez End If, jak i bardziej rozbudowane formy dla czytelności. Podkreślono, że symulator wymaga poprawnej konfiguracji portów i stanów początkowych, aby symulacja odzwierciedlała rzeczywiste działanie układu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA