Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 15 mar 2025, o 10:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 5 sie 2015, o 11:50 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 05 sie 2015
Posty: 10
Lokalizacja: Warszawa
Pomógł: 0

Witam!
Postanowiłem zrobić małą rewolucję na swojej płytce stykowej i dołożyć do niej przycisk.
Na złość siedzę już nad tym 2 godziny i nadal nie wiem jak to wpoić mikrokontrolerowi ...
Boję się, ze zaraz sobie coś spalę :D

Kod:
#include <avr/io.h>
main(void){
   while(1){
      DDRB |= (1<<PB1);
      PORTB &= ~(1<<PB1);
      DDRD &= (1<<PD7);
      PORTD |= (1<<PD7);
      if (!(PIND & (1<<PD7))){
         DDRB = (1<<PB1);
      }
   }
}

Dziękuję za udzielenie pomocy!
Proszę o szybką odpowiedź :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 12:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 maja 2013
Posty: 41
Lokalizacja: Zielona Góra
Pomógł: 1

Ustawienia pinów robi się poza while. Poza tym, jak naciśniesz guzik to stan pinu na DDRB się nie zmienia, zauważ że cały czas ustawiasz PB1 na 1.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 12:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 maja 2013
Posty: 562
Lokalizacja: Bydgoszcz
Pomógł: 23

O ja ;) ja myślę że kolega Mirek to lepiej na blogu wyjaśnił, niz ja Ci tu wytłumacze co nie tak z kodem i jak prawidłowo obsługuje sie przycisk.

Wejdź tam na jego bloga i poczytaj o drganiach styków i ich programowaniu, proponuje też obejrzeć pare filmów dla początkujących a w zasadzie to tak naprawdę przeczytania, obejrzenia i przerobienia wszystkiego co tam jest :)

http://mirekk36.blogspot.com/2012/10/drgania-stykow-to-bajki-wiec-jak-to.html
http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 12:03 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27363
Lokalizacja: Szczecin
Pomógł: 1043

A tu:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


zabrakło ci panie tyldy ;) powinno być

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 1 minucie ]

PRZEDE wszystkim obejrzyj sobie pan to:
http://mirekk36.blogspot.com/2014/05/if ... -o-co.html

;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 12:12 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 05 sie 2015
Posty: 10
Lokalizacja: Warszawa
Pomógł: 0

Przeniosłem ustawienia poza while.
Dodałem tylde. Faktycznie Wielki zasugerował, ze wszędzie PB1 jest załączony.
Więc postanowiłem na po if postawić 0, by po wciśnięciu dioda zgasła.
Ale dioda po tej operacji cały czas jest wyłączona. Przedtem cały czas świeciła :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 12:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 maja 2013
Posty: 41
Lokalizacja: Zielona Góra
Pomógł: 1

Nic dziwnego że jest wyłączona skoro jej nie włączasz później, skoro raz ją wyłączyłeś to musisz włączyć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 12:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

pokaż od początku kod co żeś tam dodał i gdzie...

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 12:45 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 05 sie 2015
Posty: 10
Lokalizacja: Warszawa
Pomógł: 0

Teraz to wygląda tak:

Kod:
#include <avr/io.h>
main(void){
   DDRB |= (1<<PB1);
   PORTB &= ~(1<<PB1);
   DDRD &= (1<<PD7);
   PORTD |= ~(1<<PD7);
   while(1){
      if ((PIND & (1<<PD7))){
         DDRB = (0<<PB1);
      }
   }
}


Zauważyłem, ze jak wyjmę przycisk albo kabel od GND to dioda zmienia stan.
Póżniej klikanie nic nie pomaga. Zostaję na tym samym stanie. :?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 12:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

a tak??
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 13:04 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 05 sie 2015
Posty: 10
Lokalizacja: Warszawa
Pomógł: 0

Gdy wpisałem Twój kod po zwarciu GND i PD7 dioda świeci się mocniej.
Natomiast kiedy ustawiłem 0 na PB1 nie ma żadnych zmian.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 13:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

klawisz powinien gasić diodę.

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 13:31 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 05 sie 2015
Posty: 10
Lokalizacja: Warszawa
Pomógł: 0

Teraz działa elegancko!
Natomiast ... dlaczego tak się działo?
Tylko przez zapomnienie "!" i else? :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 14:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

na początek polecam
http://mirekk36.blogspot.com/2012/01/avr-porty-wewy-dir-podstawy.html

a potem się zastanów co robił program jeżeli po zbadaniu warunku gasiłeś diodę...

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2015, o 14:27 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 05 sie 2015
Posty: 10
Lokalizacja: Warszawa
Pomógł: 0

Dziękuję wszystkim użytkownikom pomagającym mi!
Temat do zamknięcia! :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO