Poprzedni temat «» Następny temat
[BASCOM] PWM i ADC - ATtiny13
Autor Wiadomość
FireIsland 
Nowy na forum


Dołączył: 07 Lis 2013
Posty: 36
Skąd: Grybów
Wysłany: 2017-03-15, 21:15   [BASCOM] PWM i ADC - ATtiny13

Dzień dobry,

Potrzebuje wykonać prosty układ sterujący tranzystorem MOSFET na procesorze ATtiny13. Na wejście przetwornika ADC podaję napięcie z potencjometru 2k, na wyjściu PWM0A chcę otrzymać sygnał z zakresu 0-5V do sterowania bramką tranzystora.

Timer w tym procesorze jest 8 bitowy a przetwornik ADC 10bitowy, więc sygnał z przetwornika dzielę przez 4 aby "zmieścił się" w zakresie 0-255.
Z racji małego procesora zmienne umieściłem w rejestrach roboczych.
Problem jest taki, że przekręcając potencjometrem raz od jednego końca do drugiego, dioda (którą podłączyłem do wyjścia w celach testów) zaświeca się i gaśnie 4 razy. A powinna rozjaśniać się od 0 do swojej maksymalnej jasności. Pomiary napięcia na wyjściu wykazały że dochodzi ono do ok. 1V po czym spada do 0. To logiczne gdyby napięcie odniesienia było ustawione na wewnętrzne 1.1V. Lecz tutaj jest ustawione na Vcc więc powinno wynosić w okolicach 5V. Zachowanie to nie dziwiło mnie gdy nie miałem linijek odpowiedzialnych za dzielenie przez 4. Przy braku dzielenia na wyjście jest cztery razy podawany sygnał od 0 - 255 przy jednym obrocie potencjometru. Nie rozumiem dlaczego dzielenie przez 4 nie pomaga.
Podobny program wgrałem na ATmega32A. Rozdzielczość timera ustawiłem na 8bit a przetwornik ADC jest 10 bitowy. Sytuacja wyglądała podobnie. Dioda rozjaśniała się czterokrotnie, przy jednym obrocie potencjometru. Pomogło wstawienie linijek dzielących wartość z ADC przez 4. Nie wiem dlaczego dzielenie nie pomaga w przypadku procesora ATtiny. Domyślam się, że jest jakiś problem ze zmiennymi.

Z góry dziękuję za odpowiedzi. Poniżej załączam kod programu.
Pozdrawiam Piotr,

Ukryta Wiadomość:
Jeśli jesteś *zarejestrowanym użytkownikiem* musisz odpowiedzieć w tym temacie żeby zobaczyć tą wiadomość
--- If you are a *registered user* : you need to post in this topic to see the message ---
 
     
Jony130 


Dołączył: 11 Sie 2005
Posty: 3037
Skąd: wrocław
Wysłany: 2017-03-16, 16:23   

Ten sobie program wykorzystaj.
Potencjometr pod PB4 a wyjście to PB0

Kod:

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 40
$swstack = 16
$framesize = 8

Config Pinb.0 = Output

'Konfiguracja PWM w trybie szybkimi (fast PWM mode, 0 do 255 i odnowa), wyjscie PWM OC0A (PB0)

Tccr0a = &B10000011       'Zeruje OC0A (PB0) przy zrownaniu (Clear Up),                                                                                                                                         

Tccr0b = &B00000001       'Bez Preskalera (CLK/1)

' <----Konfiguracja ADC------->

Didr0 = &B00010000        ' Wyłaczamy wejście cyfrowe na PB4

Admux = &B00100010      ' Vcc jako Vref, tryb ADC 8 bitowy i PB4 jako wejście                                       

Adcsra = &B11101000       ' ADC_ON , Free running mode, Preskaler = (CLK/2)

Adcsrb = &B00000000       ' Tryb Free running mode

On Adc Adc_int
Enable Interrupts

Do
Loop

Adc_int:
Ocr0a = Adch
Return

Bo nie chce mi się twojego kodu analizować. Szczególnie że dawno już Bascoma nie używałem.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,02 sekundy. Zapytań do SQL: 10