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

Atmega 328p i problem z odczytem na we

kuti-a 04 Mar 2010 23:47 1434 3
REKLAMA
  • #1 7785251
    kuti-a
    Poziom 9  
    Witam
    Mam problem z odczytem zwyklego przycisku na tej atmedze.
    podlaczenie: gnd +rezys 10k+port.d=2 nastepnie podaje przyciskiem +5v na port.d2.

    kod:
    config PORTD.2= input
    config pinb.5=output
    set PORTD.2
    .
    .
    Do
    if PIND.2=1 then
    waitms 30
    if PIND.2=1 then
    Toggle pinb.5
    end if
    end if
    loop

    Przycisk zapala diode ale jej nie gasi w/g mnie nie wraca do stanu 0 po odcieciu +5v przyciskiem.
    po pierwsze jak mam rezystor pull up moj zew to jak powinno byc ustawione set PORTD.2 (ja zastosowalem akurat do masy ale przestawienie tej zmiennej nei ma wplywu)

    czego brakuje w tym kodzie ?
    Nadmienie ze zestaw to arduino z bootloaderem ale pisze w bascom i flash hexa.
    z Arduino podlaczenie przycisku z rezyst dziala bardzo dobrze w bascomie nie chce co zle robie ?

    Prosze o pomoc przerzucilem juz kilkdziesiat stron postow i helpa.
  • REKLAMA
  • #2 7785342
    marco47
    Poziom 41  
    Zrezygnuj z rezystora i podłącz przycisk bezpośrednio do PORTD.2 i do GND
    A w programie wykrywaj niski poziom .
    Test
    Do
    If PinD.2=0 Then PORTD.5=1
    If PinD.2=1 Then PORTD.5=0
    Loop
  • REKLAMA
  • #3 7785365
    mirekk36
    Poziom 42  
    Po pierwsze to mieszasz mocno ;)

    config PORTD.2= input 
    config pinb.5=output 


    to w końcu Config PortX.x czy Config PinX.x ??????

    zaczytaj w HELPIE Bascomicznym (bo coś słabo go przerzucałeś), że poszczególne piny ustawia się jako wejścia lub wyjścia tylko poleceniem Config PinX.x

    czyli powinieneś mieć:

    Cytat:
    config PIND.2= input


    rozumiesz ?

    Po drugie - odpuść sobie kombinacje z podłączaniem portu zewn rezystorem do GND i próby wykrywania stanu wysokiego. Nie mówię, że tak się nie da - ale widać że dopiero zaczynasz i zaczynasz także robić od tyłu ;)

    przestaw się na myślenie, że zawsze klawiszem zwierasz pin portu do GND - to zobaczysz że rozwiąże ci się szybko wiele problemów. I nie mów że ty tak musisz - bo nie musisz - po prostu jeszcze nie wiesz jak to wszystko skonfigurować w swoim układzie normalnie - czyli tak jak się to robi w 99,99% przypadków.
  • #4 7785564
    kuti-a
    Poziom 9  
    Dziekuje uprzejmie
    Problem rozwiazany.

    Config PinD.2 = Input
    Config PinD.13 = Output
    Set Portd.2

    Do
    If PinD.2 = 0 Then Portb.5 = 1
    If PinD.2 = 1 Then Portb.5 = 0
    loop

    zmylilo mnie to podciganie rezyst portd.2
REKLAMA