Difference between revisions of "U23 2008/Gruppe2"
< U23 2008
(→Gruppe 2) |
|||
Line 17: | Line 17: | ||
== '''Sourcecode vom ersten Projektabend:''' == | == '''Sourcecode vom ersten Projektabend:''' == | ||
− | |||
#include <avr/io.h> | #include <avr/io.h> | ||
#include <util/delay.h> | #include <util/delay.h> | ||
− | uint8_t globalconfig; | + | uint8_t globalconfig; |
− | + | //Uebergabe ist die gewünschte LED Konfiguration, die gesetzt werden soll | |
− | + | //Die Konfiguration wird als Binärzahl übergeben wobei nur die letzten vier stellen ausgewertet werden | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | //Uebergabe ist die | ||
− | //Die Konfiguration wird als | ||
static void ledset(uint8_t config) { | static void ledset(uint8_t config) { | ||
− | + | globalconfig=config; | |
− | + | PORTC=(config&0x01)<<PC4; | |
− | + | PORTD=((config&0x02)<<(PD3-1))|((config&0x04)<<(PD6-2))|((config&0x08)<<(PD7-3)); | |
} | } | ||
//Delay in ms | //Delay in ms | ||
static void mydelay(uint16_t delay){ | static void mydelay(uint16_t delay){ | ||
− | + | uint16_t i; | |
− | + | for (i = 0; i < delay; i++) { | |
− | + | /* wait 4 * 65536 cycles */ | |
− | + | _delay_loop_2(5000); | |
− | } | + | } |
+ | } | ||
+ | |||
+ | |||
+ | static void led_control(uint8_t mode, uint8_t* sequence, uint8_t size, uint16_t delay) { | ||
+ | while(1) { | ||
+ | switch (mode) { | ||
+ | case 0: //rechtsshift | ||
+ | |||
+ | break; | ||
+ | case 1: //linksshift | ||
+ | |||
+ | break; | ||
+ | default: { | ||
+ | for(uint8_t i = 0; i<size; i++) { | ||
+ | ledset(sequence[i]); | ||
+ | mydelay(delay); | ||
+ | } | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } | ||
} | } | ||
+ | |||
void main(void) { | void main(void) { | ||
− | + | //Port Direction config | |
− | + | DDRC = _BV(PC4); /* == 1<<7 == 128 */ | |
− | + | DDRD = _BV(PD3)|_BV(PD6)|_BV(PD7); /* == 1<<7 == 128 */ | |
− | + | ||
− | + | ||
− | + | uint8_t bla=0; | |
− | + | ||
− | + | //Definition der Blinkfolge | |
− | + | uint8_t array[]={15,8,3,4}; | |
− | + | ||
− | + | led_control(12,array ,4,500); | |
+ | |||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== '''Bezeichnungen der LEDs (siehe Datenblatt)''' == | == '''Bezeichnungen der LEDs (siehe Datenblatt)''' == |
Revision as of 19:21, 25 August 2008
Contents
Gruppe 2
Gruppenchat:
u23group2@conference.koeln.ccc.de
Also einfach einen Jabber Account auf koeln.ccc.de oder jabber.ccc.de einrichten und schon gehts los. Wer zum Beispiel einen Gmail-Account hat, hat selbst schon einen Jabber Account und kann damit loslegen.
Mitglieder:
-kellertür (Mathias)
-UltraX8 (Arnaud) (Tom Tailor Polo-Shirt, blonde Haare)
-T06T (Thorsten mit H) (braune haare, braune augen, schwarze kleidung/humor)
-Thomas
-Lind (Bene) (ca. 190 groß, kurze Haare, schwarzes HardRock Cafe Shirt)
Sourcecode vom ersten Projektabend:
#include <avr/io.h> #include <util/delay.h> uint8_t globalconfig; //Uebergabe ist die gewünschte LED Konfiguration, die gesetzt werden soll //Die Konfiguration wird als Binärzahl übergeben wobei nur die letzten vier stellen ausgewertet werden static void ledset(uint8_t config) { globalconfig=config; PORTC=(config&0x01)<<PC4; PORTD=((config&0x02)<<(PD3-1))|((config&0x04)<<(PD6-2))|((config&0x08)<<(PD7-3)); } //Delay in ms static void mydelay(uint16_t delay){ uint16_t i; for (i = 0; i < delay; i++) { /* wait 4 * 65536 cycles */ _delay_loop_2(5000); } } static void led_control(uint8_t mode, uint8_t* sequence, uint8_t size, uint16_t delay) { while(1) { switch (mode) { case 0: //rechtsshift break; case 1: //linksshift break; default: { for(uint8_t i = 0; i<size; i++) { ledset(sequence[i]); mydelay(delay); } break; } } } } void main(void) { //Port Direction config DDRC = _BV(PC4); /* == 1<<7 == 128 */ DDRD = _BV(PD3)|_BV(PD6)|_BV(PD7); /* == 1<<7 == 128 */ uint8_t bla=0; //Definition der Blinkfolge uint8_t array[]={15,8,3,4}; led_control(12,array ,4,500); }
Bezeichnungen der LEDs (siehe Datenblatt)
LED1 => PC4
LED2 => PD3
LED3 => PD6
LED4 => PD7
Funktionen der Globalen Variablen
uint8_t mode
0 = links...rechts
1 = rechts...links
2 = Sequenz aus Array
3 = default => alle LEDs an bzw. 1
uint8_t* sequence
Sequenz nach Schema uint8_t*[] = {0, 3, 4, 1, 3, 1, 2, 0};
Nach 4 LED-Moves fängt die Sequenz an der Stelle, wo sie zuletzt war wieder mit LED1 an.
uint16_t delay
Delay der Sequenz in MS.