Gast
#861958
Moin ich hab jetzt ein bisschen mit pwm experimentiert und eigentlich
läuft soweit alles (rgb Farbwechsel) aber ein Problem hab ich noch: es
wird nicht die max. Spannung also die Versorgungsspannung ausgegeben.
Ist das normal oder hab ich nen Fehler im code ?
#define F_CPU 4000000UL /* Quarz mit 4 Mhz */
#include <avr/io.h>
#include <stdint.h>
#include <inttypes.h>
#include <util/delay.h>
#include <avr/interrupt.h>
volatile uint8_t led1 = 125; // Rot
volatile uint8_t led2 = 135; // Grün
volatile uint8_t led3 = 255; // Blau
volatile uint8_t pwmcnt0 = 1;
volatile uint8_t farben[25] =
{0,135,0,125,0,0,0,0,255,125,135,0,125,0,75,0,135,75,125,75,25,125,135,2
55};
ISR(TIMER0_OVF_vect)
{
++pwmcnt0
if(pwmcnt0 <= led1)
{
PORTA |= (1<<PA0); //LED an
}else
{
PORTA &= ~(1<<PA0); //LED aus
}
if(pwmcnt0 <= led2)
{
PORTA |= (1<<PA1); //LED an
}else
{
PORTA &= ~(1<<PA1); //LED aus
}
if(pwmcnt0 <= led3)
{
PORTA |= (1<<PA2); //LED an
}else
{
PORTA &= ~(1<<PA2); //LED aus
}
}
int main()
{
DDRA = 0xFF; //A auf Ausgang
DDRB = 0x00; //A auf Eingang
PORTB = 0xFF; //PullUp's an
TCCR0 = (1<<CS00); //prescaler 1
TIMSK = (1<<TOIE0); //Overflow
sei(); //interrupts an
while(1)
{
}
return 0;
}
wenn nun wie im code angegeben die LED für Blau den Wert 255 bekommt
sollte die Versorgungsspannung ja kontinuierlich aktiv sein und es
sollten bei Vcc 5V auch 5V am Pin anliegen, aber gemessen hab ich nur
bisschen mehr als 4V.
Hab ich irgendwas falsch gemacht oder ist das so ?