karol1996 napisał: Witam
Mam problem z układem na Attiny24.
Chcę wykorzystać wszystkie 4 kanały PWM, oraz 4 kanały ADC. (1 - 4) + sygnał Aref.
I moje pytanie jest, czy jeżeli uruchomiłem ADC, to mogę korzystać wyjść PWM, które są współdzielone z niewykorzystanymi pinami ADC?
Myślałem, że ...
Tak, jest realna możliwośc skonfigurowania peryferiów tego processora do (‘produkowania’) / generowania 4-ch przebiegów (fali) PWM, oraz jednocześnie miec dostęp do 4-ch wejśc analogowych. Pod warunkiem że odłaczysz od processora ten układ co z wyglądu przypomina mostek H, a nim nie jest!!!
Pierwsza rzecz co zauważysz po włączeniu; to będzie trochę dymu i rozczarowanie.
Kol. ‘EX-CRY’ wskazał na błędną konfigurację wyboru napięcia referencyjnego, lecz pominął wyjaśnienie ‘dlaczego jest błędna’ , zatem jestem pewny że tego tematu nie zrozumiałeś, mimo że jest to w bardzo przystępny i zrozumiały sposób wyjaśnione w datasheet.
Atmel ma najlepiej opracowane datasheets jakie dotychczas widziałem!!!
Zacznij od dosłownie ‘nauczenia się’ tego processora!
Tak, musisz go poznac a szczególnie układ ADC. Chociaż pewne elementy tego układu są powtarzalne za innymi processorami z tymi zespołami, to tu występują pewne (choc niewielkie) subtelne różnice konfiguracyjne, których nie można pominąc/przeoczyc.
Swoje przygotowanie do projektu zacznij od wydrukowania obrazka Figure 1-1. Pinout ATtiny24/44/84 – będzie przydatne później.
Przyjmij tezę że tylko niektóre piny (fizyczne nogi/szpilki tego chipa ma stałe i bezpośrednie połączenie z faktycznym uControllerem; są to VCC i GND. Wszystkie pozostałe ‘szpilki’ mogą byc; niektóre ‘dowolnie’, inne z ograniczeniem łaczone do wybranych zespołów peryferyjnych, przez elektroniczne przełączniki sterowane przez odpowiednie rejestry konfiguracyne aby osiągnąc oczekiwaną funkcjonalnośc./
Teraz otwórz datasheet na str 133 z obrazkiem : Figure 16-1. Analog to Digital Converter Block Schematic
Odszukaj na schemacie (z lewej strony pionowo) kwadraty/prostokąty z oznaczeniem: AREF, Vcc, INTERNALREFERENCE 1.1V, itd, kończąc na ADC0. Są to fizyczne lub logiczne elementy controllera dostepne do konfiguracji w aspekcie ADC .
Zwróc uwagę na te trzy pierwsze (Aref, Vcc, Internal) połaczone do bloku: REFS1..REFS0 . Blok ten (trapez) to zespół przełączników sterowany z rejestu ADMUX. Odszukaj w datasheet ten rejestr (str. 145) oraz tabela uzupełniająca 16-3 z której wybierzesz oczywiście linię pierwszą, o czym pisał kol wyżej. Jest to podłączenie wewnętrzne do Vcc, bez potrzeby zajmowania pinu ADC0. Gdybyś jednak abstrakcyjnie potrzebował zastosowac nie standardowe napięcie referencyjne na przykład 2.5V to musiałbys to skonfigurowa wg linii drugiej i wtedy te 2.5V podłączysz do ADC0. Naturalnie, wtedy Pin ten nie mógłby byc wykorzystany do innej funkcji.
Do allokacji pinów posłuż się priorytetem możliwości konfiguracyjnych pinów. Potrzebujesz 4 wyjscia PWM, a processor ma ich maxymalnie też 4 i to na ściśle określonych pinach, to autentycznie tu nie masz wyboru.
Zamarkuj te porty na wydruku i będziesz miał jasny wygląd co pozostaje dla wejśc ADC/GPIO lub innych funkcji.
Nie ma specjalnej konfiguracji pinów wejściowych dla ADC . Wystarcza że sa wejściami: tak jak po reset/bootup.
W programie startujesz converter ADC i czytasz wartośc ze wskazanego portu. Co z tym wynikiem zrobisz to już jest twoja sprawa....
W Bascom jest o tyle ułatwiona obsługa ADC że odczyt wartości z określonego portu /(kanału)_ dokonujesz wskazując numer kanału:
Value = Getadc(kanał)
Bardziej szczegółowy komentarz odnośnie mostka H z rysunku pozostawię na inną okazję, a tymczasem w projekcie zastosuj gotowy układy/driver, jeżeli takie są wymagane. Jeżeli do wysterowania masz tylko jeden mostek H to wymagany byłby tylko jeden sygnał PWM i zależnie od drivera; 1 lub 2 linie dla zmiany kierunku obrotów./
Na przykład taki jak ten, (L298N) obsłuży dla 2 silniki:
Dla mniejszych silników możesz zastosowac układ zbudowany na L293D.
e marcus