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



Teraz jest 2 gru 2024, o 13:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 26 sty 2016, o 07:50 
Offline
Użytkownik

Dołączył(a): 02 sty 2016
Posty: 34
Lokalizacja: Godziesze Wielkie
Pomógł: 0

Witam kolegów,

jestem na rozdziale o wyświetlaczach LED w BB, gdy utworzyłem biblioteki d_lec.c i d_led.h, w tej pierwszej Eclipse podświetla mi błąd dotyczący Ustawień Timera0 jak i procedury obsługi przerwania. Dodam, że zawsze kiedy chciałem dodać obsługę przerwania lub ustawić Timery, podświetlały mi się właśnie te linijki i wyskakiwały błędy.

Obrazek

Obrazek

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 08:20 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Jaki uc?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 08:24 
Offline
Użytkownik

Dołączył(a): 02 sty 2016
Posty: 34
Lokalizacja: Godziesze Wielkie
Pomógł: 0

ATmega644P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 08:28 
Offline
Moderator
Avatar użytkownika

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

dominiv2604 napisał(a):
ATmega644P

A kod w książce z DVD na jaki procek był przygotowywany ? sprawdziłeś ?

Już pomijam, że co chwilę w książce piszę, że pracuję na ATmega32 ....

A więc to oczywiste, i o tym też piszę w książce, że trzeba sobie kod dostosować do innego procka jeśli innego używasz. Wspominam w książce niejednokrotnie że należy mieć przed sobą dwie noty PDF jedną od ATmega32 (bo na tą są głównie przykłady w Bluebooku) i drugi PDF do swojego procka. Porównać nazwy rejestrów i bitów w rejestrach a także np nazwy wektorów przerwań.

Takie przenoszenie kodu to bardzo przydatne ćwiczenia i nie ma co się ich bać. Ale jeśli komuś zależy na tym aby najpierw zobaczyć, że kod z książki działa i jak działa .... aby później spokojnie go przenosić - i porównywać - no to wypada chyba też najpierw sprawdzić go tak jak został napisany i dla procka który był celem prawda?


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: 26 sty 2016, o 08:44 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

To wszystko jasne;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 16:00 
Offline
Użytkownik

Dołączył(a): 02 sty 2016
Posty: 34
Lokalizacja: Godziesze Wielkie
Pomógł: 0

Dziękuję serdecznie Panie Mirku. Pana porada + 3 godziny rozmyśleń, prób i błędów pomogły! :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 17:29 
Offline
Użytkownik

Dołączył(a): 02 sty 2016
Posty: 34
Lokalizacja: Godziesze Wielkie
Pomógł: 0

Mam jeszcze pytanie, jak wyświetlić np "1" na pierwszym wyświetlaczu? Co trzeba wpisać w pętli głównej while?

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.


Gdy uruchomiłem program Pana Mirka, migały mi przypadkowe segmenty na wszystkich wyświetlaczach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 19:12 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

Jak chcesz na wyświetlaczu nr1 to do zmiennej cy1 jak na wyświetlaczu nr2 to cy2 i tak dalej. Spróbuj przenieść definicje zmiennych znajdujących się w main przed pętlę while.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 20:15 
Offline
Użytkownik

Dołączył(a): 02 sty 2016
Posty: 34
Lokalizacja: Godziesze Wielkie
Pomógł: 0

Problem ma się następująco. Kiedy próbuje na wszystkich wyświetlaczach wyświetlić jednakową cyfrę wówczas udaje się to, kiedy inne. To wyświetlają się na wszystkich jednakowe cyfry tylko inne niż miałem zamiar wyświetlić.


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.


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: 26 sty 2016, o 20:32 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

jak chcesz tak robić to musisz definicje tablicy cyfry[] dać w pliku .h (eclipse nie wywala ci błędów?)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 21:48 
Offline
Użytkownik

Dołączył(a): 02 sty 2016
Posty: 34
Lokalizacja: Godziesze Wielkie
Pomógł: 0

Rozumiem, że chodziło o deklaracje w pliku d_led.h. Wykonałem deklaracje, faktycznie wcześniej Eclipse przypominał mi o błędzie. Teraz błędu nie ma, ale wyświetlacz działa tak samo jak przedtem.

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

To na wszystkich wyświetlaczach są "8"



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


Wyświetlacz reaguje prawidłowo i wyświetla na wszystkich pozycjach "6"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 21:57 
Offline
Moderator
Avatar użytkownika

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

panie panie ale co ty wpisujesz ? ... ja myślę, że musisz jednak wrócić troszkę wcześniej do książki i poczytać co to jest DEFINICJA a co to jest DEKLARACJA - bo jak wiesz w książce przypominam o tym wielokrotnie, że jak ktoś nie zrozumie tego i czym się to różni to będzie wciąż błądził i babole robił

po coś ty się upadł na tą tablicę dziwną do której nawet żadnych wartości nie wpisujesz, nawet na razie widzę zapomniałeś że zmienne globalne są inicjowane zerem stąd w każdym elemencie tablicy jest zero no chyba że gdzieś indziej zdefiniowałeś - o ile w ogóle zdefiniowałeś bo ty zamiast pokazywać swój kompletny kod z pliku main.c to pokazujesz tylko jakieś fragmenty z main.c które nic nie mówią co ty tam wyprawiasz

poza tym wiesz do czego jest pętla główna ? też czuję że nie bo miliard razy na sekundę wpisujesz coś w tej pętli - to wprawdzie nie ma znaczenia i nie ma wpływu na to czy ci działa czy nie no ale warto wiedzieć co się robi

zrób że sobie tak jak to opisuję w książce czyli np


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

_________________
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: 26 sty 2016, o 22:08 
Offline
Użytkownik

Dołączył(a): 02 sty 2016
Posty: 34
Lokalizacja: Godziesze Wielkie
Pomógł: 0

Dodałem do main.c, to co Pan podał, lecz ciągle jest to samo. Świecą się wszystkie segmenty na wszystkich wyświetlaczach.
Oto moje kompletne pliki:

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: 26 sty 2016, o 22:14 
Offline
Użytkownik
Avatar użytkownika

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

A dlaczego na początek nie zrobisz tak jak jest w BB? Masz kilka błędów w przerwaniu. Pomijam już ten dziwny sposób z tablicą cyfry[], który ty stosujesz.

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

Skoro katody masz na czterech najmłodszych bitach to ta linia powinna 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.

W zmiennej licznik powinieneś wyzerować cztery najstarsze bity.

W zmiennej licznik przesuwasz jedynkę w lewo. Zmienna ta będzie przyjmować wartości 1, 2, 4, 8
0b00000001
0b00000010
0b00000100
0b00001000

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


------------------------ [ Dodano po: 4 minutach ]

A w while napisz tak
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łę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 22:23 
Offline
Użytkownik

Dołączył(a): 02 sty 2016
Posty: 34
Lokalizacja: Godziesze Wielkie
Pomógł: 0

Dziękuję, robiłem ten przykład z BB, i przepisywałem każdą linijkę więc pewnie wkradł się mały błąd niezauważenie.
Teraz wszystko działa jak należy.

------------------------ [ Dodano po: 2 minutach ]

Hmmm, a gdy wpisałem do while to co mi kazałeś po rozświetlały się losowe segmenty

------------------------ [ Dodano po: 22 minutach ]

Dobra dziękuję serdecznie wszystkim za okazaną pomoc. Już zrozumiałem na czym to polega! :)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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