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



Teraz jest 20 lut 2025, o 06:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 13 sie 2013, o 00:29 
Offline
Nowy

Dołączył(a): 16 maja 2013
Posty: 7
Pomógł: 0

Jest to mój pierwszy post na tym forum, więc witam wszystkich!

Mam 2 pytania:
1. Czy pokazany niżej kod jest czytelny i napisany tak, jak powinien być pisany? (wcięcia itp)
2. Przy próbie wykorzystania makra "SERVO_HI" (w pętli while) pojawia mi się error:
Cytuj:
Multiple markers at this line
- expected expression before '|='
token
- Syntax error

Co jest nie tak?

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.


W projekcie jest ustawiona atmega 8 z taktowaniem 8MHz

Celem było stworzenie sygnału pwm dla serva i silnika bezszczotkowego (ESC wymaga pwm)

Po przeczytaniu teoretycznej części niebieskiej książki, udało mi się zamrugać diodą, wykorzystując Eclipse indigo na Macu przy wykorzystaniu lekko nieaktualnej paczki sterowników, ponieważ nowsze paczki z jakiegoś powodu nie działały. W ostateczności mogę zwalić winę na zbugowane sterowniki, ale wolałem się upewnić co do kodu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2013, o 00:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Nxtfun napisał(a):
1. Czy pokazany niżej kod jest czytelny i napisany tak, jak powinien być pisany? (wcięcia itp)

Wcięcia ok poza returnem, puste linie do poprawy.

Nxtfun napisał(a):
2. Przy próbie wykorzystania makra "SERVO_HI" (w pętli while) pojawia mi się error:

A zastanów się dlaczego. Makro podstawia dokładnie to, co jest w definicji makra.

------------------------ [ Dodano po: 1 minucie ]

Nie stosuj floatów w AVR!

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2013, o 00:50 
Offline
Nowy

Dołączył(a): 16 maja 2013
Posty: 7
Pomógł: 0

Dziękuję za szybką odpowiedź. Już rozumiem błąd: powinienem był dać PORTB przed "|=".
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Już error nie wyskakuje.
Co do float, to chciałem wykorzystać liczbę zmiennoprzecinkową, by ją później wykorzystać przy podawaniu stanu wysokiego przez określony czas, np.: 1,3 milisekundy. Założeniem było podawanie stanu wysokiego przez czas od 1 do 2 milisekund, ze stanami pośrednimi poprzez przyciskanie guzika, który dodaje za każdym razem 0,1 milisekundy. Wiem, że można to zrobić sprzętowo, ale chciałem to zrobić by sprawdzić czy to ma szansę działać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2013, o 00:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Przecież możesz to zrobić na timerze programowym odmierzającym np. 100us (0.1ms) i zmiennej całkowitej. Nie ma tu absolutnie potrzeby używania floatów.

Poza tym masz funkcje _delay_us() i _delay_ms(), poczytaj o nich.


Autor postu otrzymał pochwałę

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2013, o 01:06 
Offline
Nowy

Dołączył(a): 16 maja 2013
Posty: 7
Pomógł: 0

Z początku chciałem uniknąć timerów, pobawić się delayem. Jest _delay_us? To rozwiązuje mój problem, użyję uint8_t i zmniejszy mi się objętość programu. Jak mi się wszystko uda, wrócę do timerów. Nie chodzi o to, że się ich boję, po prostu pisząc jeden z pierwszych programów chcę wszystkiego spróbować po kolei.

Bardzo dziękuję za pomoc!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sie 2013, o 01:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Cieszę się, że pomogłem. ;)

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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