Forum: Mikrocontroller und Digitale Elektronik Fast PWM nicht invertiert ?


von Huber M. (michael_h784)


Lesenswert?

Hallo,

Könnte mir mal bitte jemand drüber schauen wo ich meinen Fehler 
eingebaut habe? Es soll eine yc gesteuerte nicht invertierende fast PWM 
werden. Jetzt, wenn ich sie auf den controller lade, fängt es sofort von 
0 bis ganz hell zu werden. Ohne das ich einen Taster betätige. Und 
bleibt dann hell. Auch eine taster betätigung bring keine veränderung, 
egal welcher art. Ich kann mir das noch so oft durchsehen, ich sehe 
meinen fehler nicht.

-Atmel Studio 6.2
-original AVR mk2 ISP PRogrammer
-ATMEGA8A

*
 * GccApplication12.c
 *
 * Created: 30.08.2016 12:30:27
 *  Author: Huber
 */


#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 1000000UL
#include <util/delay.h>

int main(void)
{
  DDRB |= (1<<PB1);
  PORTD |= (1<<PD2) | (1<<PD3);

  //FAst PWM  nicht invertiert einstellen

  TCCR1A |= (1<<WGM10);  // PWM 8 bit
  TCCR1B |= (1<<WGM12);  //
  TCCR1B |= (1<<CS12);   // Vorteiler 256
  TCCR1A |= (1<<COM1A1); // nicht invertierender pwm modus
  OCR1A = 0;
  sei();

    while(1)
    {
    if (!(PIND&(1<<PD5))) //wenn taster 1 gedrückt ist dan...
    {
      if (OCR1A < 255) // wenn der maximalwert noch
                                         nicht erreicht ist, dann 
ledheller
      {
        OCR1A++;     // verbreite die signalbreite um eins 1
      }

      _delay_ms(15);
    }
        if (!(PIND&(1<<PD3)))
        {
      if (OCR1A > 0)
      {
        OCR1A--;

      }
      _delay_ms(15);
        }
    }
}

: Verschoben durch User
von Felix P. (fixxl)


Lesenswert?

Kein Pullup an PD5 aktiviert (sondern an PD2) => floatender Input => 
wildes Erkennen von Tastendrücken.

Also die Zeilen
1
PORTD |= (1<<PD2) | (1<<PD3);
und
1
if (!(PIND&(1<<PD5))) //wenn taster 1 gedrückt ist dan...
richtig aufeinander abstimmen.

von Huber M. (michael_h784)


Lesenswert?

Danke, ich glaube ich sollte mal ne pause machen :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.