PWM ATmega 8

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

peto2301
Okoloidúci
Okoloidúci
Príspevky: 33
Dátum registrácie: 18 Feb 2009, 00:00
Bydlisko: PETROVCE 142
Kontaktovať používateľa:

PWM ATmega 8

Príspevok od používateľa peto2301 » 15 Máj 2015, 16:38

Zdravim, vedel by mi niekto pomoct ako by sa dal vyriesit moj problem s PWM. Potrebujem regulovat otacky DC motorceka a to tak ze ak stlacim S1 (schema) motor sa spomali a anopak ak stlacim S2 motor sa zrychli. Len neviem ci som si navrhol dobru chemu plus program bol by niekto ochotny kto sa v tom vyzna a skontroloval mi to ? Dik.
zdrojovy kod

Kód: Vybrať všetko

#include <avr/io.h>  
#include <avr/interrupt.h>  
#include <util/delay.h>  
  
ISR(INT0_vect){    
   if(OCR1A < 245) OCR1A+=10;  
}    
    
ISR(INT1_vect){    
     if(OCR1A > 10) OCR1A-=10;       
}   
  
int main(){  
  
    DDRB |= (1 << PB1);    // OC1A ako výstupný  
  
// REZIM 5 - Fast PWM 8bit,   
    TCCR1A |= (1 << COM1A1) | (1 << WGM10);  
    TCCR1B |= (1 << WGM12) | (1 << CS11); // preddelička 8 pri 8 MHz = (1us)  
      
    // PD2,PD3 ako vstupné (ext. prerušenia)     
    DDRD &= ~((1 << PD2) | (1 << PD3));     
    
    // Zapnutie interného pull-up rezistora    
    PORTD |= (1 << PD2) | (1 << PD3);     
  
    MCUCR |= (1 << ISC01); // dobežná hrana INT0    
    MCUCR |= (1 << ISC11); // dobežná hrana INT1    
    GICR |= (1 << INT1) | (1 << INT0); // povol prerušenia od INT1 a INT0   
  
  
    OSCCAL = 0xA5;    // nastavenie kalibracneho bajtu interneho RC oscilatora  
          
    sei(); // povol globalne prerušenia  
  
    while(1);  
  
return 0;  
}
Prílohy
schema.png
0

  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok