To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
-
Spanner
- Użytkownik
- Posty: 364
- Rejestracja: 18 lip 2010, 18:29
- Lokalizacja: Bielsko biała
Post
autor: Spanner » 02 gru 2011, 13:39
Witam. Mam pewien problem którego nie mogę rozwiązać. Nie wiem jak napisać program, by kręcenie potencjometrem połączonym do szyn zasilania i wejścia atmega8 zmieniało wartość zmiennej w zakresie od 0 do 255. Czy ktoś mógłby podać mi przykładowy program który tylko będzie zmieniaj wartość zmiennej? Tylko tyle potrzebuję do ukończenia projektu.
Pozdrawiam
spanner
-
kris74
- Użytkownik
- Posty: 270
- Rejestracja: 16 sie 2006, 17:36
- Lokalizacja: Gorzów Wielkopolski
Post
autor: kris74 » 02 gru 2011, 14:34
Odczep potencjometru do nogi wejścia adc procesora, jeden koniec do masy drugi do +5 V.
Konfiguracja ADC config Adc = single, Prescaler = Auto, Reference = Avcc
Następnie zmienna Dim Wart_ac As word
potem Start Adc
i tu przykład odczytu
Do
Wart_ac = Getadc(1)
Lcd wart_ac
loop
wyświetli wartość odczytaną z wejścia adc, a to jest konfiguracja dla 10 bitowego przetwornika ac w atmega8, bo taki pod ręką był.
-
Spanner
- Użytkownik
- Posty: 364
- Rejestracja: 18 lip 2010, 18:29
- Lokalizacja: Bielsko biała
Post
autor: Spanner » 02 gru 2011, 15:01
Aha a dlaczego zapisuje wartość do zmiennej word, nie da się na przykład do byte? Jak przekształcić potem na zmienną liczbową, wystarczy dać powiedzmy :
Zmienna bajtowa = zmienna tekstowa?
-
kris74
- Użytkownik
- Posty: 270
- Rejestracja: 16 sie 2006, 17:36
- Lokalizacja: Gorzów Wielkopolski
Post
autor: kris74 » 02 gru 2011, 15:10
Do zmiennej bajtowej nie przypiszesz zmiennej tekstowej trzeba zrobić jak już rzutowanie.
Ale po odpowiednim rzutowaniu jak najbardziej tak można zrobić, co do zmiennej Word zobacz co będzie jak zadeklarujesz byte, ja tego nie sprawdzałem, kod przykładowy działa na
pewno.
-
Spanner
- Użytkownik
- Posty: 364
- Rejestracja: 18 lip 2010, 18:29
- Lokalizacja: Bielsko biała
Post
autor: Spanner » 02 gru 2011, 15:21
A jak się robi to rzutowanie? mogę prosić o przykład?
-
kris74
- Użytkownik
- Posty: 270
- Rejestracja: 16 sie 2006, 17:36
- Lokalizacja: Gorzów Wielkopolski
Post
autor: kris74 » 02 gru 2011, 15:46
Rzutowanie to nic innego jak zmiana jednej zmiennej na drugą, np byte na string.
Dim Zmienna As string*10
Dim L as Byte
to wtedy
Zmienna = Str(L)
-
keruseykaryu
Post
autor: keruseykaryu » 02 gru 2011, 18:32
Spanner pisze:Aha a dlaczego zapisuje wartość do zmiennej word
Bo Getadc taką zwraca. Przecież masz ADC 10bit to gdzie chcesz ładować 10bitów do 8?
-
Spanner
- Użytkownik
- Posty: 364
- Rejestracja: 18 lip 2010, 18:29
- Lokalizacja: Bielsko biała
Post
autor: Spanner » 02 gru 2011, 19:00
Heh fakt. Będzie trzeba załadować do większej.
pozdro
-
Spanner
- Użytkownik
- Posty: 364
- Rejestracja: 18 lip 2010, 18:29
- Lokalizacja: Bielsko biała
Post
autor: Spanner » 03 gru 2011, 10:19
a mogę bezpośrednio do PWM-a wpisać wartosć tej zmiennej od adc?
-
mictronic
- -
- Posty: 81
- Rejestracja: 04 paź 2006, 19:28
- Lokalizacja: Bydgoszcz
-
Kontakt:
Post
autor: mictronic » 03 gru 2011, 10:25
Jeśli używasz PWM minimum 10bit to tak.
-
keruseykaryu
Post
autor: keruseykaryu » 03 gru 2011, 13:52
a mogę bezpośrednio do PWM-a wpisać wartosć tej zmiennej od adc?
Nie robiłbym tego. Lepiej najpierw uśrednij wyniki z ADC.
-
Spanner
- Użytkownik
- Posty: 364
- Rejestracja: 18 lip 2010, 18:29
- Lokalizacja: Bielsko biała
Post
autor: Spanner » 03 gru 2011, 14:20
A mógłbyś powiedzieć jak to uśrednić? Nie rozumiem za bardzo o co chodzi i jak to zrobić.
pozdro
-
kayron
- Użytkownik
- Posty: 2088
- Rejestracja: 21 wrz 2008, 12:53
- Lokalizacja: Poland
-
Kontakt:
Post
autor: kayron » 03 gru 2011, 14:46
Kolega nigdy sobie średniej arytmetycznej ocen w szkole nie liczył ? Wystarczy zebrać kilka próbek np. 8, dodać je do siebie i podzielić przez 8, to właśnie wynik uśredniony. No i zaokrąglić do wartości całkowitej.
-
Pikczu
- Użytkownik
- Posty: 754
- Rejestracja: 18 lip 2005, 18:33
- Lokalizacja: Dublin
-
Kontakt:
Post
autor: Pikczu » 03 gru 2011, 15:01
Spanner zrób np 4 próbki i podziel
Kod: Zaznacz cały
Przetwornik = Przetwornik + Getadc(channel) 'pomiar
Przetwornik = Przetwornik + Getadc(channel)
Przetwornik = Przetwornik + Getadc(channel)
Shift Przetwornik , Right , 4
-
Spanner
- Użytkownik
- Posty: 364
- Rejestracja: 18 lip 2010, 18:29
- Lokalizacja: Bielsko biała
Post
autor: Spanner » 03 gru 2011, 16:13
Ok. mam jeszcze tylko pytanie co zrobić z końcówkami AREF, AVCC i AGND. NIgdy nie używałem atmegi więc nie wiem.
Pozdro