www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C Kompilierung im Avr-Studio


Autor: Tobias Glück (doppelkeks)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe versucht die pwm des 8-bit timers eines ATmega 8 in C zu 
programmieren.

#include<avr/io.h>
void main(void)
{
  DDRB |= (1<<DDB3);
  TCCR0 |= (1<<WGM00)|(1<<COM01)|(1<<CS00);
  while(1)
  {
  OCR0 = 0x11;
  }
}

Beim kompilieren über das Winavr plug-in für Avr-Studio gelang es mir 
nicht das Register OCR0 zu "beschreiben", sonst läuft alles. Mit einem 
externen Makefile war es möglich, ebenso direkt in Winavr. Hat jemand 
eine Ahnung, welche Einstellungen im Avr-Studio vorgenommen werden 
müssen um einen reibungsfreien Ablauf über das plug-in zu gewährleisten? 
Oder denkt Ihr, das ist sowieso totaler Schrott?

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

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich deinen Code durchjage, kriege ich
avr-gcc.exe  -mmcu=atmega8 -Wall -gdwarf-2 -O0 -MD -MP -MT Forum3.o -MF dep/Forum3.o.d  -c  ../Forum3.c
../Forum3.c:3: warning: return type of 'main' is not `int'
../Forum3.c: In function `main':
../Forum3.c:5: error: `WGM00' undeclared (first use in this function)
../Forum3.c:5: error: (Each undeclared identifier is reported only once
../Forum3.c:5: error: for each function it appears in.)
../Forum3.c:5: error: `COM01' undeclared (first use in this function)
../Forum3.c:8: error: `OCR0' undeclared (first use in this function)
make: *** [Forum3.o] Error 1

Da du die ersten 2 undefined references nicht kriegst, gehe
ich mal davon aus, dass du keinen Mega8 eingestellt hast.

Autor: Stefan Gemmel (steg13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der mega8 kennt keinen WGM00

Autor: Tobias Glück (doppelkeks)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tschuldigung ein atmega 16, hab mich verschrieben. Mit dem 16-bit timer 
ist es das Gleiche.

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

Bewertung
0 lesenswert
nicht lesenswert

avr-gcc.exe  -mmcu=atmega16 -Wall -gdwarf-2  -O0 -fsigned-char -MD -MP -MT Forum3.o -MF dep/Forum3.o.d  -c  ../Forum3.c
../Forum3.c:3: warning: return type of 'main' is not `int'
avr-gcc.exe -mmcu=atmega16  Forum3.o     -o Forum3.elf
avr-objcopy -O ihex -R .eeprom  Forum3.elf Forum3.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex Forum3.elf Forum3.eep

AVR Memory Usage
----------------
Device: atmega16

Program:     178 bytes (1.1% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)


kompiliert wunderbar.

Autor: Tobias Glück (doppelkeks)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja kompiliert wunderbar, leider funktionierts nicht im Simulator.

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

Bewertung
0 lesenswert
nicht lesenswert
Doch. Klappt wunderbar.

Richte dein Augenmerk mal auf das Datenblatt, Seite
83. In der Tabelle 38, steht in der Zeile "PWM, Phase
Correct" eindeutig, dass der OCR0 Wert erst dann ins
eigentliche OCR0 Register übernommen wird, wenn der Zähler
seinen TOP Wert erreicht hat.
Und ganau das passiert. Der Zähler zählt hoch und hoch.
In dem Moment, in dem er 0xFF erreicht hat, wird OCR0
zu 0x11 und der Zähler zählt wieder runter.

Autor: Tobias Glück (doppelkeks)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal danke,

ich habs heute nochmal versuch und es funktoniert alles. Weiß nicht was 
ich falsch gemacht hab. Trotzdem vielen Dank Karl Heinz.

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.