mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM Bitte dringend Hilfe


Autor: Nycromatic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute ...

ich hab einen Code für eine PWM geschrieben, der eigentlich auch gut 
lief, aber dann hab ich zwischendurch ein wenig rumgespielt damit und 
auf einmal läuft es nichtmehr. Sieht einer von euch woran es liegen 
könnte? Es soll eigentlich nur eine LED heller und dunkler werden.

#include <avr/io.h>
#include <util/delay.h>

void main (void)
{

DDRD=0xff;
DDRB = 0x02;
TCCR1A =  0xC1; //8-Bit PWM
TCCR1B =  0x01; //Teiler mit CPU Frequenz

int i=50;
int k=2;

while (k!=1)
{
while (i!=250)
{
i=i+1;
_delay_ms(5);

OCR1A=i; 
}

i=250;
while (i!=1)
{
i=i-1;
_delay_ms(5);

OCR1A=i;
}

}
}

Autor: Michael H. (michael_h45)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> PWM Bitte dringend Hilfe
Und warum jetzt so dringend? Helfen wird dir das Wort hier sicher 
nicht...
Verstehst du denn den Code, den du geschrieben hast?

Und gewöhn dir Einrückung an, das hilft nicht nur zuletzt dir.

Autor: Nycromatic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dringend, weil ich an einem Hochzeitsgeschenk bastel, wofür ich das 
brauche und das sollte bis Donnerstag laufen. Ich hab mir das aus 
verschiedenen Foren zusammengesucht. Also so wirklich was da gemacht 
wird weiß ich nicht.

Wäre aber super wenn mir jemand helfen könnte.
Danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Code ist zwar scheuslich formatiert und auch sonst eher ungelenk, 
aber im großen und ganzen sehe ich nichts was da die Funktion verhindern 
würde.

Welcher Prozessor ist das überhaupt?
Bist du sicher, dass du die LED an den richtigen Pins hast?

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OCR1A=i

Was wird da eigentlich zugewiesen, das high-Byte oder das low-Byte?

i ist "int" was ja wohl 16bit bedeutet.
Vielleicht besser "unsigned short int i" definieren.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Dein Code ist zwar scheuslich formatiert und auch sonst eher ungelenk,

So sollte das aussehen
#include <avr/io.h>
#include <util/delay.h>

#define LED_1  PB0
#define LED_2  PB1

int main (void)
{
  DDRD = 0xff;
  DDRB = (1<<LED_1) | (1<<LED_2);

  TCCR1A =    (1<<COM1A1) | (1<<COM1A0)   // set on up, clear on down
            | (1<<WGM01);                 // phase correct PWM, 8 Bit
  TCCR1B =  (1<<CS10);                    // Prescaler: 1

  while( 1 )
  {
    for( i = 0; i < 250; ++i )
    {
      OCR1A = i;
      _delay_ms(5);
    }

    for( i = 249; i > 0; --i )
    {
      OCR1A = i;
      _delay_ms(5);
    }
  }
}

Autor: Nycromatic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein ganz großes SORRY,

hab den Fehler gefunden. Ich hab aus versehen beim rumbasteln auf der 
Platine eine Lötstelle mit weggesaugt und schon kam von PB1 nichts mehr 
...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Helmut S. schrieb:
> OCR1A=i
>
> Was wird da eigentlich zugewiesen, das high-Byte oder das low-Byte?

Low

> i ist "int" was ja wohl 16bit bedeutet.
> Vielleicht besser "unsigned short int i" definieren.

aus Effizienzgründen: ja.
Da sein Code aber sowieso _delay_ms benutzt, spielt es keine große Rolle

Autor: Michael H. (michael_h45)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nycromatic schrieb:
> Ich hab mir das aus
> verschiedenen Foren zusammengesucht. Also so wirklich was da gemacht
> wird weiß ich nicht.
Das ist durchaus bemerkenswert - und da ist ohne jegliche Ironie 
gemeint.

Viele andere sind dazu nicht in der Lage und darüberhinaus auch bei 
weitem nicht, das dann bei Erstkontakt mit der Materie eigenständig und 
funktionierend auf eine Platine zu bringen.

Ich hoffe, du fühlst dich ermutigt, auf dem Gebiet weiterzumachen. Aber 
Vorsicht, der eigenen Hochzeit muss sowas nicht unbedingt zuträglich 
sein =)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.