U23 2008-2/Gruppe1
Contents
Meta Data
Mitglieder
- Mark
- Christoph
- Hendrik
- Robert
Code
1. Abend
LED - Blinken
- Aufgabe: Eine LED soll zum blinken gebracht werden.
- Code:
<source lang ="c"> //**************************************************************************** // * // * Von Gruppe 1 // * Aufgabe: Eine LED soll zum blinken gebracht werden. // * Lösung: Alle LEDs werden zum blinken gebracht // * //****************************************************************************
- include <avr/io.h>
- include <util/delay.h>
int main(void) { unsigned int i;
/* Setze Ports PC4, PD3, PD6 und PD7 als Ausgang */ DDRC = (1<<DDC4); DDRD = (1<<DDD7)|(1<<DDD6)|(1<<DDD3); /* Setze Ports PC4, PD3, PD6 und PD7 auf high */ PORTC = (1<<PC4); PORTD = (1<<PD7)|(1<<PD6)|(1<<PD3);
while(1) { for (i=0;i<50;i++) _delay_loop_2(0);
PORTC ^= _BV(PC4); PORTD ^= _BV(PD7)|_BV(PD6)|_BV(PD3);
} return 0; }
</source>
LED - Einschalten
- Aufgabe: Eine LED soll zum leuchten gebracht werden.
- Code:
<source lang ="c"> //**************************************************************************** // * // * Von Gruppe 1 // * Aufgabe: Eine LED soll zum leuchten gebracht werden. // * //****************************************************************************
- include <avr/io.h>
int main(void) {
/* PC4 auf Ausgang */ DDRC = &b10000; /* Alternativ Hex: 0xF oder Dezimal: 16 */ /* 7 6 5 4 3 2 1 0 */ /* 0 0 0 1 0 0 0 0 */
/* PC4 einschalten */ PORTD = &b10000;
/* Endlosschleife */ while(1) { }
}
</source>
LED - Lauflicht
- Code:
<source lang ="c"> //**************************************************************************** // * // * Von Gruppe 1 // * //****************************************************************************
- include <avr/io.h>
- include <util/delay.h>
int main(void) { unsigned int i;
/* Setze Ports PC4, PD3, PD6 und PD7 als Ausgang */ DDRC = (1<<DDC4); DDRD = (1<<DDD7)|(1<<DDD6)|(1<<DDD3); /* Setze Ports PC4, PD3, PD6 und PD7 auf low */ PORTC = (0<<PC4); PORTD = (0<<PD7)|(0<<PD6)|(0<<PD3);
while(1) {
PORTC ^= _BV(PC4); for (i=0;i<50;i++) _delay_loop_2(0); PORTC ^= _BV(PC4); PORTD ^= _BV(PD3); for (i=0;i<50;i++) _delay_loop_2(0); PORTD ^= _BV(PD3); PORTD ^= _BV(PD6); for (i=0;i<50;i++) _delay_loop_2(0); PORTD ^= _BV(PD6); PORTD ^= _BV(PD7); for (i=0;i<50;i++) _delay_loop_2(0); PORTD ^= _BV(PD7);
} return 0; } </source>
2. Abend
Änderungen des IR-Signals werden aufgezeichnet, und auch zeitlich ausgewertet. Messung ist jedoch relativ ungenau. Implementation von Timer / Counter fehlt.
<source lang ="c"> /* ################################### */ /* # IR-Empfang # */ /* # Von Gruppe 1 # */ /* ################################### */ /* # Done: IR-Signale chronologisch # */ /* # aufzeichnen # */ /* ################################### */ /* # Todo: Counter / Timer einbauen # */ /* ################################### */
- include <avr/io.h>
- include <string.h>
- include <stdio.h>
- include <avr/pgmspace.h>
- include <util/delay.h>
- include "uart.h"
int main(void) { int status = 0; int counter = 0;
/* initialize serial uart */ uart_init();
/* configure irrx as input */ DDRC &= ~_BV(PC3);
/* init led pin as output */ DDRD |= _BV(PD3);
while(1) { counter++; for (int i = 0; i<10; i++) { _delay_us(10);
}
/* if ir rx is high, turn off led */ if (PINC & _BV(PC3)) { // Kein IR PORTD &= ~_BV(PD3); if (status == 1) { uart_printf("Ir jetzt aus %u\n",counter); counter = 0; } status = 0; } else { PORTD |= _BV(PD3); if (status == 0) { uart_printf("Ir jetzt an %u\n",counter); counter = 0; } status = 1; } }
} </source>