Ich versuche zur Zeit mich in PWM einzuarbeiten, das Programm funktioniert so weit , das Problem ist ein anderes.
Code:
#include <avr/io.h>
#include <util/delay.h>
//Atmega 16 | Interner Takt=1MHz
// [PD5]--+--[LED]--+--[Widerstand]--+--[Masse] angeschlossen
int main(void)
{
PORTD = 0xff; //Pull-Ups aktivieren
DDRD = (1<<PD5); //Pin5 Ausgang
//Takt=1Mhz ; Prescaler=1024 => 976,56 Hz
TCCR1A = (1<<WGM10) | (1<<COM1A1); //8Bit PWM | Nicht invertierende PWM
TCCR1B = (1<<CS12) | (1<<CS10); //Prescaler Ck/1024 = 976,56Hz
OCR1A = 0; //Vergleichswert = 0
uint8_t i;
for(i=1;i++;i<=255)
{
OCR1A++; //Vergleichswert um 1 erhöhen
_delay_ms(100); //100ms warten
}
while(1);
}
Wenn ich mir das Ausgangssignal am Oszilloskop anschauen will ändert sich das Signal nach ein paar Sekunden und ich habe kein typisches PWM-Ausgangssignal mehr, sondern nur ein ,ich sag mal "gleichgerichtetes Signal" .
Oszi Tektronix 2225:
Angeschlossen hab ganz normal die Masse vom CH1(Kanal 1) an die Masse vom AVR und die Tastspitze an den PD5.
Einstellungen: CH1 ,DC , ich kann auch ein Video reinstellen, falls das besser ist.
Es liegt also ständig nur eine Spannung an, kein wechselndes Signal von z.B. 5Volt - 0Volt.
Wenn ich danach nochmal die Led mit Vorwiderstand an PD5 anschließe blinkt sie nicht mehr, leuchtet nur die ganze Zeit, als ob das Oszilloskop das Programm verändert hat.
Ich weiß auch nicht was ich falsch mache, vielleicht ist am Oszi defekt aber ich kann mir nicht erklären wie sich das SIgnal ädern kann.
Vielleicht könnt ihr mir weiterhelfen.
Mfg µautonom
Lesezeichen