AVR Atmega8, PWM per Taster an

Gast #2288779
Lesenswert?
• ▲
▼
Hallo zusammen,

ich arbeite derzeit an meiner Bachelorarbeit und muss einen µ-Controller 
programmieren. Ich habe mir ein myAVR MK2 Plus Experimentierboard 
zugelegt. Ich möchte per Taster meine PWM einschalten. Die PWM startet 
einen Motor. Zum abstellen des Motors schalte ich ein Relais. Leider 
passt irgend etwas in meinem Code noch nicht. Nachdem ich die PWM 
eingeschaltet habe, lässt sich der Ausgang an dem das Relais liegt nicht 
mehr per Taster ansteuern. Umgekehrt funktioniert es (Zuerst Relais, 
dannach PWM).

Habe werder mit C noch mit µ-Controllern viel zu tun gehabt. Hoffe ihr 
habt Tipps und Anregungen für mich, wie ich dies lösen kann.

Flo
Angehängte Dateien:
#2288794
Lesenswert?
• ▲
▼
1
void pwm(uint16_t top, uint16_t wert, uint16_t zeit)
2

3
{
4
  // OC1A auf Ausgang
5
  DDRB = (1 << PB1 );  //ATMega8 ()
6

7
  ...

Damit ist dann deine Pindefinition für die Eingänge hinfällig geworden.

Zuweisungen an Register sind nur am Programmanfang sinnvoll. Danach 
IMMER nur das eine Bit bearbeiten (mittels & bzw |) das verändert werden 
soll.


Dann auch noch
1
void pwmout()
2

3
{
4
   TCCR1A = (0<<WGM11)|(0<<WGM10);
5
}
so werden keine Bits gelöscht. Das ist gleichwertig mit
1
void pwmout()
2

3
{
4
   TCCR1A = 0;
5
}
und du hast das Glück (Pech?), dass das bei dir in diesem Fall genau 
dasselbe macht.
#2288822
Lesenswert?
• ▲
▼
Karl Heinz Buchegger schrieb:

> Damit ist dann deine Pindefinition für die Eingänge hinfällig geworden.

Ausgänge natürlich.
Die Zuweisung hat alles auf Eingang gesetzt, bis auf PB1


nächster Tip:
Die DDR Definitionen zieht man normalerweise an den programmanfang 
zusammen und dort bleiben sie dann auch so. D.h. während das Programm 
arbeitet wird das DDR Register nicht angerührt. Einzige Ausnahme: wenn 
ein Pin abwechselnd Ein- / Ausgang sein muss, wie es zb bei I2C 
Kommunikation notwendig ist.

Und arbeite an deiner Codeformatierung. Die ist ja grauenhaft. Wenn du 
mir sowas abgeben würdest, schmeiss ich es dir aus formalen Gründen 
zurück.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.