2012-07-26, 16:51 #1
Subject: Oktober 2008 Lauflicht
Hallo,
ich habe mich mal an der Programmieraufgabe versucht, vielleicht könnt ihr ja mal drüber schauen, ob euch irgendwas auffällt.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <stdint.h>
static void init (void);
static void wait (uint16_t interval);
static volatile uint8_t speed = 5;
ISR(INT0_vect) {
if(speed<10) {
speed++;
}
}
void main(void) {
init();
sei();
while(1) {
uint16_t warten=0;
while(speed>0) {
for(uint8_t i=0; i<8; i++) {
PORTA |= (1<<i); // active high, oder?
warten=speed*1000;
wait(warten);
speed--;
}
}
cli();
while(speed==0) {
sleep_enable();
sei();
sleep_cpu();
cli();
sleep_disable();
}
sei();
}
}
static void init (void) {
PORTA = 0x00; //sind ja active high oder?
DDRA = 0xff;
DDRD &= ~(1<<PD2);
PORTD |= (1<<PD2);
GICR |= (1<<INT0);
MCUCR |= (1<<ISC01);
MCUCR &= ~(1<<ISC00);
}
static void wait(uint16_t interval) {
for(volatile uint16_t i=0; i<interval; i++) {
}
}
|
|
2012-07-26, 20:19 #2
- Deine Einrückungen sind komisch.
- Setzt du PORTA auch irgendwann mal wieder auf low?
Ansonsten fällt mir beim schnellen drüber schauen nichts auf.
|
|