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



Teraz jest 26 gru 2024, o 23:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
PostNapisane: 24 kwi 2013, o 18:39 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 20 kwi 2013
Posty: 13
Pomógł: 0

Witam.

Problem polega na tym, że po napisaniu pierwszego programu z poradnika Mirka (miganie diody) dioda się zapaliła i za nic w świecie nie moge jej zgasić. Używam programatora Usbasp oraz Atmegi 328p. Mkavr calculator wszystko ładnie wykrywa, eclipse skalibrowany jest wg. porad na blogu Mirka. Po odłączeniu i ponownym podpięciu programatora dioda od razu się zapala.

Z takich jeszcze innych informacji to:
-W Mkavr odkliknięty jest wewnętrzny podział zegara
-Eclipse ustawiony na 8MHz, mikrokontroler wybrany prawidłowo, wgrany najnowszy toolchain
-Dioda podpięta pod PB1
-Programator podpięty jest do płytki prawidłowo


Po wgraniu tego kodu do atmegi dioda na ułamek sekundy gaśnie i dalej ciągle świeci. Podejrzewam, że skoro
dioda na moment gaśnie to program jest 'wpakowywany' do mikrokontrolera, dlatego tym bardziej nie wiem co może być nie tak.

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


Wiem, że nie możecie już patrzeć na kolejne tego typu tematy ale niestety na forum nie znalałem niczego co pomogłoby mi rozwiązać ten irytujący problem.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 19:30 
Offline
Moderator
Avatar użytkownika

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

- a sprawdzałeś na innym pinie ?
- a sprawdzałeś na kilku innych pinach ?
- a sprawdzałeś połączenia ?
- programujesz w Eclipse? i pokazał ci się komunikat że wgrane OK ?

- czy uparłeś się na ten pin PB1 ?

pytam bo może po prostu podłączasz całkiem inny pin niż PB1 .... nie obrażaj się za taką podpowiedź ale już nie raz taki był powód podczas zgłaszania takich błędów :(

- dioda z rezystorem ?

- jakie zasilanie ?

.... wiesz im prostszy problem - jak tutaj tym bardziej błaha jest przyczyna niestety i dlatego tyle moich pytań o błahe rzeczy.

_________________
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: 24 kwi 2013, o 19:35 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

A czasem 1000 to nie jest za dużo dla tego makra?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 19:36 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

#ciamciak# napisał(a):
A czasem 1000 to nie jest za dużo dla tego makra?


Dlaczego za dużo? To jedna sekunda, wystarczy żeby cokolwiek zaobserwować.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 19:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 sty 2012
Posty: 131
Lokalizacja: Kraków
Pomógł: 2

kolego kod jest ok masz coś źle ustawione, skonfigurowane lub problem sprzętowy ( nawet kod wgrałem tak ze jest ok:))



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 19:41 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

@Jaglarz
Tak mi się obiło o uszy, ale teraz tak patrzę, że to chyba o precyzję chodziło:
Cytuj:
The maximal possible delay is 262.14 ms / F_CPU in MHz.
When the user request delay which exceed the maximum possible one, _delay_ms()
provides a decreased resolution functionality. In this mode _delay_ms() will work with
a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU
frequency). The user will not be informed about decreased resolution.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 19:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 sty 2012
Posty: 131
Lokalizacja: Kraków
Pomógł: 2

sprawdź czy kompilacja przebiegła pomyślnie czyli czy w konsoli nie ma błędów?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 19:58 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 20 kwi 2013
Posty: 13
Pomógł: 0

-Szczerze mówiąc to uparłem się na PB1 bo tak było na filmiku i nie jestem pewny czy do innych tak samo wszystko podpiąć;) jeżeli wpinam się np. pod PB2 to wszystko jest tak samo tylko w kodzie zmieniam na DDRB |= (1<<PB2); tak?
-połączenia sprawdzałem miernikiem, tzn dotykając pinów na układzie i na programatorze
-dioda podpięta w szeregu z rezystorem 1k
-po wgraniu programu do Atmegi dostaje komunikat
avrdude: verifying ...
avrdude: 182 bytes of flash verified
avrdude done. Thank you.
avrdude finished

