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



Teraz jest 13 sty 2026, o 00:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 16 sie 2013, o 15:05 
Offline
Nowy

Dołączył(a): 24 sty 2013
Posty: 11
Pomógł: 0

To mój pierwszy post, więc proszę o wyrozumiałość. Jestem początkującym i obrałem sobie jako pierwszy projekt zrobić pilota do aparatu Nikon D5000. Ramka wygląda tak:

Obrazek

Na stronie: http://www.bigmike.it/ircontrol/index.html jest napisany kod w C dla AT90S2313. Chciałem go przerobić dla Atmegi32, wpierw testując na płycie ATB rev: 1.002. W książce niebieskiej jest projekt "Pilot na podczerwień" wyczytałem ze wystarczy podpiąć IR LED, skompilować program, wgrać i powinno działać. Niestety nie działa mój kod po przeróbce, pewnie mam coś nie tak z kodem, prośba o spojrzenie, co może być problemem:

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


Może mi ktoś wytłumaczyć "TCNT0=164;" dlaczego 164?

Poniżej oryginalny kod, który ponoć działa na AT90S2313:

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



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


Po co w pętli pierwotny autor umieścił TCNT0 i PORTB, przecież to się wykona tylko raz bo pętla While wykona się raz po pierwszym przejściu ustawi się stan wysoki na TOV0. Dobrze myślę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2013, o 17:15 
Offline
Moderator
Avatar użytkownika

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

W bluebooku - masz fajny przykład, którego przerobienie powinno zająć 5 sekund.

Tymczasem ty zabierasz się za jakiś mega pokręcony kod, który na pierwszy rzut oka jeszcze softwarowo generuje nośną - no pokręcony pomysł ... :( po co ?

toż masz przykład w Bluebooku, jak puścić nośną np 36kHz czy dowolną inną jaką zechcesz - a potem tylko ją załączać i wyłączać wg pokazanego w pierwszym poście wykresu czasowego. No nic już bardziej prostego nie da rady zrobić ....

więc po co się męczysz z reverse engeenering'iem ??? jakiegoś kociego programu ?

Polecam ci jednak przeczytać jeszcze raz ten rozdział o pilocie RC5 i go zrozumieć a jak coś niejasne to dopytać - bo przyda ci się wiedza jak generować nośną przy okazji za pomocą timera sprzętowego.

_________________
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: 16 sie 2013, o 18:58 
Offline
Nowy

Dołączył(a): 24 sty 2013
Posty: 11
Pomógł: 0

Przeczytałem enty raz Mirku, i jest efekt, zadziałało :-) Jaka radość!

Poprawiony kod:

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: 16 sie 2013, o 20:06 
Offline
Moderator
Avatar użytkownika

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

kubansa napisał(a):
i jest efekt, zadziałało

Prawda jak łatwo się to robi w ten sposób ? ;)

Gratulacje i powodzenia w dalszych bojach i projektach

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

Dołączył(a): 24 sty 2013
Posty: 11
Pomógł: 0

Panowie pomożecie, siedzę już drugi dzień i włosy se rwe!!!

We wcześniejszym poście udało się uruchomić pilota do nikona z wykorzystaniem przerwania Compare Match. ISR(TIMER0_COMP_vect). Efekt jest taki że ramka jest wysyłana non stop i aparat robi fotki bezustannie. Nie potrafię tego zatrzymać, wiec postanowiłem zmodyfikować kod, tak aby działa w ten sposób, aby wyzwolenie migawki w aparacie odbywało się po wciśnięciu klawisza, modyfikując projekt z bluebook'a "pilot ma podczerwień" str. 371. Problem w tym ze nie wykorzystuje standardu RC5, tylko nadajnik ma generować taką fale jak w pierwszym posice. Puszczam nośną 38,4 kHz a potem ją załączać i wyłączać wg pokazanego w pierwszym poście wykresu czasowego. Niestety nośna nie wyzwala migawki w aparacie. Wciśniecie klawisza działa, sprawdzam to za pomocą LED. Podłączenie wygląda tak,(stara wersja płyty ATB, w nowej wersji jest wyprowadzenie na diodę nadawcą):

Obrazek



program C poniżej:

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


Prośba na spojrzenie kodu co jest nie tak. I czy dobrze rozumie kod:
1. Po naciśnięciu klawisza pojawia się stan niski na pinie PD2 (INTO)
2. Powoduje to wybudzenie procesora i przejście do przerwania ISR(INTO_vect)
3. Jest sprawdzenie za pomocą if'a czy jest wciśnięty klawisz, jeśli tak, to
4. Wykonuje się polecenie LED_TOG; oraz nikonRelease();
5. W efekcie jest zmian stanu pinu na PA2 oraz uruchamia się Timer0, który generuje nośną
6. pojawia się stan wysoki przez okres 2000us z częstotliwościowa 38,4 kHz
7. pojawia się stan niski przez okres 27830 us z częstotliwościowa 38,4 kHz
8. i tak dalej... po skończeniu procedury nikonRelease(); następuje zmiana stanu portów i pinów związanych z klawiszem i INTO

Liczę na Was :-)

PS: Sprawdziłem za pomocą aparatu w telefonie dioda nadawcza ciągle się świeci, dlaczego?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 20:35 
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

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

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 21:14 
Offline
Nowy

Dołączył(a): 24 sty 2013
Posty: 11
Pomógł: 0

Chyba nie do końca, w bluebooks, strona 187
TCCR0 |= (1<<WGM01); // ustawienie trybu CTC
TCCR0 = (1<<CS00); //ustawienie preskaler = 1



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

To tylko dowód, że HERMAN zrobił włam do drukarni ;)

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 21:36 
Offline
Moderator
Avatar użytkownika

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

kubansa napisał(a):
Chyba nie do końca, w bluebooks, strona 187
TCCR0 |= (1<<WGM01); // ustawienie trybu CTC
TCCR0 = (1<<CS00); //ustawienie preskaler = 1


Na pewno strona 187 ? - nie mogę znaleźć tego błędu

ale jeśli tak jest to oczywisty błąd. Zawsze w takich wypadkach posiłkuj się też kodem z DVD dla sprawdzenia....

Bo Krauser oczywiście ma rację ;) ... że to sprawka Hermana :lol:

_________________
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 sie 2013, o 09:49 
Offline
Nowy

Dołączył(a): 24 sty 2013
Posty: 11
Pomógł: 0

Może nad interpretowałem, zacznę od początku:
Na stronie 187 jest:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W nocie pdf dla Atmegi 32 jest napisane, że przy ustawieniu 1 dla CS00: clk/(No prescaling) uznałem że preskaler przyjmuje wówczas wartość 1 - czy nad interpretowałem ?

------------------------ [ Dodano po: 27 minutach ]

Druga sprawa, strona 374 bleubook - projekt pilot na podczerwień, jest na dole strony ustawienie dla generowania fali nośnej zapis:

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


ten zapis też jest w pliku źródłowym.

Układ pilota z projektu jest oparty na ATTINY2313, w nocie PDF dla tego procka nie ma rejestru TCCR0A i TCCR0B, jest tylko TCCR0, TCCR1A , TCCR1A
Uznałem to za błąd i dla TIMERA0 występuje tylko jeden rejestr TCCR0 i tak ustawiłem w swoim projekcie.
Proszę nie traktować tego jako czepianie się, chcę zrozumieć :o a przerwania dla nowicjusza nie są takie banalne do zrozumienia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2013, o 11:10 
Offline
Moderator
Avatar użytkownika

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

kubansa napisał(a):
Proszę nie traktować tego jako czepianie się, chcę zrozumieć a przerwania dla nowicjusza nie są takie banalne do zrozumienia.


Ale czy ty odebrałeś to że ja uznałem, że się czepiasz ? skąd ? ... raczej chciałem szybko zobaczyć czy przypadkiem nie wypatrzyłeś nowego BUG'a w książce więc spokojnie. Kto jak kto ale ja dobrze rozumiem początkującego ;) bo sam nim jestem ;)

na razie nie mogę odpowiedzieć merytorycznie - może później - chyba że ktoś z kolegów mnie ubiegnie i tobie pomoże

_________________
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 sie 2013, o 18:45 
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

Chodzi mi o to, że musisz odróżnić zapis = od |=. Tak masz źle:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Analogicznie możesz się pobawić ustawianiem stanów na porcie. Czy zostaną zapalone dwie diody:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2013, o 23:45 
Offline
Nowy

Dołączył(a): 24 sty 2013
Posty: 11
Pomógł: 0

Odróżniam zapis = od |=, wkradł się błąd w moim kodzie. Dzięki za znalezienie. Pomimo błędu nadal aparat nie reaguje :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2013, o 12:44 
Offline
Nowy

Dołączył(a): 24 sty 2013
Posty: 11
Pomógł: 0

Migawka się wyzwala w aparacie. Problem był trywialny. Podczas generowania ramki, odwrócona była sekwencja stanów: wysoki/niski. Dioda podczerwieni jest podlączona na stałe do VCC, wiec aby pojawił się stan wysoki trzeba wyzerować PIN PB2, a w kodzie było na odwrót.

Poprawiony kod:

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


Nadal jest dla mnie zagadką zapis na stronie bluebook'a (str.374). Przecież w nocie AT90S2313.pdf nie ma dla Timera0 rejestru TCCR0A. Ktoś może wykonał tego pilota z książki?



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

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

kubansa napisał(a):
Nadal jest dla mnie zagadką zapis na stronie bluebook'a (str.374). Przecież w nocie AT90S2313.pdf nie ma dla Timera0 rejestru TCCR0A. Ktoś może wykonał tego pilota z książki?


tzn kolega sam sobie tworzy zagadki ;) bo w książce WYRAŹNIE piszę o procku ATtiny2313 który jest o wiele nowszą wersją szrota którego symbol podałeś czyli AT90S2313 ;) Ten szrot AT90S2313 nawet nie ma wbudowanego wewn. oscylatora tylko trzeba go zewn kwarcem popędzać ;)

więc powiedz skąd wziąłeś pomysł aby zaglądać w notę AT90S2313 ? ;) zamiast w ATtiny2313, który opisany jest w książce ?


Autor postu otrzymał pochwałę

_________________
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 2013, o 18:51 
Offline
Nowy

Dołączył(a): 24 sty 2013
Posty: 11
Pomógł: 0

Ale ftopa! Zasugerowałem się w nazwie końcówka 2313 i uznałem że to ta nota, nie patrząc na pozostałe. Byka w książce nie ma, wszystko jest ok. Temat zamykam, dziękuje Wszystkim za pomoc !!! :)



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

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