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



Teraz jest 12 lut 2026, o 21:14


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 7 lis 2015, o 17:00 
Offline
Nowy

Dołączył(a): 25 sie 2015
Posty: 6
Pomógł: 0

Dobry wieczór,
chcąc nauczyć się programowania mikrokontrolerów AVR wypożyczyłem "Bluebooka" z biblioteki i po przeczytaniu teorii zacząłem pracę warsztatową. Utknąłem na 4-cyfrowym 7-segmentowym wyświetlaczu LED ze wspólną anodą. Wzorując się na kodzie książkowym (zasadniczo przepisując kod z książki) i próbując przerobić go w odpowiednich miejscach dla Atmegi 8 napotkałem na problem, którego nie potrafię rozwiązać. Mianowicie próbując wyświetlić liczbę "1 2 3 4" otrzymuję liczbę "2 3 4 nic". Dodatkowo środkowe segmenty (Segment G) w wyświetlanych cyfrach nie świecą się(przykładając go dla testu do masy świeci). Atmegę zasilam z programatora USB ASP, natomiast wyświetlacz z ładowarki sieciowej, masy są połączone ze sobą. Segmenty od A do G podłączyłem po kolei do pinów PORTu C zaczynając od PC0, a kończąc na PC6. Katody wyświetlacza podłączone są natomiast do PORTu D w kolejności od PD1 do PD4. Układ jest filtrowany zgodnie z zaleceniami Pana Mirosława.
Kod 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.

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.

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.

EDIT: Poprawione, przepraszam za niedoczytanie. :)



Ostatnio edytowano 7 lis 2015, o 17:39 przez arkopolo, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2015, o 17:22 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8630
Pomógł: 338

zastosuj się do topic7402.html

------------------------ [ Dodano po: 45 minutach ]

arkopolo napisał(a):
Atmegę zasilam z programatora USB ASP, natomiast wyświetlacz z ładowarki sieciowej, masy są połączone ze sobą.


przede wszystkim zasilaj wszystko z ładowarki , i nigdy nic nie zasilaj z programatora.
Oczywiście wiesz że indexy z tablic czytasz od 0 ...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2015, o 19:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
arkopolo napisał(a):
PORTu C zaczynając od PC0, a kończąc na PC6

...wiec tu mamy problem ponieważ pod PC6 czai się RESET.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2015, o 19:15 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8630
Pomógł: 338

tak PC6 to poważny problem ...
zmień na inny port i będzie po sprawie zapewne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2015, o 21:10 
Offline
Nowy

Dołączył(a): 25 sie 2015
Posty: 6
Pomógł: 0

SunRiver napisał(a):
przede wszystkim zasilaj wszystko z ładowarki , i nigdy nic nie zasilaj z programatora.
Oczywiście wiesz że indexy z tablic czytasz od 0 ...


Zasilanie poprawiłem. Znam tę właściwość tablic, ale nie widzę, żeby tu było coś niepoprawnie zaimplementowane. :)

kicajek napisał(a):
...wiec tu mamy problem ponieważ pod PC6 czai się RESET.


Faktycznie, przeniosłem segmenty na PORT B i już ładnie widać "2 3 4 nic" :) Zmyliło mnie to, że Pan Mirosław używał pinu PC6, ale teraz dopiero widzę, że w Atmedze 32 reset jest w innym miejscu niż w Atmedze 8.

Niestety liczba nadal jest przesunięta o jedno miejsce w lewo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2015, o 23:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
arkopolo napisał(a):
"1 2 3 4" otrzymuję liczbę "2 3 4 nic"

Z tego co ja rozumiem to one nie są przesunięte, tylko nie masz podłączonego pierwszego wyświetlacza. Gdyby były przesunięte, to miałbyś 2; 3; 4; 5.
arkopolo napisał(a):
... że w Atmedze 32 reset jest w innym miejscu niż w Atmedze 8.

fajne :)

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2015, o 23:18 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Sprawdź dokładnie podpięcia wyprowadzeń do mikrokontrolera z tym, co masz w kodzie i w datasheet twojego wyświetlacza. Prawdopodobnie w tym problem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 09:54 
Offline
Nowy

Dołączył(a): 25 sie 2015
Posty: 6
Pomógł: 0

kicajek napisał(a):
fajne

Śmiejesz się mistrzu i w sumie jest z czego, ale mając styczność jedynie z atmegą 8 to nie było dla mnie takie oczywiste :P Swoją drogą, czy pin PC6 w atmedze 8 ma jakieś zastosowanie, tak żeby nie wadził z resetem?

HomoChemicus napisał(a):
Sprawdź dokładnie podpięcia wyprowadzeń do mikrokontrolera z tym, co masz w kodzie i w datasheet twojego wyświetlacza. Prawdopodobnie w tym problem.

Sprawdzone, nie widzę błędu. PD1->D1; PD2->D2; PD3->D3; PD4->D4

Antystatyczny napisał(a):
Sprawdź i daj znać

Sprawdziłem i efekt przy wprowadzonych cyfrach "1 2 3 4" jest "2 3 4 4"

EDIT: DZIAŁA
Śmieszna sprawa i w sumie nadal nie jestem pewien konkretnie dlaczego to działa, chociaż przypuszczam, że to coś z przesunięciem jest powiązane. Otóż przełożyłem piny o jedno miejsce do tyłu tj. PD0->D1; PD1->D2; PD2->D3; PD3->D4 i pozostawiłem oryginalne
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Efekt jest taki, że ładnie wyświetla cyfry 1 2 3 4 :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 10:28 
Offline
Użytkownik

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

Przedefiniuj sobie ANODY na D0-D3.
Zmień połaczenia i będzie ok wg mnie.
Zwróć uwagę na "licznik" - 1 jest na zerowym bicie (pinie), którego nie masz podłączonego.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 12:00 
Offline
Nowy

Dołączył(a): 25 sie 2015
Posty: 6
Pomógł: 0

A, to dlatego.. Dziękuję za pomoc. Korzystając z okazji, odpowie mi ktoś na pytanie dotyczące pinu PC6 w Atmedze 8? Jakie może być jego wykorzystanie, żeby nie wadził z resetem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 12:09 
Offline
Użytkownik
Avatar użytkownika

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

Jeśli korzystasz z programowania ISP to pin PC6 to reset i tylko reset. Jeśli zmienisz jego funkcję na zwykły pin I/O to wtedy stracisz możliwość programowania procka "zwykłym' programatorem ISP.
Wtedy pozostanie ci tylko programator równoległy aby moc zaprogramować procka albo przywrócić pinowi PC6 funkcję resetu.

Tak więc jeśli używasz np. Usbasp to zostaw ten pin w spokoju.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 12:37 
Offline
Nowy

Dołączył(a): 25 sie 2015
Posty: 6
Pomógł: 0

Ok, dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lis 2015, o 16:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
arkopolo napisał(a):
...Śmiejesz się mistrzu i w sumie jest z czego, ale mając styczność jedynie z atmegą 8...

Ja nie napisałem tak aby się wyśmiewać, po prostu wpadło mi w oko Twoje określenie na inny PIN RESET.

Pozdr.



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 1 gość


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