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



Teraz jest 30 mar 2026, o 12:43


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 33 ]  Przejdź na stronę Poprzednia strona  1, 2
Autor Wiadomość
PostNapisane: 6 sty 2015, o 15:44 
Offline
Użytkownik

Dołączył(a): 30 sie 2012
Posty: 226
Pomógł: 11

Krauser napisał(a):
To co w pętli while(1) masz pomiędzy ////////////////////////ADC//////////////////// przenieś sobie do nowej funkcji void pomiar_napiecia(void), a następnie wywołaj ją w tym miejscu, gdzie to się znajdowało oraz dodatkowo przed pętlą while(1) np. zaraz przed sei();


Zrobiłem coś takiego i teraz pomiar napięcia nie wyświetla się:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Proszę jeszcze o sprawdzenie funkcji void pomiar_napiecia(void).
Z pewnością popełniam gdzieś błąd...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2015, o 18:10 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Krauser napisał(a):
To co w pętli while(1) masz pomiędzy ////////////////////////ADC//////////////////// przenieś sobie do nowej funkcji void pomiar_napiecia(void)

To robi się w ten sposób, że na samym końcu pliku main.c dopisujesz nową funkcję.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Funkcji nie tworzy się w innej funkcji. Funkcja to spis rzeczy do zrobienia, które wygodnie jest sobie gdzieś wydzielić i oznaczyć nazwą, a wtedy można tego użyć wielokrotnie. I tak się robi:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Krauser napisał(a):
a następnie wywołaj ją w tym miejscu, gdzie to się znajdowało oraz dodatkowo przed pętlą while(1) np. zaraz przed sei();

Wywołanie funkcji nigdy nie ma w sobie void, czy innych typów.
Funkcję określa 3 rzeczy na początku to co zwraca:
- liczbę wtedy rozpoczyna się od nazwy typu tak jest w funkcji pomiar:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

- nic wtedy jest słowo void jak w funkcji pomiar_napiecia:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Potem nazwa. Dowolny ciąg liter,cyfr i _
Następnie w nawiasach to co funkcja przyjmuje. Typ i nazwa, którą będziemy posługiwali się w tej funkcji. Jeśli funkcja nic nie przyjmuje to piszemy void

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

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

To co umieściłeś błędnie przed sei(); w miejscu wywołania to jest prototyp/deklaracja funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Umieszcza się to gdzieś powyżej innych funkcji, które będą tą funkcję wywoływać, aby podczas czytania pliku z góry na dół kompilator wiedział, że taka funkcja gdzieś jest i nie krzyczał jak zobaczy wywołanie, że takiej funkcji nie zna.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2015, o 20:34 
Offline
Użytkownik

Dołączył(a): 30 sie 2012
Posty: 226
Pomógł: 11

Teraz wszystko działa, jak powinno.
Kod programu jest następujący:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dziękuję bardzo za pomoc udzieloną :)



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: 33 ]  Przejdź na stronę Poprzednia strona  1, 2

Strefa czasowa: UTC + 1


Kto przegląda forum

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