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



Teraz jest 29 sty 2025, o 03:47


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 11 mar 2014, o 12:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

Czy widzicie tu gdzieś błąd?
Przycisk na porcie PB2 powinien zmieniac zmienną setings_1 o 1 a procek zachowuje sie jak po restarcie czyli migają 3 dziody LED1 LED2 LED3.
Programuje dragonem w HVSP z RSTDISB
F_COU=1000000UL

Niby jest ok a nie działa.

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: 11 mar 2014, o 15:09 
Offline
Użytkownik
Avatar użytkownika

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

Nawaliłeś kodu i w sumie błąd może siedzieć nie w jednym a w kilku miejscach. Mówię tobie, ze testy etapami jest o wiele szybsze. W kilka dni napiszesz mega softa, działającego, albo w 3 godziny i będziesz szukał błędu tydzień, jeżeli jest jeden, a jak więcej to dwa itd.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2014, o 15:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2012
Posty: 177
Pomógł: 9

hmm, może użyj innej zmiennej dla Timer1 i Timer2, ale nie wiem czy to coś da



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2014, o 23:13 
Offline
Użytkownik

Dołączył(a): 02 lut 2014
Posty: 38
Lokalizacja: Jaworzno
Pomógł: 2

mickeu napisał(a):
Czy widzicie tu gdzieś błąd?
Przycisk na porcie PB2 powinien zmieniac zmienną setings_1 o 1 a procek zachowuje sie jak po restarcie czyli migają 3 dziody LED1 LED2 LED3.
Programuje dragonem w HVSP z RSTDISB
F_COU=1000000UL

Niby jest ok a nie działa.


Tak na szybko co mi przychodzi do głowy:

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


Zmienne inicjowane cholera wie na jaką wartość.
Sprawdź czy przerwanie wywołujesz tak często jak to jest potrzebne i czy nie używasz pinów do odczytu jak wyjście PWM.

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



Prościej zapisać tak:

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: 11 mar 2014, o 23:21 
Offline
Moderator
Avatar użytkownika

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

gordo napisał(a):
Zmienne inicjowane cholera wie na jaką wartość.


Nie żadna cholera - tylko każdy kto poznał podstawy języka C - wie doskonale o tym jaką wartością będą zainicjalizowane te zmienne i dlaczego będzie to zero.

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

gordo napisał(a):
Prościej zapisać tak:

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


to teraz sobie porównaj ilość kodu w asemblerze pomiędzy sposobem zaproponowanym przez ciebie a tym sposobem wcześniej , i do tego jeszcze policz CO NAJWAŻNIEJSZE wtedy czas wykonywania się jednego sposobu i drugiego - bo czas ma tu niebagatelne znaczenie, a wtedy zrozumiesz dlaczego nie zawsze "PROŚCIEJ" oznacza LEPIEJ albo WYDAJNIEJ ... 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: 12 mar 2014, o 00:38 
Offline
Użytkownik

Dołączył(a): 02 lut 2014
Posty: 38
Lokalizacja: Jaworzno
Pomógł: 2

mirekk36 napisał(a):
gordo napisał(a):
Zmienne inicjowane cholera wie na jaką wartość.


Nie żadna cholera - tylko każdy kto poznał podstawy języka C - wie doskonale o tym jaką wartością będą zainicjalizowane te zmienne i dlaczego będzie to zero.


Tak, znam założenia C. Ale nie do końca ufam kompilatorom ;).

Cytuj:
jeszcze policz CO NAJWAŻNIEJSZE wtedy czas wykonywania się jednego sposobu i drugiego - bo czas ma tu niebagatelne znaczenie, a wtedy zrozumiesz dlaczego nie zawsze "PROŚCIEJ" oznacza LEPIEJ albo WYDAJNIEJ ... ok ?


