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



Teraz jest 4 lut 2026, o 00:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 16 maja 2015, o 21:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 sty 2015
Posty: 60
Pomógł: 0

Witam,
właśnie przerabiałem przykład z "BlueBooka" z wyświetlaczami segmentowymi i problem zaczął się na przerwaniach, ale po kolei.
Jedyny procek jaki mam to zepsuta Atmega328p i jako że mam Arduino Leonardo (Atmega32u4 @16MHz) podpiąłem programator przez ICSP do procka i programuję go z Eclipse. Wszystkie przykłady działają. Zacząłem się bawić z timerami i pierwszy problem, a w zasadzie pytanie. W książce opisywana jest Atmega8 jak dobrze pamiętam. Więc stosuje się do rad i otwieram notę Atmegi32u4. Znajduje tam Timer0 ale ma on 2 rejestry TCCR0A i TCCR0B. Pierwsze pytanie: o co chodzi z wersją A i B ? W książe było tylko TCCR0.
BTW. mam tylko 2 wyświetlacze, więc według książki policzyłem sobie że preskaler będzie 1024, a zliczone zostanie 156 impulsów. Chyba dobrze, skoro na każdym wyświetlaczu ma być 50Hz?
I teraz ta nieszczęsna inicjalizacja tego timera :( Zgubiłem się trochę w tej nocie i nie mam bladego pojęcia czy dobrze ten timer opaliłem, więc proszę sprawdźcie :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dodam, że mam cały projekt napisany i po wgraniu nic się nie dzieje.

Jak potrzeba reszta kodu to wstawię.

Proszę się zapoznać z tym postem: topic7402.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 maja 2015, o 22:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 sty 2015
Posty: 60
Pomógł: 0

Antystatyczny napisał(a):
Sprawdzałeś, czy działa w procku?

Jeżeli masz na myśli wgranie kodu do procka to tak. I brak reakcji wyświetlaczy :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 maja 2015, o 22:03 
Offline
Moderator
Avatar użytkownika

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

maxus napisał(a):
Jeżeli masz na myśli wgranie kodu do procka to tak. I brak reakcji wyświetlaczy

Panie kolego, panie kolego - na litość Zeusa :( .... a może być tak coś więcej sprawdzić ?

proszę cię KONIECZNIE obejrzyj sobie to:

http://mirekk36.blogspot.com/2014/04/pu ... ednej.html

i zobacz jak się podchodzi do rozwiązywania tego typu problemów - ok?

_________________
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 maja 2015, o 22:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 sty 2015
Posty: 60
Pomógł: 0

Z tą diodą spróbuję jutro, ale mam jeszcze jedno pytanie. Czy dobrze napisałem procedurę obsługi tego przerwania? W sensie tytuł.
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 maja 2015, o 23:01 
Offline
Moderator
Avatar użytkownika

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

maxus napisał(a):
Z tą diodą spróbuję jutro, ale mam jeszcze jedno pytanie. Czy dobrze napisałem procedurę obsługi tego przerwania? W sensie tytuł.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


http://mirekk36.blogspot.com/2012/03/ec ... nazwy.html

poczytaj ten artykuł (nie oglądaj tam poradnika wideo) tylko poczytaj art od sekcji UPDATE (to tak na przyszłość)

zaglądaj częściej na bloga

_________________
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: 17 maja 2015, o 10:38 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Zapodajesz sei(); gdzieś w kodzie?
Ostatnio wykasowałem sobie przez przypadek
i szukałem wszystkiego poza włączeniem przerwań przez godzinę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2015, o 11:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 sty 2015
Posty: 60
Pomógł: 0

mirekk36 napisał(a):
http://mirekk36.blogspot.com/2012/03/ec ... nazwy.html

poczytaj ten artykuł (nie oglądaj tam poradnika wideo) tylko poczytaj art od sekcji UPDATE (to tak na przyszłość)

zaglądaj częściej na bloga

Świetna funkcja :D


Co do debugowania przez diodę led. Dodałem w procedurze obsługi tego przerwania linijkę zapalającą tę diodę i dioda się nie zapaliła. Więc przerwanie w ogóle nie działa?

PS. sei(); jest w funkcji main.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2015, o 12:18 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Ustawienia przerwania masz ok.
Szukaj po stronie układu - brak zasilania tranzyzstorów przełaczających segmenty?



Ostatnio edytowano 17 maja 2015, o 12:22 przez jerrylu, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2015, o 12:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 sty 2015
Posty: 60
Pomógł: 0

jerrylu napisał(a):
Ustawienia prtzerwania masz ok.
Szukaj po stronie układu - brak zasilania tranzyzstorów przełaczających segmenty?


Co do tranzystorów (NPN) to sprawdziłem podpinając bazę do VCC i wszystko działa. Procek też dobrze podłączony, bo jest w Arduino Leonardo.
Może wstawię resztę kodu.
main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

d_led.h
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: 17 maja 2015, o 12:32 
Offline
Moderator
Avatar użytkownika

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

maxus napisał(a):
Dodałem w procedurze obsługi tego przerwania linijkę zapalającą tę diodę i dioda się nie zapaliła. Więc przerwanie w ogóle nie działa?

No a jak może być inaczej ? więc przyczyna gdzieś musi być wcześniej

_________________
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: 17 maja 2015, o 13:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 sty 2015
Posty: 60
Pomógł: 0

mirekk36 napisał(a):
maxus napisał(a):
Dodałem w procedurze obsługi tego przerwania linijkę zapalającą tę diodę i dioda się nie zapaliła. Więc przerwanie w ogóle nie działa?

No a jak może być inaczej ? więc przyczyna gdzieś musi być wcześniej

I już wiem gdzie.

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

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

I TYLE

Ale dlaczego nie było błędu w komplicji?

------------------------ [ Dodano po: 51 minutach ]

Ale to jak widać nie koniec. W książce cyfry wyświetlane są z tablicy w pamięci FLASH. Zrobiłem tak samo i zamiast cyfr mam na wyświetlaczach bliżej nieokreślone kształty.
Tablicę utworzyłem wewnątrz funkcji d_led_init() w pliku d_led.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W pliku d_led.h dodałem deklarację tablicy żeby mieć do niej dostęp w przerwaniu. Chyba dobrze myślę, że trzeba to zrobić?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


Na wyświetlaczach pokazuję się jakieś głupoty.
I jeszcze waringi
Kod:
../d_led.h:30:18: warning: array 'cyfry' assumed to have one element [enabled by default]

Kod:
../d_led.c:28:2: warning: '__progmem__' attribute ignored [-Wattributes]

Kod:
../d_led.c:31:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]
../d_led.c:32:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]
../d_led.c:33:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]
../d_led.c:34:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]
../d_led.c:35:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]
../d_led.c:37:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]
../d_led.c:38:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]


