eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaObsluga przycisku - atmega8
Ilość wypowiedzi w tym wątku: 9

  • 1. Data: 2012-01-31 00:21:46
    Temat: Obsluga przycisku - atmega8
    Od: Pawel <ppf9@USUN_TOpoczta.fm>

    Witam wszystkich

    Co ja robie nie tak?
    Probuje obsluzyc przycisk, ale nie potrafie.

    Przycisk podpiety do PD7. PD7-przycisk-GND
    diody PB0 i PB1
    Pb0-rezystor100Omow-dioda-GND
    to samo z druga dioda.


    #define F_CPU 1000000L /* Częstotliwość kwarcu */

    #include <avr/io.h>
    #include <util/delay.h> /* Kiedyś <avr/delay.h> */

    int main(void)
    {
    DDRB = 0b11111111;
    DDRD = 0b00000000;
    PORTD = 0b11111111;
    for (;;)
    {
    if((PIND & 0b10000000))
    //if(bit_is_clear(PIND,7))
    {
    PORTB |= (1<<0);
    _delay_ms(125);
    }
    else
    {
    PORTB |= (1<<1);
    _delay_ms(125);
    }
    }
    return 0;
    }


  • 2. Data: 2012-01-31 01:41:31
    Temat: Re: Obsluga przycisku - atmega8
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Pawel <ppf9@USUN_TOpoczta.fm> napisał(a):
    > Witam wszystkich
    > Co ja robie nie tak?
    > Probuje obsluzyc przycisk, ale nie potrafie.
    > Przycisk podpiety do PD7. PD7-przycisk-GND
    > diody PB0 i PB1
    > Pb0-rezystor100Omow-dioda-GND
    > to samo z druga dioda.
    > #define F_CPU 1000000L /* Częstotliwość kwarcu */
    > #include <avr/io.h>
    > #include <util/delay.h> /* Kiedyś <avr/delay.h> */
    > int main(void)
    > {
    > DDRB = 0b11111111;
    > DDRD = 0b00000000;
    > PORTD = 0b11111111;
    > for (;;)
    > {
    > if((PIND & 0b10000000))
    > //if(bit_is_clear(PIND,7))
    > {
    > PORTB |= (1<<0);
    > _delay_ms(125);
    > }
    > else
    > {
    > PORTB |= (1<<1);
    > _delay_ms(125);
    > }
    > }
    > return 0;
    > }

    Mógłbyś łaskawie napisać co Ci nie działa. Tzn czego oczekujesz a tego nie
    ma. Bo z tego co widzę, to kod ogólnie reaguje na przyciski. Obecnie jest
    tak, że jeśli przycisk nie jest wciśnięty (na początku), to dzięki
    wewnętrznemu podciągnięciu najstarszy bit w PIND będzie ustawiony i włączy
    Ci się dioda podłączona do PB0 (o ile podłączyłeś ją w dobrym kierunku).
    Jeśli teraz wciśniesz przycisk, to włączy się dioda podłączona do PB1 a stan
    diody podłączonej do PB0 nie zmieni się. Analogicznie, jeśli w momencie
    włączenia zasilania przycisk był wciśnięty, zaświeci się dioda podłączona do
    PB1. W momencie puszczenia przycisku włączy się dioda podłączona do PB0 a
    stan diody podłączonej do PB1 nie zmieni się. Twój kod jedynie ustawia bity
    portu B a nigdy ich nie zeruje. Jeśli przycisk ma przełączać diody, to w
    jednym z ifów zmień
    |=
    na
    &=~
    I w sumie to nie wiem po co Ci tutaj opóźnienie.

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 5 days, 23 hours, 19 minutes and 35 seconds


  • 3. Data: 2012-01-31 01:50:54
    Temat: Re: Obsluga przycisku - atmega8
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Grzegorz Niemirowski <g...@p...onet.pl> napisał(a):
    > Jeśli przycisk ma przełączać diody, to w jednym z ifów
    > zmień =
    > na
    > &=~

    Przepraszam, to porada na wypadek gdyby była tylko jedna dioda. Więc jeśli
    ma być przełączanie, to musisz za każdym razem jeden bit zerować a drugi
    ustawiać.
    if((PIND & 0b10000000))
    {
    PORTB |= (1<<0); //włącz PB0
    PORTB &= ~(1<<1); //wyłącz PB1
    }
    else
    {
    PORTB |= (1<<1); //włącz PB1
    PORTB &= ~(1<<0); //wyłącz PB0
    }

    A opóźnienie ma sens jeśli potrzeba odkłócać styki. Jest to potrzebne gdy
    liczy się ilość przyciśnięć i drgania styków mogłyby fałszować zliczanie.

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 5 days, 23 hours, 33 minutes and 44 seconds


  • 4. Data: 2012-02-02 18:17:08
    Temat: Re: Obsluga przycisku - atmega8
    Od: Pawel <ppf9@USUN_TOpoczta.fm>

    W dniu 2012-01-31 02:41, Grzegorz Niemirowski pisze:
    > Pawel <ppf9@USUN_TOpoczta.fm> napisał(a):
    >> Witam wszystkich
    >> Co ja robie nie tak?
    >> Probuje obsluzyc przycisk, ale nie potrafie.
    >> Przycisk podpiety do PD7. PD7-przycisk-GND
    >> diody PB0 i PB1
    >> Pb0-rezystor100Omow-dioda-GND
    >> to samo z druga dioda.
    >> #define F_CPU 1000000L /* Częstotliwość kwarcu */
    >> #include <avr/io.h>
    >> #include <util/delay.h> /* Kiedyś <avr/delay.h> */
    >> int main(void)
    >> {
    >> DDRB = 0b11111111;
    >> DDRD = 0b00000000;
    >> PORTD = 0b11111111;
    >> for (;;)
    >> {
    >> if((PIND & 0b10000000))
    >> //if(bit_is_clear(PIND,7))
    >> {
    >> PORTB |= (1<<0);
    >> _delay_ms(125);
    >> }
    >> else
    >> {
    >> PORTB |= (1<<1);
    >> _delay_ms(125);
    >> }
    >> }
    >> return 0;
    >> }
    >
    > Mógłbyś łaskawie napisać co Ci nie działa. Tzn czego oczekujesz a tego
    Reakcja na wcisniecie przycisku nie dzialalo, ale juz sie wyjasnilo.
    Okazalo sie, ze kable do wyprowadzen byly zle podpiete i myslalem, ze
    cos w kodzie jest nie tak.


    > I w sumie to nie wiem po co Ci tutaj opóźnienie.
    >
    A jest jakies bezpieczne opoznienie, ktore bedzie zawsze dzialalo? A da
    sie to rozwiazac w sposob sprzetowy? Wydaje mi sie, ze gdzies czytalem,
    ze da sie takie cos zrobic sprzetowo.


  • 5. Data: 2012-02-02 18:36:55
    Temat: Re: Obsluga przycisku - atmega8
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Pawel <ppf9@USUN_TOpoczta.fm> napisał(a):
    > A jest jakies bezpieczne opoznienie, ktore bedzie zawsze dzialalo?

    50 ms powinno wystarczyć.

    > A da sie to rozwiazac w sposob sprzetowy? Wydaje mi sie, ze gdzies
    > czytalem, ze da sie takie cos zrobic sprzetowo.

    Rezystor + kondensator.

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 8 days, 16 hours, 23 minutes and 28 seconds


  • 6. Data: 2012-02-02 19:06:07
    Temat: Re: Obsluga przycisku - atmega8
    Od: Pawel <ppf9@USUN_TOpoczta.fm>

    W dniu 2012-02-02 19:36, Grzegorz Niemirowski pisze:
    > Pawel <ppf9@USUN_TOpoczta.fm> napisał(a):
    >> A jest jakies bezpieczne opoznienie, ktore bedzie zawsze dzialalo?
    >
    > 50 ms powinno wystarczyć.
    >
    >> A da sie to rozwiazac w sposob sprzetowy? Wydaje mi sie, ze gdzies
    >> czytalem, ze da sie takie cos zrobic sprzetowo.
    >
    > Rezystor + kondensator.
    >
    Dzieki. Bede musial poszukac schematou, chyba, ze masz jakis pod reka,
    to moglbys podrzucic.


  • 7. Data: 2012-02-02 19:47:19
    Temat: Re: Obsluga przycisku - atmega8
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Pawel <ppf9@USUN_TOpoczta.fm> napisał(a):
    > Dzieki. Bede musial poszukac schematou, chyba, ze masz jakis pod reka, to
    > moglbys podrzucic.

    Całe wiadro:
    http://www.google.pl/search?tbm=isch&hl=en&source=hp
    &q=debounce+rc

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 8 days, 17 hours, 33 minutes and 14 seconds


  • 8. Data: 2012-02-05 13:32:28
    Temat: Re: Obsluga przycisku - atmega8
    Od: " MH" <l...@g...SKASUJ-TO.pl>

    Pawel <ppf9@USUN_TOpoczta.fm> napisał(a):

    > Witam wszystkich
    >
    > Co ja robie nie tak?
    > Probuje obsluzyc przycisk, ale nie potrafie.
    >
    > Przycisk podpiety do PD7. PD7-przycisk-GND

    ================
    VCC
    |
    rezystor
    |
    |
    PD7----przycisk----GND

    MH

    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 9. Data: 2012-02-05 14:41:10
    Temat: Re: Obsluga przycisku - atmega8
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    MH <l...@g...SKASUJ-TO.pl> napisał(a):
    > Pawel <ppf9@USUN_TOpoczta.fm> napisał(a):
    >> Witam wszystkich
    >> Co ja robie nie tak?
    >> Probuje obsluzyc przycisk, ale nie potrafie.
    >> Przycisk podpiety do PD7. PD7-przycisk-GND
    > ================
    > VCC
    > rezystor
    > PD7----przycisk----GND
    > MH

    Rezystor do VCC już sobie załatwił przez wewnętrzne podciągnięcie.

    --
    Grzegorz Niemirowski
    http://www.grzegorz.net/
    OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
    Uptime: 11 days, 12 hours, 27 minutes and 57 seconds

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: