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



Teraz jest 30 gru 2025, o 01:02


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 21 wrz 2014, o 17:38 
Offline
Nowy

Dołączył(a): 21 wrz 2014
Posty: 7
Pomógł: 0

Witam wszystkich.Mam na imię Sebastian i po wielu latach pracy na ASM 8051,kolejnych latach przerwy w programowaniu postanowiłem powrócić do tego co lubię.Stworzyłem sobie prosty program do obsługi INT0 no i zonk,nie wchodzi w przerwanie (tak zakładam). Układ testuję pod oscyloskopem i pomimo podanie na INT0 stanu niskiego (masy) układ nie reaguje. Moim zamierzeniem było zlecenie zmiany stanu na porcie B2 w przypadku zbocza opadającego na INT0.


Proszę pomóżcie,co tu nie gra

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



Ostatnio edytowano 22 wrz 2014, o 20:13 przez atc2, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2014, o 19:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

W Attiny INT0 jest na pinie PB1. Ten pin masz ustawiony jako wyjście w stanie niskim. Jeśli na ten pin podajesz GND to przerwanie ci się nie wyzwoli bo najpierw na pinie powinien być stan wysoki a potem niski. Jeśli jednak podajesz na ten pin stan wysoki a potem niski to mimo to robisz strasznego zonka. Bo pin jako wyjście w stanie niskim + podanie na ten pin GND = zwarcie.

Pin INT0 czyli PB1 ustaw jako wejście z włączonym pull-upem i wtedy podawaj na ten pin stan niski.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2014, o 21:42 
Offline
Nowy

Dołączył(a): 21 wrz 2014
Posty: 7
Pomógł: 0

Sprawdzam notę katalogową i widzę, że ATTINY13A ma PCINT0 na PB0,przynajmniej tak narysowano tutaj
http://www.atmel.com/Images/doc8126.pdf

czyli przerwanie INT0 jest jednak na PB0, co oznacza, że problem mam nadal



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2014, o 21:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Przerwanie PCINT0 to nie to samo co INT0. Ty ustawiasz przerwanie INT0, które znajduje się na PB1.

Polecam to obejrzeć
http://www.mirekk36.blogspot.com/2013/1 ... acego.html
http://www.mirekk36.blogspot.com/2013/1 ... sc-02.html
http://www.mirekk36.blogspot.com/2013/1 ... sc-03.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2014, o 22:15 
Offline
Moderator
Avatar użytkownika

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

atc2 napisał(a):
czyli przerwanie INT0 jest jednak na PB0, co oznacza, że problem mam nadal


Polecam przeczytaj czerwoną uwagę w pierwszym poście - mirek36

_________________
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: 21 wrz 2014, o 22:37 
Offline
Nowy

Dołączył(a): 21 wrz 2014
Posty: 7
Pomógł: 0

Ahhh taki błąd, nie spodziewałem się, że producent wymyśli dwa przerwania "0", teraz faktycznie dostrzegłem, że int0 jest na PB1 i na tej samej linii jest PCINT1. Dzięki wielkie,będę zatem próbował dalej.

Pytanie zatem poza konkursem :-)
Czy jak mam aktywną reakcję na przerwanie INT0 to czy mogę aktywować przerwania PCINT. Co zauważyłem to INT0 ma możliwość zdefiniowania na co ma reagować (zbocze,stan), czy PCINT ma podobny mechanizm?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2014, o 23:10 
Offline
Moderator
Avatar użytkownika

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

atc2 - powtórzę swoją prośbę po raz ostatni

Polecam przeczytaj czerwoną uwagę w pierwszym poście - mirek36

jeśli nie poprawisz tak jak SIĘ NALEŻY to przykro mi ale wątek zostanie usunięty bez ostrzeżenia - teraz poprawiłeś ale źle - a masz MEGA DOKŁADNĄ INSTRUKCJĘ


------------------------ [ Dodano po: 2 minutach ]

atc2 napisał(a):
Co zauważyłem to INT0 ma możliwość zdefiniowania na co ma reagować (zbocze,stan), czy PCINT ma podobny mechanizm?


obejrzyj sobie to:

http://mirekk36.blogspot.com/2013/12/pr ... sc-03.html

masz tam sporo wyjaśnione w tym temacie

_________________
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: 24 wrz 2014, o 19:58 
Offline
Nowy

Dołączył(a): 21 wrz 2014
Posty: 7
Pomógł: 0

Ciąg dalszy,wszystko ruszyło ale....

W przypadku gdy na INT0 podaję raz po raz stan niski,to procesor zaskoczy i ładnie przełączy linię B2,natomiast nawet jak podam mu sygnał prostokątny 1Hz 5V to procesor przełącza B2 bardzo nierównomiernie, raz na parę sekund a czasami raz na 10s (przy większej częstotliwości na INT0 jest jeszcze gorzej).Gdy podam mu na INT0 sinus to do 100Hz bardzo ładnie generuje mi sygnał prostokątny na B2.Bardzo intrygujący temat.Może ktoś ma doświadczenie w tym temacie i wie co jest grane?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2014, o 20:28 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

atc2 napisał(a):
Ciąg dalszy,wszystko ruszyło ale....

W przypadku gdy na INT0 podaję raz po raz stan niski,to procesor zaskoczy i ładnie przełączy linię B2,natomiast nawet jak podam mu sygnał prostokątny 1Hz 5V to procesor przełącza B2 bardzo nierównomiernie, raz na parę sekund a czasami raz na 10s (przy większej częstotliwości na INT0 jest jeszcze gorzej).Gdy podam mu na INT0 sinus to do 100Hz bardzo ładnie generuje mi sygnał prostokątny na B2.Bardzo intrygujący temat.Może ktoś ma doświadczenie w tym temacie i wie co jest grane?

A jak aktualnie wygląda Twój program?
Bo z tego co jest w pierwszym poście to nie bardzo może to działać

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2014, o 20:34 
Offline
Nowy

Dołączył(a): 21 wrz 2014
Posty: 7
Pomógł: 0

Wygląda to tak

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2014, o 21:15 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

zamieniana jest na 3 rozkazy asemblera. Pierwszy odczytuje drugi modyfikuje a trzeci zapisuje z powrotem do portu. W przerwaniu masz też modyfikacje portu i pewnie stąd błędne działanie. Spróbuj tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

zostanie zamieniona na 1 instrukcję asemblerową sbi

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2014, o 08:13 
Offline
Nowy

Dołączył(a): 21 wrz 2014
Posty: 7
Pomógł: 0

To zaskoczyło i wszystko śmiga:-) Pozostaje jednak niedosyt bo w mojej funkcji obsługi przerwania też powinno działać,wszakże procesor dopóki nie skończy obsługi przerwania nic dalej nie wykonuje,a tu jednak szalał



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2014, o 16:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 16 lut 2014
Posty: 96
Lokalizacja: Łódź
Pomógł: 6

A tak przy okazji... czy definicje PORTB3 == PB3 ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2014, o 16:52 
Offline
Moderator
Avatar użytkownika

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

HCOOH napisał(a):
PORTB3 == PB3 ?


Wystarczy sobie kliknąć lewym klawiszem mychy trzymając wciśnięty CTRL - aby się przekonać czy działa np PORTB3 ;) a szybko się przekonamy że działa - ponieważ przeniesieni zostaniemy do systemowego pliku nagłówkowego "portpins.h" z takimi makrodefinicjami ;)

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

_________________
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: 25 wrz 2014, o 17:42 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

atc2 napisał(a):
Pozostaje jednak niedosyt bo w mojej funkcji obsługi przerwania też powinno działać,wszakże procesor dopóki nie skończy obsługi przerwania nic dalej nie wykonuje,a tu jednak szalał
To wróć do swojej wersji i usuń wszystko z pętli while i napisz jaki efekt.

_________________
Dragonus Cracovus: Biomagia



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: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO