-
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