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



Teraz jest 20 sty 2026, o 06:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 25 lip 2014, o 10:50 
Offline
Nowy

Dołączył(a): 24 lip 2014
Posty: 24
Pomógł: 0

Witam. Dopiero zacząłem przygodę z programowaniem uC. Zmontowałem układ na płytce stykowej z wykorzystaniem atmega8 i napisałem program, który zlicza do 90 wyświetlając kolejne liczby, następnie zapala się dioda LED, znowu zlicza do 90 i znowu zapala się dioda LED. Dzieje się tak póki wszystkie 4 diody LED nie zostaną zaświecone.

Dalej w ramach "a co jeśli?" podłączyłem przekaźnik 5V sterowany tranzystorem npn C945. Przekaźnik przez czas zliczania był załączony. Po czterokrotnym zliczeniu do 90 przekaźnik wyłączał się.

Dołączyłem do PC5 diodę LED, żeby nauczyć się obsługi nieużywanych pinów portu C mino przesunięcia bitowego, które tam jest. Na początek dla sprawdzenia wpisałem zwykłe polecenie wyłączające diodę na koniec programu. Zaraz po wgraniu uC padł i przejął rolę grzejnika podłączanego na USB.

Na czas programowania odłączałem zworkę J1, ponieważ cześć pinów portu B służy do programowania i przy próbie wgrania wsadu wyskakiwał błąd.

Mam takie pytanio-prośbę w zasadzie. Chodzi mi o wytłumaczenie co zrobiłem źle. Czy uszkodzenie uC było spowodowane zbyt dużym prądem spływającym do niego ze wszystkich diod LED, czy w jakiś sposób tą ostatnią instrukcją, którą dodałem, a może jeszcze czymś innym? Zanim dodałem diodę do pinu PC5 mimo mojego kombinowana z kodem na wszystkie strony atmedze nic nie było.

Obrazek


plik 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.


plik 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.

_________________
ATB 1.04 + BTM-222 + BLUEBOOK + GREENBOOK



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 11:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sty 2013
Posty: 328
Lokalizacja: Rzgów k. Łodzi
Pomógł: 11

Jestem prawie pewien, że żywot procesora został skończony przez szpilkę z cewki przekaźnika. A wystarczyła 1 dioda 1N4841 i nie byłoby "tragedii" :P

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lip 2014, o 11:21 
Offline
Moderator
Avatar użytkownika

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

PawelGaj napisał(a):
Jestem prawie pewien, że żywot procesora został skończony przez szpilkę z cewki przekaźnika. A wystarczyła 1 dioda 1N4841 i nie byłoby "tragedii" :P


Dokładnie - dlatego warto zaglądać na blog ... a w tym konkretnym przypadku szczególnie tutaj:

http://mirekk36.blogspot.com/2012/04/pr ... cenia.html

_________________
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: 25 lip 2014, o 12:06 
Offline
Nowy

Dołączył(a): 24 lip 2014
Posty: 24
Pomógł: 0

Rozebrałem układ w drobny mak. Wykonałem minimalne podłączenie atmegi8 żeby sprawdzić czy mkAVRCalculator go odczyta. I udało się :D
Zmontowałem układ jeszcze raz i działa :D Wychodzi na to, że coś gdzieś musiało zewrzeć. Dziwie się, że uC nadal działa. Był tak gorący, że nie szło się go dotknąć. Dziękuję za odpowiedź i nakierowanie na ten post. Dioda zabezpieczająca dodana :)

_________________
ATB 1.04 + BTM-222 + BLUEBOOK + GREENBOOK



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lip 2014, o 18:18 
Offline
Nowy

Dołączył(a): 24 lip 2014
Posty: 24
Pomógł: 0

Z tego co ja tu widzę to tak jest. Teraz, gdy wgrywa się program to "zaskakuje" on dopiero za którymś razem. Jeśli nie zaskoczy to realizowany jest poprzedni wgrany program:/

_________________
ATB 1.04 + BTM-222 + BLUEBOOK + GREENBOOK



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lip 2014, o 00:27 
Offline
Użytkownik
Avatar użytkownika

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

Witam
Ja w sprawie schematu:
-jeśli LED'y są typowo "sygnalizacyjne" to ich rezystory 100R są stosunkowo za małe; proponuję od 180R wzwyż.
-mógłbyś słownie opisać podłączenie wyświetlaczy LED - jeden rezystor na wspólną ANODĘ ??

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lip 2014, o 11:28 
Offline
Nowy

Dołączył(a): 24 lip 2014
Posty: 24
Pomógł: 0

Co do rezystorów 100R zgadza się. Przez diody płynąłby wtedy maksymalny dopuszczalny prąd, a w sumie po co jeśli mają sygnalizować, a nie oświetlać pomieszczenie. Zmienione na 470R i zamiast 16mA, płynie 5mA :) Dałem rezystor na anodę, żeby zaoszczędzić miejsce na płytce. Dobrałem go tak, żeby w przypadku świecenia tylko jednego z 7 segmentów nic mu się złego nie stało.

Teraz robię zabawkę. Wyświetlacz jest multipleksowany i wskazuje odliczanie do 60 sekund. Są 4 diody LED, które sygnalizują liczbę możliwych prób. W ciągu tych 60 sekund trzeba przeciągnąć kluczyk przez drut zawijas. Każde jego dotknięcie powoduje zgaszenie jednej diody LED. Jeśli nie zmieścimy się w czasie to też przegrana i wtedy wszystkie LEDy gasną. Dodam jeszcze buzzer i jakieś efekty specjalne :D Zobaczy się co z tego wyjdzie. Gdy skończę to wrzucę kod tutaj. Może się komuś przyda, a jeśli popełnię w kodzie jakieś błędy to mnie także wskazówki się przydadzą:)

Pozdr.

_________________
ATB 1.04 + BTM-222 + BLUEBOOK + GREENBOOK



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lip 2014, o 17:41 
Offline
Nowy

Dołączył(a): 24 lip 2014
Posty: 24
Pomógł: 0

Napisałem coś takiego. Nie mogę się doszukać czemu po tym jak zliczy do 60 zamiast od razu zatrzymać się na 60 przez chwilę wygasza segment dziesiątek i pokazuje jeszcze cyfrę 9 w jednościach.

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


inicjalizacja.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć 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.

_________________
ATB 1.04 + BTM-222 + BLUEBOOK + GREENBOOK



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lip 2014, o 20:29 
Offline
Użytkownik
Avatar użytkownika

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

Powodem takiego zachowania jest funkcja beep() wewnątrz przerwania. W czasie obsługi jakiegoś przerwania blokowane są inne przerwania. Twoja funkcja beep() wewnątrz przerwania trwa ok. 2,5 sekundy. Przez ten czas zablokowane jest przerwanie multipleksowania wyświetlacza. I dlatego po doliczeniu do 60 szwankuje ci wyświetlanie.

Usuń funkcję beep() z przerwania i zobacz, że wyświetlanie zacznie działać poprawnie.

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

powinno być
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: 28 lip 2014, o 21:52 
Offline
Nowy

Dołączył(a): 24 lip 2014
Posty: 24
Pomógł: 0

Faktycznie. Raz, że "utill" a dwa to filmik "Przerwania dla początkujących cz.1" daje o sobie znać z tym dilejem w funkcji obsługującej przerwanie.

Dzięki :)

Wyrzuciłem beepa z przerwania, a sygnalizację upływu czasu zrealizowałem trochę inaczej i śmiga.

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

_________________
ATB 1.04 + BTM-222 + BLUEBOOK + GREENBOOK



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2014, o 15:17 
Offline
Użytkownik
Avatar użytkownika

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

Witam
hoolgarez182 napisał(a):
Dałem rezystor na anodę, żeby zaoszczędzić miejsce na płytce

...a nie drażni Cię, że dla "1" cały wyświetlacz świeci jaśniutko a przy "8" znacznie ciemnieje?
Może te dodatkowe siedem rezystorów gdzieś upchasz.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2014, o 16:32 
Offline
Nowy

Dołączył(a): 24 lip 2014
Posty: 24
Pomógł: 0

Gdybym miał ten projekt tak na amen wykonać na płytce PCB to tak bym zrobił, ale w tym przypadku idzie się jakoś przyzwyczaić do tego efektu disko. Chociaż gorzej, gdy w pokoju jest zgaszone światło :D Ale......... Wciągnęło mnie programowanie uC. Dłubię w Eclipse od kilku dni i co raz więcej rzeczy staje się jasnych. Na próbę zassałem niebieską książkę z internetów i spodobała mi się bardzo. Zamówiłem dzisiaj zestaw TAURUS i nie mogę się doczekać kiedy przyjdzie:D Będę mógł iść dalej z materiałem zamiast tracić czas na łączenie obwodu na stykówce i dumanie nad tym czemu coś nie chodzi, a później się okazuje że wpiąłem kabelek nie do tego styku co trzeba bo błąd paralaksy się wkradł:D

_________________
ATB 1.04 + BTM-222 + BLUEBOOK + GREENBOOK



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO