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



Teraz jest 18 paź 2019, o 12:02


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 17 wrz 2019, o 16:08 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 31 sty 2014
Posty: 24
Lokalizacja: Leżajsk
Pomógł: 1

Problem masz w tym, że kompilator (a raczej linker) dwa razy "przetwarza" funkcję rozjasnianiesciemnianie(). Nie dodaje się plików z rozszerzeniem .c za pomocą #include. Kompilator jedzie po kolei z wszystkimi plikami o rozszerzeniu .c, a więc rozjasnianiesciemnianie.c, gdzie znajduje w.w. funkcję, a następnie main.c, który również includuje plik z tą funkcją. Dlatego widzi ją dwa razy i wyrzuca błąd. Rozwiązaniem jest wyciągnięcie deklaracji tej funkcji do pliku nagłówkowego, np rozjasnianiesciemnianie.h:

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


A następnie w obu plikach .c wklejamy powyższy plik za pomocą #include
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Dodatkowa moja sugestia jest taka, że wyrzucanie zawartości całego main() do osobnej funkcji, razem z główną pętlą while(), niejako mija się z celem. Lepiej byłoby rozbić to na dwie funkcje, np inicjalizacja_sciemniacza() i petla_sciemniacza().


Autor postu otrzymał pochwałę


Ostatnio edytowano 17 wrz 2019, o 16:13 przez Barthap, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2019, o 18:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1653
Lokalizacja: Lipsko
Pomógł: 117

No to teraz w ramach treningu zmodyfikuj swój program i zrób coś z tą litanią w przerwaniach :)
Sprawa jest dość prosta, bo wykorzystujesz jednen pełny port. Zyskasz sporo bajtów :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2019, o 07:42 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 08 wrz 2015
Posty: 288
Lokalizacja: Zamość
Pomógł: 7

karolina-mat napisał(a):
A teraz jak działa, to boję się ruszać, bo przecież DZIAŁA! :)

Tylko jak się zrobi optymalizacje, kod będzie mniej zajmował, warto od początku to stosować, szczególnie - że niektóre projekty praktycznie w całości zajmą pamięć. Również dzięki temu, bardziej się jeszcze uczymy :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2019, o 08:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1653
Lokalizacja: Lipsko
Pomógł: 117

Utwórz drugi projekt i skopiuj tam to co masz i kombinuj na kopii :) Zamiast pwm1...pwm5 użyj tablicy pwm[x].
Do wskazywania właściwego bitu w porcie przyda Ci się znajomość operacji bitowych.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2019, o 09:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1653
Lokalizacja: Lipsko
Pomógł: 117

Hmm... Widzę, że brak u Ciebie podstaw nt. tablic. Jeśli nie masz jeszcze BB gdzie Mirek ładnie to opisuje to kup czym prędzej, a póki co w necie można o tablicach w C poczytać.

_________________
http://www.sylwekkuna.com



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

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