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



Teraz jest 28 paź 2024, o 16:39


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 ]
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
Avatar użytkownika

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

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

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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: 27306
Lokalizacja: Szczecin
Pomógł: 1041

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 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO