Hallo zusammen,
ich möchte bei meinem ATMega168 den PWM Port OC2B bzw. PD3 nutzen. Leider kenn AVR_GCC die entsprechenden Konstanten nicht.
Hier mein Quellcode:
Code:
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
 
#include <avr/io.h>
#include <util/twi.h> 	    //enthält z.B. die Bezeichnungen für die Statuscodes in TWSR
#include <avr/interrupt.h>  //dient zur Behandlung der Interrupts
#include <stdint.h> 	    //definiert den Datentyp uint8_t
#include "twislave.h"
#include <stdlib.h>         //nötig für Zahlumwandlung mit itoa
#include <util/delay.h>

void pwm_init() {
	DDRD |= (1<<OC2B); // Port OC2B mit angeschlossener LED als Ausgang
	TCCR2B = (1<<WGM10) | (1<<COM1A1); // PWM, phase correct, 8 bit.
	TCCR2B = (1<<CS11) | (1<<CS10); // Prescaler 64 = Enable counter
	OCR2B = 128-1; 
}
Die Fehlermeldung:
Code:
app.c:28: error: 'OC2B' undeclared (first use in this function)
und der Makefile:
Code:
TARGET = app
MCU    = atmega168
DEVICE = atmega168
MCU_TARGET     = atmega128
CC     = avr-gcc
 
CFLAGS  =-mmcu=$(MCU) -Wall 
LDFLAGS =-mmcu=$(MCU)

$(TARGET): $(TARGET).o

$(TARGET).hex : $(TARGET)
	 avr-objcopy -j .data -j .text -O ihex $< $@

load: $(TARGET).hex
	avrdude -F -P com6 -p m168 -c stk500v2 -U flash:w:$(TARGET).hex -v

clean:
	rm -f *.o  *.hex $(TARGET)
Ich vermute es fehlt irgendwo ein include. Leider weiss ich nicht mehr weiter.

vg bjj