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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 19 cze 2025, o 21:13


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 30 kwi 2012, o 21:51 
    Offline
    Nowy

    Dołączył(a): 11 kwi 2012
    Posty: 4
    Pomógł: 0

    Witam.
    Jestem nowy więc może od razu mnie nie zlinczują:)

    Mam taki problem. Zaczynam się uczyć programowania i o ile przykłady z książki działają bez większych problemów o tyle kiedy próbuje napisać coś samemu działa to średnio albo wcale. Czytam kolejny raz książkę i za każdym razem rozumiem coś więcej jednak nie potrafię zrozumieć schematu działania przy pisaniu programów.

    Chce zbudować sobie prosty generatorek. Jeden przebieg ze stałą częstotliwością. Napisałem coś takiego:

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

    I tu rodzi się pytanie co dalej?? Czego tu brakuje i Co trzeba wstawić??
    O ile definicje czy deklaracje są jasne, definiowanie portu I/O też o tyle same pętle i to co ma w nich być już nie bardzo.

    Znaczniki do źródeł wstawiłem. Uźywaj proszę znacznika Syntax :) SunRiver



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 kwi 2012, o 22:01 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    pętla kolego w skrócie to to taka funkcja która zawarte w swoim ciele instrukcje wykonuje w koło (cały czas)

    czyli we wskazanym miejscu jeśli to konieczne musisz wpisac poprostu co ma robic twój program.
    inaczej mówiąc chcesz by twój generatorek generował np przebieg prostokatny o czestotliwości np 10Hz
    cały czas , wieć wpisujesz to w ciele pętli , i pętla sie kreci dookoła :) duzy skrót , ale może cos ci rozjaśni
    bo pętle też sa rózne :)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 kwi 2012, o 22:10 
    Offline
    Nowy

    Dołączył(a): 11 kwi 2012
    Posty: 4
    Pomógł: 0

    Dzięki za błyskawiczną odpowiedź. Widać nie tylko ja siedzę po nocach. Nie chodzi mi o to co robi pętla bo to już wyczytałem i wiem. Chodzi mi o to co do niej wpisać.. W tym przypadku chciałbym mieć na pinie PB3 przebieg o częstotliwości która sobie ustawiłem. Chodzi mi o to że nie wiem jak ma wyglądać czy to pętla czy cała funkcja żeby działała tak jak chcę...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 kwi 2012, o 22:39 
    Offline
    Moderator
    Avatar użytkownika

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

    Techniczny napisał(a):
    Dzięki za błyskawiczną odpowiedź. Widać nie tylko ja siedzę po nocach. Nie chodzi mi o to co robi pętla bo to już wyczytałem i wiem. Chodzi mi o to co do niej wpisać.. W tym przypadku chciałbym mieć na pinie PB3 przebieg o częstotliwości która sobie ustawiłem. Chodzi mi o to że nie wiem jak ma wyglądać czy to pętla czy cała funkcja żeby działała tak jak chcę...


    hmmm no to możesz jeszcze skorzystać z innych przykładów w książce - o ile co najmniej raz (jak pisałeś już przeczytałeś całą od deski do deski) ....

    zobacz - masz pan tam np przykład do obsługi wyświetlaczy 7-segmentowych i multipleksowanego wyświetlania .... a także przykłady jak sobie obliczyć częstotliwość wykonywania tych przerwań - to może być np podstawa częstotliwości dla twojego generatorka - nieprawdaż ?

    a skoro tak - to pozostaje ci dopisać procedurę obsługi przerwania a w niej co ???? no na czym ma polegać generowanie sygnału prostokątnego ????

    na zmianie stanu pinu na przeciwny zatem wstawiasz np:

    PORTB ^= (1<<PB3);

    i po zawodach ..... to taki uproszczony sposób i programowy - ale możesz tego samego dokonać w pełni sprzętowo za pomocą timerów sprzętowych - jak?

    A zaczytaj jeszcze raz sobie projekt pilota RC5 - i zobacz że tam musi być uruchomiona nośna 36kHz .... i to nośna generowana sprzętowo - gdzie opisuję dokładnie jak to zrobić i o co chodzi - tylko może ci to na razie umknęło - no ale na tym polegają ćwiczenia z książką żeby trenować różne przykłady

    zobacz więc tam - bo to może być najprostsze dla ciebie a częstotliwość generatorka zmieniać możesz sobie wg życzenia dobierając preskalery itp

    jak coś - to wtedy dawaj tutaj i dopytaj dalej - nikt tu nikogo nie linczuje jak widzisz ..... każdy każdemu stara się chętnie pomóc ;)

    _________________
    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: 1 maja 2012, o 07:03 
    Offline
    Nowy

    Dołączył(a): 11 kwi 2012
    Posty: 4
    Pomógł: 0

    Jeśli chodzi o przykład z multipleksowaniem to nim właśnie się sugerowałem. Nawet wartości są dokładnie takie same:) Fakt faktem zasugerowałem się jednym ćwiczeniem. Co do obsługi przerwań to właśnie o to mi chodzi. Wiem na czym polega generowanie przebiegu prostokątnego niemniej wydaje mi się że pisanie programu "stan wysoki pauza stan niski pauza stan wysoki ..........." itd jest bez sensu. Ogólnie moje zapytanie tyczy się nie tylko tego przykładu. Nie potrafię wyobrazić sobie schematu pisania takiego programu....
    Mam coś takiego:
    #include ........
    #include.......
    #include....

    tu sprawa jest jasna
    #define ......
    #define......

    też jest zrozumiałe

    tylko teraz tu rodzi się problem

    int main (void)

    Jeśli dobrze zrozumiałem jest to funkcja która nic nie zwraca?

    Ale co teraz ma być w niej żeby program się wykonywał?? Napisałem sobie programik obsługujący silnik krokowy. W zależności od tego jaki klawisz wcisnę robi albo pełne kroki albo półkroki.Wstawiłem "if" i wszystko ładnie działa. Ale co jeśli nie chce mieć klawiszy?? Czy ma być to na zasadzie:

    int main (void)
    {
    while(1)
    {
    krok1
    krok2
    }

    }
    i to wszystko??



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 maja 2012, o 08:29 
    Offline
    Moderator
    Avatar użytkownika

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

    Jeśli chodzi o strukturę programu to właśnie tak prawie wygląda, tyle że

    int main(void)

    to nie jest funkcja która nic nie zwraca - tzn chodzi mi o samo pojęcie - bo owszem nic nie zwraca - ale jest to GŁÓWNA FUNKCJA programu i to jest punkt wejściowy/startowy całego programu/projeku - tak należy to określać

    i dalej idąc wyróżniamy następujące sekcje w szkielecie programu w C:


    // -------- dołączanie plików nagłówkowych
    #include ........
    #include.......
    #include....

    //--------- ważne definicje i makra programu
    #define ......
    #define......

    //--------- deklaracje funkcji

    //--------- deklaracje zmiennych globalnych


    //--------- GŁÓWNA FUNKCJA PROGRAMU ---------------
    // **** i teraz sekcje w tej funkcji ****************
    int main(void) {

    // ---- inicjalizacja PINów i PORTów - kierunków itp

    // ---- inicjalizacja modułów sprzętowych procesora jak: Timery, UART, ADC itp

    sei(); // globalne zezwolenie na przerwania jeśli z nich korzystamy oczywiście

    //*********** PĘTLA GŁÓWNA PROGRAMU !!! *******************
    while(1) {

    //----- tutaj już zaczyna się dziać cały program czy to badanie klawiszy, czy sterowanie silnikiem
    // ---- badanie klawiszy może być a może go nie być - jak uważasz
    //---- najlepiej tak pisać aby tu było MEGA PRZEJRZYŚCIE i żeby wywoływane były tylko funkcje ew ZDARZENIA czy timery programowe

    }

    }
    //----------------- KONIEC


    .... czy czytałeś dokładnie rozdział w mojej książce o podziale projektu na pliki nagłówkowe i źródłowe ?????? bo coś mi się wydaje że co najmniej go pominąłeś może ? hmmmm???

    .... czy korzystasz z ECLIPSE i oglądałeś lekcje VIDEO z płyty DVD dołączonej do książki ???? to by ci w tym wszystkim dużo pomogło

    .... a szczególnie rozdział "Wstęp do systemów czasu rzeczywistego" o ile wcześniej poćwiczysz podstawy czyli pierwsze rozdziały warsztatowe 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: 1 maja 2012, o 09:17 
    Offline
    Nowy

    Dołączył(a): 11 kwi 2012
    Posty: 4
    Pomógł: 0

    O taki właśnie schemat mi chodziło. To Już mi bardzo dużo dało. Co do książki to mam ją cały czas przy sobie i ciągle wracam do jakiś miejsc bo ciężko zapamiętać wszystko od razu.

    Dzięki za schemat działania i podpowiedzi w książce gdzie powinienem wrócić.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 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