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



Teraz jest 29 gru 2025, o 14:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 26 paź 2015, o 22:10 
Offline
Użytkownik

Dołączył(a): 08 kwi 2014
Posty: 30
Pomógł: 0

Witam,

do tej pory pisałem swoje programy w main. Przyszedł czas na zoptymalizowanie swojego kodu, żeby jakoś to wyglądało. Wiem, że ten program można by napisać w kilku linijkach w mainie, ale chciałem się nauczyć na najprostszym przykładzie Program działa, co mnie bardzo cieszy, ale chciałbym poznać waszą opinię. Domyślam się, że coś tam jeszcze jest nie tak. Tylko pytanie.. co?

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.


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


led_mig.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 paź 2015, o 22:20 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

  • extern volatile uint16_t Timer1; w led_mig.h niepotrzebny
  • brak #include "led_mig.h" w main.c
  • konfiguracje w funkcji mig_led - wydzielić do innej funkcji
  • #include <util/delay.h> w main.c niepotrzebne
  • makrodefinicje LED_* przenieść w led_mig.h do led_mig.c

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2015, o 22:29 
Offline
Użytkownik

Dołączył(a): 08 kwi 2014
Posty: 30
Pomógł: 0

konfiguracje w funkcji mig_led - wydzielić do innej funkcji???



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2015, o 22:36 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

No tak, ustawienie trybu, odblokowanie przerwania, a i w przważającejliczbie przypadków (np. w przedstawionym programie) ustawienie preskalera i rejestru OCRxy wystarczy zrobić RAZ, przed wejściem do pętli głównej.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2015, o 12:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 maja 2013
Posty: 432
Lokalizacja: Gostyń / Poznań
Pomógł: 25

A ja bym jeszcze wartość Timer1 zrobił jako parametr funkcji mig_led(x,y) i drugi parametr (y) który by zmieniał wartość rejestru OCRx i dawał możliwość wybrania czy ma mrugać co x sekund, milisekund itp...

_________________
Podpis...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 paź 2015, o 09:04 
Offline
Użytkownik

Dołączył(a): 28 paź 2015
Posty: 26
Pomógł: 0

Witajcie,
zmagam się właśnie z tym samym zagadnieniem i dioda nie mruga.
Możecie powiedzieć mi co robię źle?

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


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


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


Przy wklejaniu te dwa pierwsze include mi się tutaj na forum zjadają, a są one następujące:

#include <avr/io.h>
#include <util/delay.h>



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 paź 2015, o 09:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 maja 2013
Posty: 432
Lokalizacja: Gostyń / Poznań
Pomógł: 25

Wszystko pomotane ale szczególnie popatrz na linie 18 pliku dioda.c

_________________
Podpis...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 paź 2015, o 13:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Brak pętli while(1)

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 paź 2015, o 14:31 
Offline
Użytkownik

Dołączył(a): 28 paź 2015
Posty: 26
Pomógł: 0

nie wiem dlaczego przy kopiowaniu wiele znaków się nie przeniosło. W każdym bądź razie sytuację opanowałem, dzięki za uwagi.
Teraz borykam się z problemem LCD, jeśli możecie proszę zaglądnijcie tutaj topic13375.html
pzdr



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

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