A czy ja napisałem, że tak będzie wydajniej ? PROŚCIEJ w sensie CZYTELNIEJ.
Co do czasu, który ponoć ma tu niebagatelne znaczenie - CZYTELNIEJ napisany kod zwiększa wynikówkę o ok. 30 cykli, co przy wywoływaniu przerwania co 1000 cykli nie ma znaczenia (samo przerwanie będzie miało do 100 cykli). A jeśli liczy się każda mikrosekunda to się pisze w asemblerze. Przy tak prostym programie kod napisany w asmie będzie szybszy i krótszy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 07:26 
Offline
Moderator
Avatar użytkownika

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

gordo napisał(a):
Ale nie do końca ufam kompilatorom


To w zasadzie po co w ogóle porgramować ? ;) może lepiej robić coś całkiem innego do czego się ma zaufanie. A tak na marginesie to że zmienne globalne są zerowane to nie kwestia wiary ;)

gordo napisał(a):
A jeśli liczy się każda mikrosekunda to się pisze w asemblerze. Przy tak prostym programie kod napisany w asmie będzie szybszy i krótszy.


Po tym co piszesz można tylko wyciągnąć wniosek że nie do końca jeszcze rozumiesz ideę timerów programowych i zasadę ich działania w aspekcie zależności tego mechanizmu od działania całego programu, dlatego tylko rozumiem że piszesz takie dziwne rzeczy. Ale myślę że gdy zrozumiesz - to jednocześnie będziesz miał nieco inne zdanie w tym zakresie ;)

_________________
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: 12 mar 2014, o 11:36 
Offline
Użytkownik

Dołączył(a): 02 lut 2014
Posty: 38
Lokalizacja: Jaworzno
Pomógł: 2

mirekk36 napisał(a):
gordo napisał(a):
Ale nie do końca ufam kompilatorom


To w zasadzie po co w ogóle porgramować ? ;) może lepiej robić coś całkiem innego do czego się ma zaufanie. A tak na marginesie to że zmienne globalne są zerowane to nie kwestia wiary ;)


Przykład z zerowaniem zmiennych faktycznie nie był najlepszy ;) ale kompilatory tworzą ludzie i nie są oni nieomylni.

Cytuj:
gordo napisał(a):
A jeśli liczy się każda mikrosekunda to się pisze w asemblerze. Przy tak prostym programie kod napisany w asmie będzie szybszy i krótszy.


Po tym co piszesz można tylko wyciągnąć wniosek że nie do końca jeszcze rozumiesz ideę timerów programowych i zasadę ich działania w aspekcie zależności tego mechanizmu od działania całego programu, dlatego tylko rozumiem że piszesz takie dziwne rzeczy. Ale myślę że gdy zrozumiesz - to jednocześnie będziesz miał nieco inne zdanie w tym zakresie ;)


Wow! to stwierdzenie jest tak ogólne, że nie wiadomo o co chodzi. Chętnie dowiem się czego nie rozumiem w kwestii używania timerów i jak to się ma do programu z pierwszego postu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 11:43 
Offline
Użytkownik
Avatar użytkownika

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

Witam
Antystatyczny napisał(a):
A nie powinno być ISR(TIMER1_COMPA_vect)?

...kol.mickeu nie odniósł się do tego, ale ten wektor
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

jest faktycznie dziwny.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 14:14 
Offline
Nowy

Dołączył(a): 25 sie 2013
Posty: 12
Pomógł: 2

Zastanów się co może się stać, jak nastąpi przerwanie od timera gdy będzie wykonywany np. ten fragment ;) (procek 8 bit)
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: 12 mar 2014, o 16:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

Witam wszystkich i jednocześnie chciałbym przeprosić za nie swoie winy>
Kod jest ok i śmiga jak szalały :)
Problemem był "kłaczek miedzi" o cieńszy od włosa pozostawiony przez firmę wykonującą płytki, "kłaczek" zwirał mase do +5 od procesora w momencie wciskania przycisku.
Pechem było to że owy "kłaczek" znajdował się pod kondensatorem tantalowym i do momentu wylutowania nie mogłem go znaleźć, znalazłem go używając lupy x20.

Dziekuje wszystkim za proby pomocy i jeszcze raz przepraszam za sytuacje jaka wyszła nie z mojej winy... ale wyszła.



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

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