Subject: April-2009-Aufgabe 2a
Hi,
ich habe mal die Klausuraufgabe 2a vom April 2009 durchgearbeitet.
Wär echt super wenn sich jemand mal meine Lösung durchschaut und auf Fehlern überprüft
Vielen Dank schonmal
lg Dani
ich habe mal die Klausuraufgabe 2a vom April 2009 durchgearbeitet.
Wär echt super wenn sich jemand mal meine Lösung durchschaut und auf Fehlern überprüft

Vielen Dank schonmal
lg Dani

- #include <avr/io.h>
- #include <avr/interrupt.h>
- #include <avr/sleep.h>
- #define NUMLED 6
- /*Funktionsdeklarationen, globale Variablen, tec. */
- volatile static in laenge; /*länge der Schlange*/
- volatile static in running; /*Findet gerade eine Umrandung statt?*/
- volatile static in interrupt; /*gab es schon einen Interrupt?*/
- /*Unterbrechungsbehandlungsfunktion*/
- ISR (INT0_vect){
- if(interrupt == 0){
- if (running == 0){
- if (laenge < NUMLED)
- lange++;
- }
- else if (running == 1 && laenge > 1)
- lange --;
- }
- interrupt = 1;
- }
- /*Funktion main*/
- void main (){
- init();
- /* Initialisierung */
- laenge = 1;
- running = 0;
- interrupt= 0;
- sei();
- /* Hauptschleife */
- while(1){
- int i = 0;
- cli();
- running = 1;
- for (i; i < NUMLED; i++){
- ShowSnake(i;laenge);
- active_wait(5000);
- }
- interrupt = 0;
- sei();
- cli();
- running = 0;
- sei();
- /* Vorbereitung des naechsten Umlaufsbzw. Schlafen */
- cli();
- if (interrupt == 0 && laenge ==6){
- laenge = 1;
- sei();
- cli();
- }
- while(interrut == 0){
- sei();
- sleep_cpu;
- cli();
- interrupt = 0;
- sei();
- }
- /*Funktion init*/
- void init(){
- DDRB = 0xFF;
- DDRD = 0x00;
- PORTD |= (1<<PD2);
- MCUCR |= (1<<1) | (1<<0);
- GICR |= (1<<6);
- }
- /*Funktion active_wait()*/
- void active_wait (volatile unsigned int len){
- int i = o;
- for (i; i <= len; i++)
- sleep_cpu;
- }
Show profile
Link to this post