• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Digispark ATtiny85 - sterowanie wentylatorem PWM (25kHz)
#1
Witam.
Jako że jestem raczej początkującym w kwestji programowania Arduino to proszę o wyrozumiałość.

Mam pewne urządzenie sieciowe, gdzie jak się później okazało niestety nie obsługuje PWM na którym mi zależało, bym mógł sterować wentylatorem PWM (4-kablowy wentylator PC 140mm), wiec zacząłem kombinować nad jakimś konwerterem lub mostem do obsługi PWM. Jako że mam pod ręką mini płytkę z ATtiny85, zacząłem szukać informacji w internecie nad obsługą PWM, niestety okazało się że ATtiny85 przy standardowych bibliotekach ma ograniczone możliwości generowania sygnałów PWM, a mi potrzeba 25kHz. Więc pogrzebałem jeszcze trochę w świecie internetu i znalazłem informacje o Fast PWM czyli sprzętowym PWM, który bazował na bezpośrednim odwołaniu do rejestrów.
I tu zaczyna się mój problem, metodą prób i błędów doszedłem do wygenerowania tych 25kHz, ale wypełnienie w tym wypadku jest na 50% i tu właśnie nie wiem jak zmieniać je.
Tu prosił bym osoby znające się z tematem rejestrów, by wytłumaczyły mi bardziej obsługę jak generować PWM o wysokiej częstotliwości ( timery, rejestry, bity itp)

Niżej podaje kod jakim udało mi się wygenerować ~25kHz z wypełnieniem 50% na pinie P0:

Kod:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 800000UL

int main(void)
{
 // set output pin
 DDRB |= (1 << DDB0) | (1 << DDB1);
 //***25kHz***//
 TCCR0A=(0<<COM0A1) | (1<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (0<<WGM00);
 TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (0<<CS00);
 TCNT0=0x00;
 OCR0A=0x28;
 OCR0B=0x00;

}


Główne moje założenie to: sterować wentylatorem PWM przez UART lub i2c przez dodatkowy układ i sterować wypełnieniem w locie.

Pozdrawiam
użytkownik DaroX7
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości