Hallo ,
Ich hab diesen Code geschrieben , am anfang gings mit dem PWM Signal aber jetzt kommt nur 0V von PD5 woran kann es liegen dh es gibt kein PWM signal mehr??
MErci
Code:
#include <avr/io.h>
#include <inttypes.h>
#include <stdlib.h>
#define F_CPU 4433618UL //Oscillator-frequenz in Hz
#define BAUD 19200UL
#define UBRR_BAUD ((F_CPU/(16UL*BAUD))-1)
/* LED */
#define LED 4 //PIN 5 vom PORTA als LED nennen
#define LED_ON PORTA |= (1 << LED ) //PIN5 HIGH
void init_led (void)
{
DDRA |= (1 << LED); //PIN5 von DDRA als ausgang
}
/* ADC */
#define ADC_PIN 0 //PIN 0 vom PORTA als ADC nennen
void adc_init(void)
{
DDRA &= ~(1 << ADC_PIN); //PIN 0 vom PORTA als Eingang
ADMUX = ADC_PIN; //AD-Wandlerkanal 0 (ADC0) auswählen
ADMUX |= (1<<REFS0); //AVCC als Referenzspannung
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS0); //AD-Wandler einschalten und Prescaler = 32 einstellen
}
#define start_a2d ADCSRA |= (1<<ADSC) //Wandlung starten
/* PWM */
// PORT AND PIN CONFIGURATION
#define PWM_PIN 5
void pwm_init(void)
{
DDRD |= (1 << PWM_PIN);
// normale 10-bit Fast PWM aktivieren (nicht invertiert),
TCCR1A = (1<<COM1A0)|(1<<WGM11)|(1<<WGM10);
// Einstellen der PWM-Frequenz auf 4 kHz (Prescaler = 1024)
TCCR1B = (1<< CS12) | (1<<CS10) |(1<<WGM12);
// Interrupts für Timer1 deaktivieren
TIMSK &= ~0x3c;
}
int main(void) {
uint16_t adc_result;
uint16_t z;
uint32_t y;
init_led();
adc_init();
pwm_init();
while(1)
{
LED_ON;
start_a2d;
while ( !(ADCSRA & (1<<ADIF))); //Warten bis die AD-Wandlung abgeschloßen ist
adc_result = ADCL | (ADCH<<8) ; //AD-Wert auslesen
y = adc_result/1024 ;
z= ((y*1023)/716)*1024;
OCR1A = z;
}
}
Lesezeichen