Difference between revisions of "U23 2008-2/Gruppe1"
Line 120: | Line 120: | ||
== 2. Abend == | == 2. Abend == | ||
+ | <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> | ||
[[Category:U23 2008]] | [[Category:U23 2008]] |
Revision as of 17:32, 2 November 2008
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
<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>