-zasilanie z Usbasp



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 20:01 
Offline
Moderator
Avatar użytkownika

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

#ciamciak# napisał(a):
@Jaglarz
Tak mi się obiło o uszy, ale teraz tak patrzę, że to chyba o precyzję chodziło:
Cytuj:
The maximal possible delay is 262.14 ms / F_CPU in MHz.
When the user request delay which exceed the maximum possible one, _delay_ms()
provides a decreased resolution functionality. In this mode _delay_ms() will work with
a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU
frequency). The user will not be informed about decreased resolution.


Ja to chyba milion razy na elektrodzie wyjaśniałem, ale ok powtórzę jeszcze raz. Tzn najpierw pytanie - "A co ma wspólnego cytat, który pokazałeś z tym , że wg ciebie rzekomo nie można użyć _delay_ms(1000)?" hmmm

Otóż można to to nie jest żaden, nawet NAJMNIEJSZY problem, a że opóźnienie nie będzie niby równo 1000 ms co do jednej nanosekundy tylko np 1001ms albo niechby nawet 1010ms - to powiedz jakie to miałoby znaczenie dla użycia _delay_ms(1000)?

Przy okazji - nawet gdybyś użył _delay_ms( 200 ) - to i tak przy włączonych i działających przerwaniach możesz zapomnieć o tym czasie ;)

więc po raz kolejny - tym razem na naszym forum - rozprawiam się tym obijaniem o uszy ;)

Na pewno - jeśli już do takich kocich testów pierwszych używamy _delay_ms() to nie ma znaczenia czy dasz 100, 500, 1000 czy może 1500

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: 24 kwi 2013, o 20:01 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Wszędzie gdzie masz PB1 zmieniasz na PB2.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 20:03 
Offline
Moderator
Avatar użytkownika

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

breital napisał(a):
-Szczerze mówiąc to uparłem się na PB1 bo tak było na filmiku i nie jestem pewny czy do innych tak samo wszystko podpiąć;) jeżeli wpinam się np. pod PB2 to wszystko jest tak samo tylko w kodzie zmieniam na DDRB |= (1<<PB2); tak?


DOKŁADNIE tak ;)

może być i PB3 albo i PB5 ;)

sprawdź - dlatego że może się okazać że niestety to stykówka płata ci figle a nie program, który jak sam widzisz (kolega ci wyżej kolejny potwierdził poza mną w poradniku - że nie może NIEDZIAŁAĆ ;) )

_________________
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: 24 kwi 2013, o 20:17 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 20 kwi 2013
Posty: 13
Pomógł: 0

Wpiąłem drugą diodę z rezystorem pod PB2, w kodzie też zmieniłem na PB2 i rezultat jest taki sam. Dioda się zapala i nie gaśnie.
Wpisalem sobie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i obie sie zapalają ale wygląda to tak jakby program zupełnie omijał pętle while co jest tym bardziej irytujące

-Sprawdzilem jeszcze raz czy piny na programatorze odpowiadają tym na mikrokontrolerze i jest ok czyli raczej to nie w tym problem

EDIT:
I to jest właśnie to co w elektronice mnie najbardziej zadziwia. Kompletnie nic nie zmieniałem ani w kodzie ani w podpięciu i nagle wszystko ożyło. Moge sobię migać zarówna jedną jak i drugą diodą. Wybaczcie, że wam zawracałem głowę. Wracam do nauki ;)



Ostatnio edytowano 24 kwi 2013, o 20:36 przez breital, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 20:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

Skoro się zapal, to znaczy, że weszło do pętli. Napisz to porządnie:

int main(void)
{
DDRB = 0xff; //skoro masz tylko jedna diode to możesz cały port jako wyjscie ustawic
while(1)
{
PORTB |= (1<<PB0);
_delay_ms(1000);
PORTB &= ~(1<<PB0);
_delay_ms(1000);
}
return 0;
}
sprubuj tak. taki program jest najprostszy do napisania, aż dziwne, że sa problemy.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 21:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 kwi 2012
Posty: 108
Lokalizacja: Giżycko
Pomógł: 6

