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



Teraz jest 11 sty 2026, o 23:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 4 kwi 2018, o 20:40 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Hej.
Postanowiłem wykorzystać bibliotekę enkodera w Atmedze 328P.
Bibliotekę uruchomiłem w trybie pooling i działa, więc sprzętowo sądzę że jest OK.
Docelowo chcę jednak wykorzystać przerwania PCINT10 i PCINT11 mojej atmegi.

Zdefiniowałem zatem tryby pracy i porty:

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



Dalej patrzę do noty a tam wynika, że PCINT11 i PCINT10 należą do rejestru maskującego o nazwie PCMSK1
Obrazek


Zmieniam więc wiersz

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


na PCMSK1 i program nie działa

No nic! Nie pierwszy raz. Sprawdzam po kilka razy całą bibliotekę i wszystko wygląda OK. Podczas kolejnych prób i powtórek wrócił mi zapis w linijce
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jak na początku było w poradniku. Nieświadomy powyższego błędu - skompilowałem, załadowałem i -!-!-!-!-! DZIAŁA!
Z tym że trochę jakby nie wyłapuje szybszego kręcenia.

Nie rozumiem dla czego wbrew zapisowi w Datasheet PCINT11 i PCINT10 działają z rejestrem maskującym innych przerwań?

Spotkał się już ktoś z czymś podobnym?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2018, o 21:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 368
Lokalizacja: Gliwice
Pomógł: 34

Ja się spotkałem i to wiele razy :)
Najczęściej miałem jakiegoś okropnego babola, którego nie widziałem i losowo robiłem różne sztuczki, jak tutaj właśnie Kolega, a nawet czasami wydawało mi się, że już nota jest "uszkodzona" - w moim przypadku ZAWSZE kończyło się to oszukiwaniem samego siebie :)
Błąd był zawsze po mojej stronie.

Moje próby na M328P z różnymi portami i konfiguracjami dawały oczekiwane rezultaty, zgodne z notą, bibliotekę przepisywałem z poradnika i ruszyła właściwie od strzała.

Nic Kolega nie pisze o numerach portu na jakie próbuje się wbić, co oczywiste, każdy port ma "swoje" rejestry, nic nie pisze o takich parametrach jak:

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


Oprócz tego jest jeszcze wiele miejsc, gdzie pewnie można zrobić babola.
Co do błędnych odczytów to na pewno masz dobrze zorganizowany filtr, który jest podstawą tej biblioteki? Schematu nie dałeś niestety ani jakiegoś obrazka jak to połączone, ciężko pomóc...
Kod który podałem to wycinek konfiguracji dla różnych portów mikrokontrolera, oba działały bezbłędnie.

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

Dla PCINT10 i 11 jest wg mnie niepoprawny.
PORTB to pcinty od 0-7, PORTC od 8-15, to mam sens jest logiczne i właściwe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2018, o 09:20 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Oczywiście PCINT10 i PCINT11 to porty PC2 i PC3
i to też mam skonfigurowane raczej dobrze
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ja sam się dziwię swojemu zacięciu, że po tylu niepowodzeniach i niezrozumieniach dalej mam siłę programować. Dla tego nie mam najmniejszej wątpliwości, że babol jest w moim kodzie.
Zabieram się za analizę jeszcze raz, od początku poradnika.

Dziwi mnie jednak że działa mi coś co nie powinno i nie działa coś co powinno. (mowa tu o rejestrach PCMSK1 i PCMSK2)
Mam zatem wątpliwość czy dobrze rozumiem notę.

------------------------ [ Dodano po: 26 minutach ]

Chcę się tylko upewnić jeśli ktoś wie. Konfigurację ustawiłem tak jak kolega wyżej.

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


bo moje PCINT10 i PCINT11 należą do tego samego rejestru PCMSK1 i PCIE1 co kolegi PCINT 8 i PCINT9.

Czy jest ona poprawna dla M328p i dla PCINT10 i PCINT11 ?
Jeśli tak to będę szukał dalej baboli.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2018, o 10:42 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

No i znalazłem. W pliku .c miałem na stałe wpisany PCICR |= (1<<PCIE2);



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

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