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



Teraz jest 28 mar 2024, o 21:09


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 14 sty 2020, o 20:09 
Offline
Nowy

Dołączył(a): 17 gru 2019
Posty: 4
Pomógł: 0

Witam serdecznie wszystkich. W temacie programowania AVR jestem zielony;) Troszke miałem styczności z zabawą Arduinem UNO natomiast teraz wzięło mnie natchnienie na poznanie czystego języka C w AVR. I w związku z tym mam pewne zapytanie odnośnie ADC. Mianowicie gdy ustawie sobie już wszystkie parametry zwiazane z ADC w Atmega32 i powiedzmy przy przekręceniu potencjometrem zmieniają mi sie wartości od 0-1023 czy istnieje taka opcja aby użyć jak to w arduino było tzw. mapowania zakresu w sensie takim że np bedzie map_zakres(0,1023,0,100) wartość 0-1023 zamienić na wartości z przedziału 0%-100%? A następnie wykorzystać w sposób ze gdybym miał podpiety czujnik temperatury temperaturę mam np 20C więc uruchom wentylator przy pomocy timera i fast PWM na 30%??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2020, o 20:29 
Offline
Użytkownik

Dołączył(a): 09 lip 2019
Posty: 106
Pomógł: 10

Jeśli jakaś funkcjonalność z Arduino działa wystarczająco dobrze, to czasem najprościej zajrzeć do kodu źródłowego danej funkcji. Czasem można po prostu przekleić, czasem napisać samemu coś na podstawie.

Googlując trochę - tutaj na stronie znalazłem ciekawą dyskusją na temat tej funkcji oraz potencjalnych wariantów (zaokrągleń).

https://github.com/arduino/ArduinoCore-API/issues/51

W szczególności można wykorzystać pewnie ten fragment

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


Autor postu otrzymał pochwałę


Ostatnio edytowano 14 sty 2020, o 20:43 przez moscow, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2020, o 20:40 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Jak jesteś początkujący to najpierw rozpisz sobie jakie działania matematyczne należy wykonać by przeskalować wartości z 0-1023 na 0-100. Zaglądanie do kodów źródłowych Arduino to myślę, że powinno się robić na wyższym poziomie zaawansowania.

P. S. Jak nie masz to polecam Mirkowego Blue Booka - potężna dawka wiedzy dla początkującego i nie tylko.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2020, o 08:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

@gregory099 Poruszyłeś zagadnienie związane z porównaniem platform programowania w języku C/C++.
Platformą na tym forum jest AVR Toolchain i jej funkcje wewnętrzne. Arduino ma swoje funkcje wewnętrzne.
Wspólnym obiektem programowania jest mikroprocesor AVR. Rejestr ADCW zawiera wynik pomiaru ADC. Znając ten wynik wskazujesz co ma się znajdować w innych rejestrach wewnętrznych lub wyjściowych. Np. jeżeli ADCW jest 50% to pin PD0 ma być 0(dioda LED podłączona do tego pinu "świeci").



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2020, o 18:20 
Offline
Nowy

Dołączył(a): 17 gru 2019
Posty: 4
Pomógł: 0

Witam. Spokojnie koledzy jak to mówią kto pyta nie błądzi. I wychodzi właśnie różnica pomiędzy Arduino a czystym pisaniem w C. Raczej chodziło mi na odwrót kolego Wirnick np że gdy termistor 10k podłączony do ADC odczyta wartość temperatury np 30 stopni C uruchom wentylator przy pomocy PWM w 50% jego pełnego zakresu. W Arduino wiem ze mozna było to zrobić tutaj widze że też by można było tylko raczej na piechote wszystko w sensie takim że ręcznie wpisywać wypełnienie w PWM. Chyba że jestem w błędzie to proszę o korektę mojej wypowiedzi ;) Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2020, o 19:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Niema takiej platformy programistycznej, by obeszło się od wklepywania programu ręcznie. Chociaż raz trzeba tego dokonać, by procesor z peryferiami stał się samodzielnym robotem. Też miałem problemy zrozumieć funkcjonowanie procesora i dzięki BB Pana Mirka poznałem co tkwi w szczegółach(wnętrznościach procka), a tego nie musisz wiedzieć programując w Arduino. Programuję też w arduino szukając pomocy w skieczach i helpach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2020, o 19:49 
Offline
Nowy

Dołączył(a): 17 gru 2019
Posty: 4
Pomógł: 0

Jest jest różnica między Arduino a AVR . Bob też mam od niedawna i staram się uczyć powoli. Myślę że kiedyś ogarnę temat;). A zapytanie jeszcze mam odnośnie porównania do Arduino w pętli loop bądź setup gdy jakiś program się wpisało np proste mruganie dioda poszło od strzała a dlaczego w AVR nie ruszy nic jeśli wszystkiego nie wezmę np w klamry pętli while?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2020, o 20:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Przechodząc na platformy trzeba spełnić jej rygory. W arduino muszą być funkcje setup i loop. W C/C++ main(ciało programu) i while()(program główny). Warto zainstalować na komputerze program AVPlayer - otrzymasz dość pokaźną dawkę wiedzy z poradników wideo.


Autor postu otrzymał pochwałę


Ostatnio edytowano 15 sty 2020, o 20:12 przez Wirnick, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2020, o 20:07 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Zacznij kolego od podstaw - studiuj BB bo inaczej się nie da.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2020, o 08:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1146
Lokalizacja: Kraków
Pomógł: 93

gregory099 napisał(a):
zapytanie jeszcze mam odnośnie porównania do Arduino w pętli loop bądź setup gdy jakiś program się wpisało np proste mruganie dioda poszło od strzała a dlaczego w AVR nie ruszy nic jeśli wszystkiego nie wezmę np w klamry pętli while?
Jeśli znajdziesz sobie plik arduino.h (albo arduino.cpp. Albo coś w tym stylu), to w pewnym miejscu jest taki zapis (mniej więcej, z głowy piszę):
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co to oznacza? Że to, co w czystym C/C++ musisz napisać sam, arduino załatwia "po cichu".
Z mojej strony, polecam jednak odstawić arduino, w ten sposób nie nauczysz się programować. Piszę (niestety) z własnego doświadczenia.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2020, o 08:42 
Offline
Nowy

Dołączył(a): 17 gru 2019
Posty: 4
Pomógł: 0

Dziękuję kolegom za podpowiedzi teraz temat dlaczego trzeba użyć while się wyjaśnił ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sty 2020, o 13:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Dobrze, że się wyjaśniło.Ja zazwyczaj nie odpowiadam na PW, ponieważ cenię otwartość tego forum i przychylność userów w udzielaniu pomocy. Śmiało przedstawiaj pytania i wątpliwości. Jak przejdziesz w lekturze BB rozdział 4.5. to będziesz już na głębokiej "wodzie" w poznawaniu AVR i programowaniu w C/C++. Razem z tobą zaczynam powtarzać lekturę.



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

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