breital napisał(a):
-Eclipse ustawiony na 8MHz, mikrokontroler wybrany prawidłowo, wgrany najnowszy toolchain


A w mkAVR Calculator zmieniłeś na 8MHz, bo domyślnie jest chyba na 1??
Spróbuj zmienić tam albo w Eclipse na 1.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 21:16 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

breital napisał(a):
I to jest właśnie to co w elektronice mnie najbardziej zadziwia. Kompletnie nic nie zmieniałem ani w kodzie ani w podpięciu i nagle wszystko ożyło. Moge sobię migać zarówna jedną jak i drugą diodą. Wybaczcie, że wam zawracałem głowę. Wracam do nauki


Panowie, problem autor już rozwiązał ... ;-)

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2013, o 23:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 kwi 2012
Posty: 59
Pomógł: 1

Nic samo sie nie dzieje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2013, o 11:28 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

Mam pytanie, które trochę podchodzi pod ten temat, ale bardziej pod kwestię przerwań.
Czemu do działania przerwania w poniższym kodzie potrzebna jest pętla nieskończona w main()?
Wiem że sytuacja dość abstrakcyjna, ale ciekawi mnie co się dzieje z samym procesorem.
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 kwi 2013, o 11:43 
Offline
Moderator
Avatar użytkownika

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

Pomyśl sobie - przerwania działają własnym życiem - wykonują się ciągle w tym przypadku akurat.

A pętla nieskończona to inaczej pętla główna programu.

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 miejsce gdzie procesor nic nie robi ;) .... pewnie zastanawiasz się po co to pisać ? Związane jest to z programowaniem na PC, gdzie masz np jakiś system operacyjny. Np Windows ;) ... i pomyśl sobie jak odpalasz program to on działa dotąd dokąd działa taka pętla główna, potem gdy kończy swoją działalność to co ??? no to zwraca pamięć i sterowanie do systemu operacyjnego ....

a w mikrokontrolerze ? masz jakiś system operacyjny ?? no chyba nie - przawda ? ;) więc program musi pozostawać w pętli nieskończonej - po prostu nigdy się nie skończy - zawsze będzie w niej biegał do us...markanej śwmierci procka ;)

I nawet jak taki początkujący programista jak ty - sobie eksperymentuje i nie da tej pustej pętli programu - to kompilator zobaczy .... pomyśli "aaaaa nie ma pętli głównej - pewnie jakiś początkujący programista ;) ... hmmm no nic zrobię to za niego"

tak tak - kompilator i tak wygeneruje kod w asemblerze który będzie robił to:

ptl: jmp ptl

czyli wciąż skok do miejsca ptl a tam jest rozkaz skoku do miejsca ptl itd itd

tyle że każdy z ludzi (nie kompilator) który zobaczy taki kod - to pozna również że to pisał początkujący.

Zresztą obejrzyj sobie ten poradnik proszę i zobacz jaki ja ZAWSZE robię sobie szablon gdy tworzę nowy projekt

http://mirekk36.blogspot.com/2013/04/ec ... ablon.html

jak widzisz - nie może zabraknąć miejsca na

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


a później ew w miarę potrzeb wypełniam tę pętlę nieskończoną czyli piszę program jaki będzie realizowany przez procesor ;)

_________________
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: 28 kwi 2013, o 11:56 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

mirekk36 napisał(a):
I nawet jak taki początkujący programista jak ty - sobie eksperymentuje i nie da tej pustej pętli programu - to kompilator zobaczy .... pomyśli "aaaaa nie ma pętli głównej - pewnie jakiś początkujący programista ;) ... hmmm no nic zrobię to za niego"

Czyli doda sam, czy nie doda?
Bo z symulacji wynika że licznik programu się zatrzymuje, czyli jakby kompilator nic nie dodawał.

EDIT:
OK, sprawdziłem z samym while(1) i też się zatrzymuje.
Myślałem że ten skok będzie na tym liczniku widoczny.
Dzięki za odpowiedź.



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

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO