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



Teraz jest 13 sty 2026, o 18:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 19 sie 2015, o 19:29 
Offline
Nowy

Dołączył(a): 18 sie 2015
Posty: 9
Pomógł: 0

Witam, to mój pierwszy post na tym forum i już z problemem przychodze
No ale cóż człowiek uczy sie na błędach :D

Dobra wracając do rzeczy ważnych :D

Panowie i Panie ( jeśli jakieś są) Chcialem napisac z pozoru bardzo prosty kod no ale nie działa
uC= ATmega

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



EDIT
DODAŁEM 'TIME++;" w count()



Ostatnio edytowano 19 sie 2015, o 19:39 przez Mr. Strzelczyk, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2015, o 19:36 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

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


No i tak się nie robi:
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: 19 sie 2015, o 19:39 
Offline
Użytkownik

Dołączył(a): 19 cze 2014
Posty: 247
Pomógł: 15

W funkcji main masz wszystko na pocie A, a w makrodefinicjach podajesz PC, ale to nie jest problemem tylko bardzo brzydko wygląda. W kodzie nigdy nie dajemy #define F_CPU :( . Po wejściu w pętlę while funkcji COUNT() program już z niej nie wyjdzie. Poza tym co dokładnie nie działa?

_________________
http://elektropanel.pl



Ostatnio edytowano 19 sie 2015, o 19:50 przez leonos2000, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2015, o 19:46 
Offline
Nowy

Dołączył(a): 18 sie 2015
Posty: 9
Pomógł: 0

leonos2000

- TIME++ juz dodałem


Mam taka prośbę bo zaczynam z uC i jesli mowicie ze cos nie tak to jak mozecie to dajcie jakies przyklady to chetnie to poprawie i nauczę sie

Po zmianie
Kod:
DDRA &= ~SWICH_1 | SWICH_2 | SWICH_3;

i wyjsciu z pętli w funkcji count()

działa tylko przycisk 3- Count()



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2015, o 19:51 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

Porty są domyślnie wejściami, więc nie musisz tego ustawiać, ale jak bardzo chcesz to tak: DDRA &= ~(SWICH_1 | SWICH_2 | SWICH_3);



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2015, o 19:56 
Offline
Nowy

Dołączył(a): 18 sie 2015
Posty: 9
Pomógł: 0

#ciamciak# napisał(a):
Porty są domyślnie wejściami, więc nie musisz tego ustawiać, ale jak bardzo chcesz to tak: DDRA &= ~(SWICH_1 | SWICH_2 | SWICH_3);


Ok, widze masz racje, super będe pamiętał :)


OK problem rozwiązany- problem tkwił w MAKRO

to już działający kod, ale mam do was pytania odnosnie czestotliwosci uC no i
leonos2000 napisał(a):
a w makrodefinicjach podajesz PC
- jak możecie to wyjaśnijcie mi bo nie rozumiem :D
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Cytuj:
#define F_CPU 8000000<--- TEGO SIĘ NIGDY NIE ROBI W KODZIE - mirekk36

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: 19 sie 2015, o 20:34 
Offline
Użytkownik

Dołączył(a): 11 wrz 2013
Posty: 709
Zbananowany użytkownik

Pomógł: 23

Mr. Strzelczyk napisał(a):
to już działający kod, ale mam do was pytania odnosnie czestotliwosci uC no i
leonos2000 napisał(a):
a w makrodefinicjach podajesz PC
- jak możecie to wyjaśnijcie mi bo nie rozumiem :D
Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ] [ Rozwiń kod ]
język c

#include <avr/io.h>
#define F_CPU 8000000
#include <util/delay.h>

#define BUZZER_PIN (1<<PC0)



Nie stosuj makra F_CPU, bo jak się przyzwyczaisz to tak Ci zostanie.
Jednak jak się "rozwiniesz" w temacie uC i zaczniesz tworzyć biblioteki bądź po prostu rozbijać cały program na pliki to możesz przez przypadek podać w różnych plikach różne częstotliwości, a to kończy się trudnymi do wykrycia dziwnym działaniem wsadu. Zamiast tego stosuje się wpis w pliku MAKEFILE lub po prostu korzysta się z możliwości środowiska w którym tworzysz projekt.

Co do PC no to masz w kodzie #define BUZZER_PIN (1<<PC0), a pod spodem używasz PORTA.

Mam nadzieję, że wszystko jasne?

--
Pozdrawiam.
Grzegorz...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2015, o 20:38 
Offline
Użytkownik

Dołączył(a): 19 cze 2014
Posty: 247
Pomógł: 15

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

Tutaj używasz DDRA i PORTA, a w makrodefinicjach masz:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

czyli w porcie A zmieniasz pin portu C, PC0. Powinno być PORTA |= (1<<PA0); W działaniu programu to nic nie zmienia, bo PA0 i PC0 to takie samo makro, ale kod jest bardziej zrozumiały, czytelny i poprawny ;) .

_________________
http://elektropanel.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2015, o 20:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Odnośnie tego czemu nie używamy #define F_CPU 8000000 w kodzie tylko ustawiamy w projekcie to zobacz ten poradnik mniej więcej od tego czasu.
Dodatkowo polecałbym Ci kilka video poradników z bloga pana Mirka np ten czy kanału na youtube:
https://www.youtube.com/playlist?list=PLtXXWLsA5QNg4iyOS5by5ZZT3SFUBMvr7
Tam znajdziesz przykłady. Wiem, co mówię, bo zaczynałem właśnie od tego. Jeśli poważnie myślisz o programowaniu w języku C to polecam Ci tą książkę, zwaną BB



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2015, o 23:19 
Offline
Nowy

Dołączył(a): 18 sie 2015
Posty: 9
Pomógł: 0

Super, Dzięki panowie za poświęcony czas, rozjaśniło mi to trochę :)

Oczywiście działam z książką pana Mirka, tylko lubię widzieć co robię i jak to działa, po sklepaniu pierwszego programu miało być opóźnienie 1s a tu na płytce było inaczej wiec szukałem rozwiązania i znalazłem tą "szmire" jak sie okazało :D
Dobra, wiedza przyswojona, jutro ją utrwalę :D

PS Jestem pozytywnie zaskoczony tym forum.
Na forum na E :D zazwyczaj po napisaniu posta czeka sie dłuugo a odpowiedzi są chamskie, prześmiewcze a tu co? odpowiedz w kilka sekund,same konkrety i pełno osób które chcą pomóc!
SUPER!

DZIEKUJE :D



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

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