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



Teraz jest 7 mar 2025, o 00:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 21 maja 2013, o 19:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 gru 2012
Posty: 146
Lokalizacja: Racibórz
Zbananowany użytkownik

Pomógł: 0

Mam pewien problem a właściwie zjawisko, z którym nie mogę sobie poradzić. Otóż mam kod w Bascomie .
Sygnał wejściowy to 3 impulsy następujące po sobie w różnych odstępach czasu rzędu kilkunastu milisekund. Musze każdorazowo zmierzyć upływ czasu pomiędzy drugim a trzecim impulsem. Dane wysyłam do okna terminala.
Działający od programu dla ATmega 16 wygląda tak:

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

Wykorzystałem tutaj przerwanie INT2 oraz TIMER0. Ale ten sam kod dla ATmega 8 po zmianie na INT0 niestety nie działa tzn nie uruchamia wywyła i na terminal informacji. Po zmianie kod tak, aby w przerwaniu timera podawał na terminal informacje o upływie czasu okazuje się ze timer się uruchamia po zakończeniu obsługi przerwań INT0 i nie wyłącza się. Dlaczego ATmega 16 działa prawidłowo ( zgodnie z moimi założeniami) a ATmega 8 nie – tego nie mogę rozgryźć.

Kwarc 16MHz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2013, o 21:13 
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

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

Wiadomo, że niektóre konfiguracje są niepotrzebne np. nie trzeba konfigurować wyprowadzeń jako wejścia, bo taką funkcję pełnią po resecie procesorka. W Atmedze16 (jak sobie możesz sprawdzić w specyfikacji) domyślnie przerwanie na pinie INT2 jest skonfigurowane by reagować na opadające zbocze podczas, gdy dla INT0 i INT1 domyślnie jest to niski stan.

_________________
Dragonus Cracovus: Biomagia



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

Dołączył(a): 24 gru 2012
Posty: 146
Lokalizacja: Racibórz
Zbananowany użytkownik

Pomógł: 0

Nie - wszystko jest prawidłowe
Dla ATmega16
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To samo tylko zmiana przerwania na INT0 dla Atmega8



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 maja 2013, o 10:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sty 2013
Posty: 272
Pomógł: 3

A czytałeś co pisał kolega?

Krauser napisał(a):
W Atmedze16 (jak sobie możesz sprawdzić w specyfikacji) domyślnie przerwanie na pinie INT2 jest skonfigurowane by reagować na opadające zbocze podczas, gdy dla INT0 i INT1 domyślnie jest to niski stan.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 maja 2013, o 13:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 gru 2012
Posty: 146
Lokalizacja: Racibórz
Zbananowany użytkownik

Pomógł: 0

Owszem czytałem - ale pozwolę sobie zauważyć że ATmega 16 działa mi prawidłowo i jest ustawiona reakcja na narastające zbocze (w programie jest : Config Int2 = Rising - linia 13 kodu). Uruchamia timer0 w przerwaniu jak również go wyłącza. Natomiast ATmega 8 reaguje na narastające zbocza prawidłowo tzn wykrywa je ale nie uruchamia timera0 w przerwaniu. Kody programu SA tylko dostosowane do ATmega 8 tzn. zamiana INT2 na INT0 a reszta identyczna.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2013, o 19:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 gru 2012
Posty: 146
Lokalizacja: Racibórz
Zbananowany użytkownik

Pomógł: 0

Problem rozwiazany - winien był egzemplarz ATmega 8. Przypadkowo włożyłem do płyty uruchomnieniowej inną sztukę i przy tym samym kodzie działa prawidłowo. Czyli kod był prawidłowy - tym bardziej że na płycie uruchomieniowej dla ATmega 16 działał prawidłowo po dokonaniu niezbędnych modycjilacji z powodu innego atmelka. Zresztą - o tym wiedziałem i pisałem od początku.

Chyba atmelek się wypracował bo był w płycie do dawien dawna i przeżył niejedną wpadkę :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 maja 2013, o 20:11 
Offline
Moderator
Avatar użytkownika

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

no to już jest jakieś rozwiązanie problemu a nie obejście ;) ....

_________________
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: 28 maja 2013, o 21:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 gru 2012
Posty: 146
Lokalizacja: Racibórz
Zbananowany użytkownik

Pomógł: 0

To w zasadzie nie było obejście - program tak się rozbudował że niestety musiałem użyć ATMega 16. Tak często mi sie zdarza. Zaczynam od kilku linijek i kilku elementów a kończę na sporym urządzeniu. Zazwyczaj wiem co chce osiągnąć a praktyka i próby dyktują swoje prawa. Na ogół nie robię nic z gotowych schematów - sam opracowuję schemat elektroniki i program.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 maja 2013, o 08:52 
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

Polecam korzystanie z serii ATMEGAx8PA, bo ma taki sam rozmiar jak ATMEGA8, a można zawsze wymienić na taki z większą pamięcią lub mniejszą (od 4k do 32k) oraz ATMEGAxx4PA, który jest kompatybilny z ATMEGA16 i pozwala na wybór mikrokontrolerów z pamięcią od 16k do 128k.

_________________
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: 9 ] 

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