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][Atmega8] miganie 6-oma diodami

keermiit 16 Cze 2010 21:05 3380 10
REKLAMA
  • #1 8197838
    keermiit
    Poziom 10  
    Witam
    Zrobiłem pierwszy program do migania ledem.
    Postanowiłem pójść kroczek dalej i zachciało mi się migać 6-oma ledami
    No i ściana. Bo albo nie świeci żadna albo święcą ciągle wszystkie razem

    Chodziło mi o tego typu mruganie ledami:

    [Bascom][Atmega8] miganie 6-oma diodami

    tak podpięte :

    [Bascom][Atmega8] miganie 6-oma diodami

    a tu zamieszczam kod w Bascomie
    
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Portb = Output                                       'portb jako wyjscie
    Config Portd = Output                                       'portd jako wyjscie
    
    
    
    
    Do
    
    Set Pinb.2
    Wait 1
    Reset Pinb.2
    
    Set Pinb.1
    Wait 1
    Reset Pinb.1
    
    Set Pinb.0
    Wait 1
    Reset Pinb.0
    
    Set Pind.7
    Wait 1
    Reset Pind.7
    
    Set Pind.6
    Wait 1
    Reset Pind.6
    
    Set Pind.5
    Wait 1
    Reset Pind.5
    
    Loop
    
    End
    
    



    Kombinowałem jeszcze w ten sposób ale też nic z tego
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Portb = Output
    Config Portd = Output
    
    
    
    
    Do
    
    Set Pinb.2
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Pinb.1
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Pinb.0
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Pind.7
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Pind.6
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Pind.5
    Waitms 300
    Reset Portb
    Reset Portd
    
    Loop
    
    End


    Prosiłbym o pomoc bo dla mnie ten kod wydaje się być logiczny
  • REKLAMA
  • #2 8197918
    phoszek
    Poziom 16  
    Hej,

    Według mnie problem tkwi w Set Pin. O ile się nie mylę, to do ustawiania stanu na porcie używa się Set Port, a nie Set Pin.. Więc zmień to, sprawdź i napisz co się zmieniło.
  • REKLAMA
  • #3 8197941
    sp3ots
    Poziom 38  
    Witam !
    A może trzeba tak ?
    do
    reset led1
    set led2
    set led3
    set led4
    set led5
    set led6
    czekaj
    set led1
    reset led2
    set led3
    set led4
    set led5
    set led6
    czekaj
    set led1
    set led2
    reset led3
    set led4
    set led5
    set led6
    czekaj
    i tak dalej
    loop
    Tam gdzie led 1-6 wpisz nazwy portów.
    Powodzenia życzę. Stefan GG6293398
  • #4 8198208
    gregoorr
    Poziom 17  
    Wyjściem "Output" sterujesz przez Set i Reset ale Portx,x

    Popatrz tu:
    Porty w Atmedze
  • REKLAMA
  • #5 8198265
    Logan
    Poziom 30  
    Nie prościej podpiąć diody pod jeden port i użyć polecenia Rotate ?
  • REKLAMA
  • #6 8198485
    keermiit
    Poziom 10  
    phoszek po zmianie set pinx.x na set portx.x

    Tu kod
    Do
    
    Set Portb.2
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Portb.1
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Portb.0
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Portd.7
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Portd.6
    Waitms 300
    Reset Portb
    Reset Portd
    
    Set Portd.5
    Waitms 300
    Reset Portb
    Reset Portd
    
    Loop
    
    End

    Diody LED po kolei gasną i po przejściu tej sekwecji miga tylko dioda podpięta pod Portb.0

    wygląda to mn. tak

    [Bascom][Atmega8] miganie 6-oma diodami



    Troche tych odpowiedzi się narobiło za co Wam dzięki
    zaraz przeanalizuje i zastosuje się do pozostałych porad

    Ok po zmianie kodu

    [Bascom][Atmega8] miganie 6-oma diodami

    diody migają jak powyżej ( rysunek LEDów pod schematem połączenia )

    myślałem że np:
    set portb.0 to ustawienie stanu wysokiego na pinie14 i że wtedy LED świeci
    a reset portb.0 to brak napięcia na LED i dioda nie świeci.

    a czy set portb to oznacza ustawienie wszystkich pinów portu B na stan wysoki a reset pinb.1 to stan niski jendego pinu to jest pinu nr.15 ??
  • #7 8198518
    polprzewodnikowy
    Poziom 26  
    Spróbuj tak

    Do 
    
    reset Portb.2 
    Waitms 300 
    set Portb 
    set Portd 
    
    reSet Portb.1 
    Waitms 300 
    set Portb 
    set Portd 
    
    reSet Portb.0 
    Waitms 300 
    set Portb 
    set Portd 
    
    reSet Portd.7 
    Waitms 300 
    set Portb 
    set Portd 
    
    reSet Portd.6 
    Waitms 300 
    set Portb 
    set Portd 
    
    reSet Portd.5 
    Waitms 300 
    set Portb 
    set Portd 
    
    Loop 
    
    End


    Albo odwróć diody i podłącz do masy.
  • #8 8198615
    keermiit
    Poziom 10  
    Po kolejnej przeróbce wygląda to tak

    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Portb = Output                                       'portb jako wyjscie
    Config Portd = Output                                       'portd jako wyjscie
    
    
    
    
    Do
    
    Set Portb.2
    Wait 1
    Reset Portb.2
    
    Set Portb.1
    Wait 1
    Reset Portb.1
    
    Set Portb.0
    Wait 1
    Reset Portb.0
    
    Set Portd.7
    Wait 1
    Reset Portd.7
    
    Set Portd.6
    Wait 1
    Reset Portd.6
    
    Set Portd.5
    Wait 1
    Reset Portd.5
    
    Loop
    
    End
    
    


    że wszystkie LED świecą i gaśnie 1 później 2 ale 1 się zaświeca póżniej gaśnie LED 3 a LED 2 się zaświeca.

    A ja staram się zrobić tak jak to opisałem 2 linijki wyżej tylko żeby diody nie świeciły a zapalała się LED 1 później LED 2 a LED 1 gasła, zapalała się LED 3 a LED 2 gasła.

    do reszty porad zastosuje się jutro bo już trochę zmęczony jestem.

    p.s Półprzewodnikowy możesz mi troche rozjaśnić to co napisałeś
    "Albo odwróć diody i podłącz do masy." bo ja naprawdę początkujący jestem i to co dla Ciebie oczywiste to dla mnie to może być czarna magia :D
  • Pomocny post
    #9 8198871
    polprzewodnikowy
    Poziom 26  
    Jeśli masz diody podłączone do plusa włączasz je komendą Reset a wyłączasz Set. Set podaje na pin stan wysoki (czyli plus) i dlatego ci to nie działa jak chcesz.
  • #10 8201497
    keermiit
    Poziom 10  
    półprzewodnikowy dzięki zrobiłem tak jak doradziłeś i działa.


    Opss. Co za brak kultury z mojej strony.
    Dzięki Wam za zainteresowanie i pomoc.
  • #11 8375916
    danthe
    Poziom 30  
    Jeszcze od siebie dodam że na schemacie nie widzę połączonych ze sobą wyprowadzeń GND po obu stronach scalaka oraz +Vcc z +Avcc
REKLAMA