logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[attiny 2313] [C] Problem attiny2313 PWM na Timer1

Mystery 29 Sty 2009 00:26 2841 4
REKLAMA
  • #1 6069850
    Mystery
    Poziom 14  
    Witam!

    Mam problem z ustawieniem Timera 1 tak aby pracował w trybie Fast PWM 8-bitowym.

    #include <avr/io.h>
    
    void pwm_init()
    {
    	OCR0A=0x90; // przykładowe wartości
    	OCR0B=0x50;
    	TCCR0A=0b11110011;
    	TCCR0B=0b00000010;
    	OCR1A=0xA0;
    	OCR1B=0x60;
    	TCCR1A=0b11110001;
    	TCCR1B=0b00001010;
    }
    
    int main()
    {
    	DDRB=0b00011100;
    	PORTB=0x00;
    	DDRD=0b00100000;
    	PORTD=0x00;
    	pwm_init();
    
    	while(1) asm volatile ( "nop" "\n\t" ::);;
    	return 0;
    }


    Chodzi mi o działanie równoległe T1 i T0.
    W tym programie T0 pracuje tak jak powinno a T1 co prawda w trybie 8-bitowym, ale nie fast PWM tylko chyba Phase Correct. Tzn. zlicza najpierw w górę, a potem w dół.
    Gdzie tu jest błąd?
  • REKLAMA
  • #2 6072846
    ZbeeGin
    Poziom 39  
    Mystery napisał:
    W tym programie T0 pracuje tak jak powinno a T1 co prawda w trybie 8-bitowym, ale nie fast PWM tylko chyba Phase Correct. Tzn. zlicza najpierw w górę, a potem w dół.

    Jak to kolega wogóle stwierdza, że licznik pracuje w ten sposób? Jeśli symulacją z AVR Studio to wszystko wyjaśnia.
  • REKLAMA
  • #3 6072913
    Mystery
    Poziom 14  
    Dokładnie na symulacji AVRStudio. Układ jeszcze jest nie polutowany więc nie mogę go na żywo przetestować. O czymś nie wiem?
  • REKLAMA
  • Pomocny post
    #4 6072922
    ZbeeGin
    Poziom 39  
    Niestety symulacja programowa liczników w trybie FastPWM jest nieadekwatna do tego co rzeczywiście robi procesor.
    Trzeba uruchomić w docelowym układzie lub przez JTAG ICE (ale to są koszta).
  • #5 6072963
    Mystery
    Poziom 14  
    Aha czyli nie ja tu popełniłem błąd. Wielkie dzięki. Sprawdzę go na żywo jak skończę układ.
REKLAMA