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



Teraz jest 3 sty 2026, o 09:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
Autor Wiadomość
PostNapisane: 22 sie 2012, o 18:04 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Problem wygląda w ten sposób:

przerwanie TIMER2_COMPA powinno się aktywować dopiero po otrzymaniu przerwania INT1, jednak jak widać na załączonym obrazku działa przed nadejściem przerwania zewnętrznego.

Szpilki na drugim wykresie to makra "a b" z obsługi przerwania ISR( TIMER2_COMPA_vect ), jak widać przerwanie się wykonuje pomimo, że jest aktywowane dopiero w przerwanu zewnętrznym, zupełnie tak jakby procedura INT1 wykonywała się gdzieś raz na samym początku.

W kodzie może brakować gdzieś klamerek bo wywaliłem trochę rzeczy nie związanych, żeby nie zaśmiecać:

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


Co pominąłem?


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 18:14 
Offline
Moderator
Avatar użytkownika

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

Po pierwsze INT1 w ATmega8 to pin PD3 ;) a skąd ci się wzięło PD1 ???? ;)


toż PD3 czyli wejście INT1 pozostaje cały czas w stanie 3-cim czyli pływa wejście i nie dziwota że generują się jakieś fantomowe przerwania z INT1 ;) ......

nota PDF, halo halo nota PDF ;) .... sprawdzić na jakim pinie jest INT1 ;)

poza tym po resecie już jest on WEJŚCIEM ale jeszcze wypada go podciągnąć do VCC żeby nie było 3-go stanu HiZ

_________________
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: 22 sie 2012, o 18:22 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Sorry zapomniałem dodać ATmega324PA, na wyjście PD1 wysyłam sobie impulsy do analizatora logicznego.
Na wejście PD3 od przerwania zewnętrznego wchodzi sygnał z odbiornika podczerwieni gdzie normalnie mamy stan "1".

PS: Licznik 16 bitowy jest już do czego innego wykorzystany.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 18:47 
Offline
Moderator
Avatar użytkownika

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

Sorry ale teraz to już zakręciłeś na maxa. Widzisz ile zależy od poprawnie zadanego pytania. W przeciwnym wypadku można spędzić miesiąc na takim "w kółko" pisaniu a ty za każdym razem będziesz coś uzupełniał i nikt nie będzie widział o co chodzi w sprzęcie poza tobą :(

Nawet jeśli to ATmega324PA to jakim cudem ma ci działać prawidłowo wejście INT1, na PD3 skoro (PODKREŚLAM! tak jak pisałem wcześniej nie masz podciągniętego wejścia do VCC i pływa ci stan HiZ na tym wejściu ????

PS .... zobacz... TU

topic1454.html

masz przykład dobrze zadanego pytania na forum

------------------------ [ Dodano po: kilkunastu sekundach ]

rafal-bielsko napisał(a):
PS: Licznik 16 bitowy jest już do czego innego wykorzystany.


A to w związku z czym podpowiedziałeś ? czy może ci się wątki pomyliły już ? ;)

_________________
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: 22 sie 2012, o 19:20 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Dodanie PORTD |= ( 1 << PD3 ); w mainie i problem dalej występuje.

Zrobiłem taki test: w przerwaniu INT1 ustawiam i zeruję wyjście przechwytywane przez analizator logiczny.
Analizator ustawiony na przechwytywanie zboczy i nie zbiera żadnych próbek, również przy resetowaniu układu więc przerwanie INT1 samoistnie się nie wykonuje.

Pytanie: Dlaczego ISR( TIMER2_COMPA_vect ) się wykonuje przed inicjalizacją z przerwania INT1 (która nie nastąpiła)?

Albo inaczej: kiedy i dlaczego wykonuje się przerwanie INT1 skoro nie widać tego na analizatorze i nie ma zbocza opadającego które mogło by je aktywować?



Schemat:
http://www.speedyshare.com/HqhaV/downlo ... idmowy.pdf


mirekk36 napisał(a):

------------------------ [ Dodano po: kilkunastu sekundach ]

rafal-bielsko napisał(a):
PS: Licznik 16 bitowy jest już do czego innego wykorzystany.


A to w związku z czym podpowiedziałeś ? czy może ci się wątki pomyliły już ? ;)


Żeby uprzedzić w razie czego pytania czemu nie robię tego tak jak w "Mikrokontrolery AVR....".



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 19:55 
Offline
Użytkownik
Avatar użytkownika

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

rafal-bielsko napisał(a):
zupełnie tak jakby procedura INT1 wykonywała się gdzieś raz na samym początku


