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

ATmega8 PWM problem ze zmianą wartości OCR1A

davidpi 03 Mar 2010 18:29 1626 2
REKLAMA
  • #1 7778806
    davidpi
    Poziom 10  
    Witam.
    Mam Pewien problem odnośnie PWM w ATmega8.
    Oto fragment programu testowego
    
    #include "avr/io.h"
    int main()
    {
    	OCR1B=120;
    	OCR1A=50;
    	DDRB=0xff;
    	DDRC=0x00;
    	PORTC=0xff;
    	TCCR1A |=(1<<COM1A1) | (1<<COM1A0) |(1<<COM1B1) | (1<<COM1B0) |(1<<WGM10)|(1<<WGM11);
    	TCCR1B |=(1<<CS10);
    	while(1)
    	{
    	if(PINC & (1 << 2) && (OCR1A < 1023)) OCR1A+=1;
    	if(PINC & (1 << 3) && (OCR1A > 997)) OCR1A-=50;
    	}
    	return 0;
    }
    

    którego symulacje przeprowadzam w AVRStudio 4. Po ustawieniu pinu 2 w porcie C, w moim mniemaniu wartość OCR1A powinna się zmieniać ale tylko w chwilach gdy licznik osiąga wartość maksymalną. Natomiast ta wartość zmienia się na bieżąco.
    Stąd moje pytanie jest następujące: co należy zrobić\poprawić aby efekt był taki jak zamierzony, czyli ta wartość zmieniała się tylko w chwilach gdy licznik osiąga wartość max?
    Z góry dziękuje za pomoc.
    I proszę nadgorliwych :D o nieodsyłanie mnie do datasheetów i tym podobnych rzeczy, ponieważ przejrzałem już je wiele razy. Słabo znam ang dlatego nie rozwiązało to problemu
  • REKLAMA
  • #2 7778925
    ZbeeGin
    Poziom 39  
    Co zrobić? Nic. Zapamiętaj na zawsze: symulacja programowa to jedno a praca programu w realnym sprzęcie to drugie.
  • #3 7779000
    davidpi
    Poziom 10  
    Zapewne masz rację z tym, że są to dwie różne rzeczy. Jednak moje pytanie było podyktowane tym, że licznik 2 zachowuje się całkiem normalnie podczas symulacji, tzn. zwiększa OCR2 tylko po osiągnięciu wartości TOP.
    Dzięki za pomoc, Przetestuję to w rzeczywistości i wtedy wszystkie niejasności będą rozwiane.
REKLAMA