pw funktioniert nicht oder falsch geflashed?

Gast #630614
Lesenswert?
• ▲
▼
hi.
also ich habe vorhin das beispiel vom mc-project.de zum thema pwm 
compiliert.
1
/***********************************************************
2
  Beispiel zur Initialisierung und Verwendung
3
  der PWM des Atmega8
4
  --> Dimmen von LEDs an den Ports OC1A und OC1B
5
***********************************************************/
6

7
#include <avr/io.h>
8
#include <pwm_init.c>
9
#include <simple_delayroutinen.c>
10

11
int main(void) {
12
  
13
    unsigned char i = 0;
14
  pwm_init ();
15
  
16
    for (;;) {
17
    
18
    for (i=0; i<254; i++) {
19
      OCR1A = i;
20
      OCR1B = i;
21
      delay_us (10000);
22
    }
23
  }
24
}

das compilieren an sich verlief nach einiger zeit fehlerfrei.
dann habe ich den chip mit folgendem code und avrdude geflashed:
1
avrdude -p m8 -c sp12 -U flash:w:test.hex
2
pause

aber wenn ich dann die led an oc1b halte, leuchtet diese einfach 
dauerhaft.
woran könnte das liegen?
Gast #630928
Lesenswert?
• ▲
▼
1. Was hat das mit PC-Programmierung zu tun?
2. Du willst doch dimmen, dann sollte die PWM doch dauerhaft an sein und 
lediglich heller oder dunkler werden.

Für mehr Antworten, mehr Input
Marcus
Gast #631775
Lesenswert?
• ▲
▼
1. ich dachte es kommt hier rein, weil ich am pc programmiere und es 
compiliere, naja sorry wenns falsch ist.

2. und aus dem quelltext lese ich zumindest, dass er die led von 0 auf 
254 dimmt.
also müsste sie ja langsam heller werden, dann wieder dunkel sein und 
wieder langsam hell werden.
und das als endlosschleife.
Gast #632539
Lesenswert?
• ▲
▼
hier ist mal die pwm_init.c:
1
/***********************************************************
2
  Funktion zur Initialisierung der PWM des Atmega8
3
***********************************************************/
4

5
void pwm_init (void) {
6

7
  DDRB = (1<<PB1) | (1<<PB2);
8
  PORTB = ~(1<<PB1) & ~(1<<PB2);
9

10
  //Timer Counter Control Register A
11
  
12
    TCCR1A =  (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0) |(1<<COM1B1) | (1<<COM1B0); //8bit PWM, phase correct
13
  //TCCR1A =  (1<<WGM11) | (1<<COM1A1) | (1<<COM1A0) |(1<<COM1B1) | (1<<COM1B0); //9bit PWM, phase correct
14
  //TCCR1A =  (1<<WGM10) | (1<<WGM11) | (1<<COM1A1) | (1<<COM1A0) |(1<<COM1B1) | (1<<COM1B0); //10bit PWM, phase correct    
15
  
16
  /*COM1A1,COM1A0,COM1B1, COM1B0 = setze OC1A und OC1B bei Compare Match beim Hochzählen,
17
    lösche sie bei Compare Match beim Runterzählen*/
18
  
19
  //Timer Counter Control Register B
20
  
21
  //TCCR1B = (1<<CS10) | (1<<WGM12);        //MCU clock / 0
22
    TCCR1B = (1<<CS11) | (1<<WGM12);        //MCU clock / 8
23
  //TCCRB = (1<<CS10) | (1<<CS11) | (1<<WGM12);  //MCU clock / 64 
24
  //TCCRB = (1<<CS12) | (1<<WGM12);        //MCU clock / 256 
25
  //TCCRB = (1<<CS10) | (1<<CS12) | (1<<WGM12);  //MCU clock / 1024
26
  
27
  /*WGM12 = Timer/Counter mode of operation: CTC (Clear Timer on Compare Match)
28
  8bit (/510):      7,8KHz, 980Hz, 122,5Hz, 30,6Hz, 7,7Hz
29
  9bit (/1022):      3,9kHz, 488Hz, 61Hz, 15Hz, 3,8Hz
30
  10bit (/2046):       1,95Khz, 244Hz, 30,5Hz, 7,6Hz, 1,9Hz*/
31

32
}
Gast #633261
Lesenswert?
• ▲
▼
Hi, also ich sehe da nicht das du den global interrupt flag setzt,
das würde sozusagen das pwm auslassen,..

Es wird auch empfohlen die änderung in OCRnX im interrupt handler zu 
ändern, weil da kann dieser auch net durch ein weiteres interrupt beim 
setzen unterbrochen werden,...
1
CTCint:
2
ldi temp,32
3
out OCRnX,temp
4
reti

grüüße

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.