Zrobiłem nowy plik w, którym podałem segmenty do zapalenia i wszystko wyświetla się w porządku, więc wszystko jest dobrze podpięte.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2015, o 14:35 
Offline
Moderator
Avatar użytkownika

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

maxus napisał(a):
Ale dlaczego nie było błędu w komplicji?


bo tego typu wyrażenie w C (zresztą w innych językach podobnie) nie jest błędem - tylko ty o tym nie wiesz ... zobacz

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


to jest niby wg ciebie błąd ?

a będzie równe JEDEN jeśli c jest mniejsze od b w przeciwnym wypadku a będzie równe ZERO - rozumiesz ? to działa jak wyrażenie - jak każde wyrażenie w C, czyli wartością wyrażenia (c<b) będzie prawda lub fałsz. Ty o tym nie wiesz i jak popełnisz błąd przy ustawianiu bitów

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


;) no to już sam wiesz że to twoja wina ;)

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

ale widzę - że debuger na jednej diodzie LED już cię prowadzi na właściwe tory ;)

_________________
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: 17 maja 2015, o 14:52 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

No tak, przepraszam, że kolegę wprowadziłem w błąd mówiąc, że ustawienie przerwań jest ok!
Mam zalecone okulary do pracy przy komputerze, ale przez 99% czasu leżakują w futerale.
Widzę, że jednak trzeba się stosować do zaleceń.
Chociaż pewnie to też nie gwarantuje od razu wychwycenia takiej "drobnej" różnicy w kodzie :)



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

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