Chandler
13.12.2014, 10:03
Hallo,
ich möchte mit dem Attiny eine LED heller und dunkler werden lassen. Aber sie bleibt bei mir ganz dunkel
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
uint8_t i;
int main(void) {
i = 0;
DDRB |= (1<<PB0);
PORTB &= ~(1<<PB0);
DDRB |= (1 << PB1);
PORTB &= ~(1<<PB1);
TCCR0A |= 1<<COM0A1 | 1<<WGM01 | 1<<WGM00;
TCCR0B |= 1<<WGM02 | 1<<CS02 | 1<<CS00;
OCR0A = 256-1;
OCR0B = 0;
sei();
while(1)
{
for (i=0; i<250; i++){
OCR0B = i;
_delay_ms(10);
}
for(i=250; i>0; i--){
OCR0B = i;
_delay_ms(10);
}
}
}
Eigentlich denke ich, dass der Pin mit OC0A (PB0) alle 32ms auf High gesetzt wird (OCR0A=255) und sobald OCR0B seinen Wert erreicht hat, wird der Pin wieder auf Low gesetzt.
in der whil-Schleife setze ich OCR0B ja immer höher und anschließend immer niedriger. Damit möchte ich eigentlich, dass die LED heller und dunkler wird.
Aber meine LED bleibt komplett aus :(
habe ich noch etwas vergessen?
Chandler
ich möchte mit dem Attiny eine LED heller und dunkler werden lassen. Aber sie bleibt bei mir ganz dunkel
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
uint8_t i;
int main(void) {
i = 0;
DDRB |= (1<<PB0);
PORTB &= ~(1<<PB0);
DDRB |= (1 << PB1);
PORTB &= ~(1<<PB1);
TCCR0A |= 1<<COM0A1 | 1<<WGM01 | 1<<WGM00;
TCCR0B |= 1<<WGM02 | 1<<CS02 | 1<<CS00;
OCR0A = 256-1;
OCR0B = 0;
sei();
while(1)
{
for (i=0; i<250; i++){
OCR0B = i;
_delay_ms(10);
}
for(i=250; i>0; i--){
OCR0B = i;
_delay_ms(10);
}
}
}
Eigentlich denke ich, dass der Pin mit OC0A (PB0) alle 32ms auf High gesetzt wird (OCR0A=255) und sobald OCR0B seinen Wert erreicht hat, wird der Pin wieder auf Low gesetzt.
in der whil-Schleife setze ich OCR0B ja immer höher und anschließend immer niedriger. Damit möchte ich eigentlich, dass die LED heller und dunkler wird.
Aber meine LED bleibt komplett aus :(
habe ich noch etwas vergessen?
Chandler