Witam serdecznie bo to moj 1 post na forum.
AVcc zwarte z Vcc Aref do amsy przez 100nF
PB1 - dioda sterowana PWM
PC0 - wejscie z czujnika CNY70
Układ ma sciemniac i rozjasniac diode w zaleznosci od napiecia podawanego na ADC0. Woltomierz poakzuje 1.5-3.5V
Całosc zasilana z 3 baterii AA ("paluszkow") Sam PWM działa. W połaczeniu z ADC juz nie.
Moge prosić mądrzejszych Kolegów o rade?
Pozdrawiam
Proszę zwracać uwagę, na poprawną pisownię - regulamin p.15
[zumek]
AVcc zwarte z Vcc Aref do amsy przez 100nF
PB1 - dioda sterowana PWM
PC0 - wejscie z czujnika CNY70
Układ ma sciemniac i rozjasniac diode w zaleznosci od napiecia podawanego na ADC0. Woltomierz poakzuje 1.5-3.5V
Całosc zasilana z 3 baterii AA ("paluszkow") Sam PWM działa. W połaczeniu z ADC juz nie.
Moge prosić mądrzejszych Kolegów o rade?
Pozdrawiam
#include <avr/io.h> // dost�p do rejestr�w
#include <avr/interrupt.h> // funkcje sei(), cli()definicje SIGNAL, INTERRUPT
#include <stdlib.h>
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define tbi(PORT,BIT) PORT^=_BV(BIT)
/********** ZMIENNE***********/
volatile uint16_t pwmA=0x09;
volatile int counter=0;
volatile uint16_t x;
/*************PWM************/
void PWM_Init (void)
{
sbi(DDRB,PB1);// OC1A jako wyjscie
sbi(DDRB,PB2); // OC1B jako wyjscie
TCCR1A = (1 << COM1A1)|(1 << COM1A0) | (1 << COM1B1)|(1 << COM1B0)|(1 << WGM11); // COM1A1 COM1A1 wypelnij +
TCCR1B = (1<<WGM13) | (1<<WGM12) | (0<<CS12) |(0<<CS11)|(1<<CS10); //wgm11:3 f \ast pwm CS10:3 prescale 1024
ICR1H = 0x03;
ICR1L = 0xFF ;
OCR1A =pwmA;
TIMSK |= (1 << TOIE1); //emable timer1 interrupt
sei();
}
SIGNAL (SIG_OVERFLOW1)
{
OCR1A = pwmA;
}
/*************ADC************/
void ADC_Init (void)
{
sei();
ADMUX=(0<<REFS1)|(1<<REFS0); //ustawienie Vref=AVcc
ADMUX=(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0); //ADC0
ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADFR)|(1<<ADSC)|(0<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
//ADEN w�aczenie przztwoernika
//ADIE interrupt enable
//ADFR free running
//ADPS preskaler 8
//ADSCrozpoczecie konwersji
}
SIGNAL (SIG_ADC)
{
counter++;
if(counter==50)
{
pwmA=(ADCL|(ADCH<<8));
counter=0;
}
}
int main (void)
{
PWM_Init(); //inicjalizajca PWM
ADC_Init();
for(;;)
{
}
return (0);
}
Proszę zwracać uwagę, na poprawną pisownię - regulamin p.15
[zumek]
