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; } }





Zitieren

Lesezeichen