Witam
Zacząłem nowy miniprojekt i wyszło, że najlepiej byłoby użyć dwóch linii PWM. Ponieważ mam pod ręką sporo ATTiny13, postanowiłem wykorzystać ten typ. W dokumantacji napisano i to chyba nawet kilka razy, że ATTiny13 posiada dwa niezależne komparatory. No to napisałem:
Czyli moim zdaniem ustawiłem Fast PWM i włączyłem dwie linie do generowania PWM i kazałem licznikowi liczyć... (Procedurę obsługi przerwania wyrzuciłem z listingu.)
Problem jest taki, że kiedy odpalam to w symulatorze pod AVR Studio 4, to licznik się "kręci", ale PWM nie działa. Gdy włączę tylko linię a LUB b, to owszem, ta jedna linia chodzi. Ale obie już nie.
Pytanie mam takie, czy:
1. Coś skopałem
2. Symulator nie daje rady
3. ATTiny13 ma dwa komparatory, ale w zadnym trybie nie mogą one działać jednocześnie tworząc 2 kanały PWM.
Zacząłem nowy miniprojekt i wyszło, że najlepiej byłoby użyć dwóch linii PWM. Ponieważ mam pod ręką sporo ATTiny13, postanowiłem wykorzystać ten typ. W dokumantacji napisano i to chyba nawet kilka razy, że ATTiny13 posiada dwa niezależne komparatory. No to napisałem:
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#define LED (1 << PB0)
#define PING (1 << PB1)
#define ECHO (1 << PB2)
#define FAST_PWM ((1 << WGM01) | (1 << WGM00))
#define COMPARE_MODE ((1 << COM0A1) | (0 << COM0A0) || (1 << COM0B1) | (0 << COM0B0))
int main ()
{
MCUCR = (1<< ISC00) | (1 << ISC01); // listen to raising edge pin change
PCMSK = 1 << PCINT2; // configure interrupt on pin 2 change
GIMSK = 1 << PCIE; // enable pic change interrupts
DDRB = LED | PING;
OCR0B = 0x80; // square 50% ping wave
OCR0A = 0x40;;
TCCR0A = FAST_PWM | COMPARE_MODE;
TCCR0B = 1 << CS00;
sei();
while(1)
{}
}Czyli moim zdaniem ustawiłem Fast PWM i włączyłem dwie linie do generowania PWM i kazałem licznikowi liczyć... (Procedurę obsługi przerwania wyrzuciłem z listingu.)
Problem jest taki, że kiedy odpalam to w symulatorze pod AVR Studio 4, to licznik się "kręci", ale PWM nie działa. Gdy włączę tylko linię a LUB b, to owszem, ta jedna linia chodzi. Ale obie już nie.
Pytanie mam takie, czy:
1. Coś skopałem
2. Symulator nie daje rady
3. ATTiny13 ma dwa komparatory, ale w zadnym trybie nie mogą one działać jednocześnie tworząc 2 kanały PWM.