Wydaje mi się, że procedura obsługi przerwania INT1 jednak się wykonuje na samym początku. A to dlatego, że pin PD3, zanim go skonfigurujesz, jest domyślnie wejściem w stanie HiZ. I jak wspomniał Mirek, napięcie na tym pinie sobie ładnie pływa od GND do VCC. I przy odpowiedniej wartości tego napięcia zostaje ustawiona flaga przerwania INT1.

I teraz po poleceniu sei() i odblokowaniu przerwania od INT1 procek widzi tą flagę i skacze do procedury obsługi tego przerwania.

Dlatego spróbuj polecenie sei() przenieś tuż przed pętlę while a przed tym poleceniem wyzerować flagę przerwania INT1 poprzez wpisanie do niej jedynki

EIFR |= (1<<INTF1)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 20:08 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Niestety, nie pomogło.

Program zachowuje się tak że jeśli gdziekolwiek w kodzie wrzucę

TIMSK2 |= ( 1 << OCIE2A ); // odblokowanie Timer/Counter2 Output Compare Match A Interrupt Enable

to przerwanie COMPA się wykonuje od początku pracy układu.
Może nie doczytałem gdzieś datasheeta...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 20:13 
Offline
Moderator
Avatar użytkownika

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

Pokaż lepiej poprawiony kod programu, bo kolega jacekk232 podał ci bardzo dobrą uwagę.... Bo domyślać się co poprawiłeś i jak poprawiłeś - to ja nie za bardzo potrafię. ;) , muszę mieć kod przed oczami.

_________________
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: 22 sie 2012, o 20:31 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

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: 22 sie 2012, o 21:54 
Offline
Moderator
Avatar użytkownika

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

No i dobrze ;) teraz przerwanie INT1 oraz Timer2_compa nie mają prawa same się wzbudzić po starcie programu ;)

jeśli tak się dzieje to znaczy że teraz już problemu szukaj w sprzęcie - albo pokaż schemat tego co spłodziłeś, hmmm a jeśli stworzyłeś to w postaci pająka na stykówce to pokaż jeszcze zdjęcie ;) szybciej wtedy dojdziemy gdzie babola robisz.

aha tylko schemat w wrzuć na forum a nie na jakieś zawirusowane spedy-coś-tam-szare. Bo ja takie strony od razu wyłączam. Tylko nie mów że się nie da w postaci załącznika dodać schematu w PDF. Bo da radę - tylko spakuj go do ZIP'a albo RAR'a

przy okazji powiedz czym wyzwalasz to INT1 jeśli już - tzn co masz tam fizycznie teraz podłączone.

_________________
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: 22 sie 2012, o 22:37 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Int1 wyzwalane zboczem opadającym z odbiornika podczerwieni IR5440, czyli pilotem uniwwersalnym.
Układ zmontowany na docelowej płytce, nie na stykówce.
Wyjście z odbiornika podłączone jest również do pinu ICP, to ustawiłem na wszelki wypadek na wejście.

No i nadal niezła zagadka, przerwanie COMPA cały czas sobie hula...

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


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 22:50 
Offline
Moderator
Avatar użytkownika

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

No a jak ty sprawdzasz tym analizatorem - podłączasz się niby do PD1 jak pisałeś ???? ale gdzie w kodzie widać coś odnośnie PD1 ??? poza ustawieniem pinu jako wyjście w inicjalizacji w main() ???

co robią wciąż w kodzie te literki

a b

na początku przerwań ?

jak ty stwierdzasz że to przerwanie niby cały czas działa ???? a jak zakomentujesz linię

TIMSK2 |= ( 1 << OCIE2A );

w INT1 to co też działa przerwanie ? - tu widzę jakąś dużą nieścisłość opisu widoku na analizatorze z kodem programu ....

_________________
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: 23 sie 2012, o 07:44 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

mirekk36 napisał(a):
No a jak ty sprawdzasz tym analizatorem - podłączasz się niby do PD1 jak pisałeś ???? ale gdzie w kodzie widać coś odnośnie PD1 ??? poza ustawieniem pinu jako wyjście w inicjalizacji w main() ???

co robią wciąż w kodzie te literki

a b

na początku przerwań ?




Literka "a" to makro ustawiajace stan wysoki na PD1, literka "b" ustawia stan niski. Analizator logiczy jest podlaczony do wyjscia PD1.

Jesli wrzuce w obsludze przerwania COMPA "a" "spacja" "b" to analizator jest w stanie zarejestrowac krotka szpile, te ktore widzimy wlasnie na 1-TIMER2_COMPA. Inaczej jesli procedura obslug przerwania COMPA sie wykonuje, to mam szpilki.

Jesli inicjalizacja COMPA jest w INT1 to szpilki z analizatora na 1-TIMER2_COMPA powinienem zaczac rejestrowac dopiero od wykonania sie procedury INT1, a nie juz wczesniej tak jak ma to miejsce.



mirekk36 napisał(a):
jak ty stwierdzasz że to przerwanie niby cały czas działa ???? a jak zakomentujesz linię

TIMSK2 |= ( 1 << OCIE2A );

w INT1 to co też działa przerwanie ? - tu widzę jakąś dużą nieścisłość opisu widoku na analizatorze z kodem programu ....


Odp:

rafal-bielsko napisał(a):
Program zachowuje się tak że jeśli gdziekolwiek w kodzie wrzucę

TIMSK2 |= ( 1 << OCIE2A ); // odblokowanie Timer/Counter2 Output Compare Match A Interrupt Enable

to przerwanie COMPA się wykonuje od początku pracy układu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 08:07 
Offline
Moderator
Avatar użytkownika

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

Na przyszłość tego typu makra rób np tak:

#define PD1_SET PORTD |= (1 << PD1)
#define PD1_CLR PORTD &= ~(1 << PD1)


a w kodzie wywołuj tak:

PD1_SET; PD1_CLR;

to nie jest oczywiście powodem twoich kłopotów ale na pewno kłopotów z analizą na szybko twojego kodu. A i sam się kiedyś przejedziesz na takim tworzeniu makr. Dwie zasady:

1. nazwa makra dużymi literami
2. NIGDY nie wstawiaj średnika na końcu makra
3. w kodzie kończ makra średnikami jeśli nie występują gdzieś w wyrażeniu
(oczywiście to nie jest wymóg - ale taka zasada popłaca)

jak podjadę do firmy to aż sprawdzę ten kod u siebie, bo na razie nie widzę żadnego błędu i moim zdaniem coś gdzieś indziej robisz nie tak ... ale może znowu czegoś w nim nie widzę

_________________
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: 23 sie 2012, o 09:18 
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

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


albo w ogóle nie konfiguruj w main, bo co to za tryb ctc jak OCR2A=0

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 18:17 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Co do makr to moja "niepoprawna" składnia została zastosowana specjalnie, przy testach łatwiej jest wklepać jedną literkę jeśli co chwilę się to gdzieś przerzuca.

Krauser napisał(a):
Skonfiguruj timer w ten sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


albo w ogóle nie konfiguruj w main, bo co to za tryb ctc jak OCR2A=0


Wprowadzone poprawki nie zmieniły niepoprawnego działania.

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


PS: Skoro nie znaleźliście problemu w kodzie pozostaje mi przyjąć, że problem jest czysto sprzętowy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 18:46 
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

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

i do PD1 podpiąłem LED i wcale po starcie się nie zaświeca LED (procesor ATMEGA168). Problem ze szpilką może być taki, że procesor może swoją pracą generować zakłócenia.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 19:39 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Krauser napisał(a):
i do PD1 podpiąłem LED i wcale po starcie się nie zaświeca LED (procesor ATMEGA168). Problem ze szpilką może być taki, że procesor może swoją pracą generować zakłócenia.


Zaklócenie które wywołuje INT1 gdzie COMPA się aktywuje? Raczej nie bo przy testach analizator by to wykrył że procedura INT1 się zrealizowała... Taktowanie procka 20MHz, próbkowanie analizatora 24Mhz.

Przy procku 3x100nF i każdym innym pinie zasilającym układ cyfrowy, poza tym napięcie narazie z USB.

Ok, sprawa wygląda w ten sposób: przerwanie COMPA działa dopiero od momentu TIMSK2 |= ( 1 << OCIE2A ); w przerwaniu INT1. Przerwanie INT1 wg analizatora logicznego nie zachodzi, a COMPA chodzi od samego początku...

W każdym razie, tak jak pisałem skoro nie widzicie błędu w programie i na waszych atmegach działa jak trzeba szukam powodu fizycznie w układzie albo poradzę sobie w inny sposób.

Oczywiście, dzięki za sugestie ;).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 19:42 
Offline
Moderator
Avatar użytkownika

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

Krauser napisał(a):
i do PD1 podpiąłem LED i wcale po starcie się nie zaświeca LED (procesor ATMEGA168). Problem ze szpilką może być taki, że procesor może swoją pracą generować zakłócenia.


Bo na płycie jest pełno diod LED zasilanych też z VCC dla procka ... więc jeśli się np zrobi złe filtrowanie zasilania na PCB to problemy murowane.

A przy okazji - panie kolego - kondensatory 100nF to żadne filtrowanie zasilania - dlatego szczególnie polecam ci lekturę tego - zobacz co się może dziać bez prawidłowego filtrowania i z czego tak na prawdę może ono wynikać:

http://mirekk36.blogspot.com/2012/04/mi ... lanie.html

może to ci coś podsunie ....

bo nie ma możliwości żeby przerwanie się samo włączało w procku - samo nic się nie robi ;) jak to mówią. Za to programista elektronik może dużo zrobić ;) zarówno dobrze jak i źle.

_________________
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: 23 sie 2012, o 20:14 
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

rafal-bielsko napisał(a):
Przerwanie INT1 wg analizatora logicznego nie zachodzi, a COMPA chodzi od samego początku...

Niestety nie mam analizatora :( . Dlatego i za a i za b wstawiłem opóźnienie do jednego przerwania 100ms, a do drugiego 500ms i podpioąłem LED. Może też spróbujesz tej metody.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 20:53 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Być może, ale w tej chwili żadne diody nie są wysterowane, układ chodzi na U z USB.

Dodatkowo wszystko fajnie sobie działało, odczyt RTC, wyświetlanie na diodkach co chwile czegoś innego, obliczenia itp. nie było problemów aż do tego nieszczęsnego COMPA. Nie wspominając już o transformatorze powietrznym pod procesorem na PWM 70 kilo.

Rozumiem, że najwygodniej wszystko zwalić na zakłócenia jak się nie ma pomysłu, ale w dużo gorszych warunkach wszystko grało (nie mówię tu o COMPA).

mirekk36 napisał(a):
A przy okazji - panie kolego - kondensatory 100nF to żadne filtrowanie zasilania


Serio? A ja myślałem, że powinno się dawać bo pomagają tłumić szybkozmienne przebiegi z wewnątrz układów cyfrowych, no i z zewnątrz przy okazji też.

W każdym razie Panowie dzięki za pomoc, jeśli wogóle kiedyś znajdę przyczynę to napiszę, nawet jeśli to będą te straszliwe zaklócenia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 21:33 
Offline
Moderator
Avatar użytkownika

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

Może czytaj panie kolego uważniej bo nigdzie nie napisałem żeby nie dawać kondensatorów 100nF, wręcz przeciwnie są konieczne ale nie tylko one .... I nic nikt nie zwala na tajemnicze zakłócenia - po prostu skoro program jest ok to próbuję coś wymyślić .... a ty się czepiasz słówek ....

ale widzę że totalnie ignorujesz moje podpowiedzi - a do linku nawet nie zajrzałeś - szkoda .... ja w takim razie tyle miałem tu do powiedzenia - może ktoś inny pomoże i będzie miał cierpliwość.

_________________
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: 23 sie 2012, o 21:40 
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

Chyba źle mnie zrozumiałeś, bo moim zdaniem na starcie nie ma skoku do TIMER2_COMPA tylko ty tak myślisz, bo analizator pokazuje szpilki. A możesz te szpilki trochę rozszerzyć wstawiając niewielkie opóźnienie pomiędzy a i b?

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2012, o 07:20 
Offline
Nowy

Dołączył(a): 04 lip 2012
Posty: 17
Pomógł: 0

Krauser napisał(a):
Chyba źle mnie zrozumiałeś, bo moim zdaniem na starcie nie ma skoku do TIMER2_COMPA tylko ty tak myślisz, bo analizator pokazuje szpilki. A możesz te szpilki trochę rozszerzyć wstawiając niewielkie opóźnienie pomiędzy a i b?


Do poniedzialku nie mam jak sprawdzic, ale w zaleznosci od wartosci OCR2A szpilki pojawiaja sie ze spodziewana czestotliwoscia i stalym wypelnieieniem zatem ewidentnie sa zwiazane z przerwaniem COMPA. Jak wroce to sprawdze.

Zmienilem troche program w ramach testu wczoraj i poblem pojawil sie rowniez przy przerwaniu OVF od timera0 przy zmianie kodu programu. Inicjalizacja przerwania od przepelnienia w INT1, przerwanie INT1 nie nastepuje (albo wystepuje nie wiadomo dlaczego gdzies na samym poczatku) a licznik sie przepelnia.

Zastanawiam sie, czy nie uszkodzilem kiedys procka kiedy odleciala cewka od stabilizatora, grzal sie a mi zajelo chwile zorientowanie sie dlaczego. Taki scenariusz jest wogole mozliwy, ze cos sie tam spalio a reszta uC dziala poprawnie? To juz takie szukanie dziury w calym troche :P.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2012, o 07:44 
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

Teoria, że przerwanie od INT1 pojawia się na starcie nie jest bezpodstawna. Odbiornik podczerwieni zasilony jest przez filtr RC. Rzecz w tym, że procesor może już działać a odbiornik jeszcze nie i w czasie "rozruchu" podaje 0 - taki stan nieustalony. Co do programu to na samym początku skonfiguruj porty później dodałbym małe opóźnienie, aby na pewno odbiornik już był włączony i dopiero wtedy ustawiałbym przerwania.

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

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