1 | #include <p18f4550.h>
|
2 | #include <delays.h>
|
3 | #include <i2c.h>
|
4 |
|
5 | #pragma config FOSC = HS
|
6 | #pragma config WDT = OFF //Disable watchdog timer
|
7 |
|
8 | #define LEDPin0 LATDbits.LATD0 //Define LEDPin as PORT D Pin 0
|
9 | #define LEDTris0 TRISDbits.TRISD0 //Define LEDTris as TRISD Pin 0
|
10 | #define LEDPin1 LATDbits.LATD1 //Define LEDPin as PORT D Pin 1
|
11 | #define LEDTris1 TRISDbits.TRISD1 //Define LEDTris as TRISD Pin 1
|
12 | #define LEDPin2 LATDbits.LATD2 //Define LEDPin as PORT D Pin 2
|
13 | #define LEDTris2 TRISDbits.TRISD2 //Define LEDTris as TRISD Pin 2
|
14 | #define LEDPin3 LATDbits.LATD3 //Define LEDPin as PORT D Pin 2
|
15 | #define LEDTris3 TRISDbits.TRISD3 //Define LEDTris as TRISD Pin 2
|
16 |
|
17 | void fadeInOut(void); /* Prototype */
|
18 |
|
19 | void main()
|
20 | {
|
21 | //I2C Kommunikation mit SAA1064
|
22 | OpenI2C(MASTER, SLEW_OFF);// Initialize I2C module
|
23 | SSPADD = 39; //400kHz Baud clock(9) @16MHz
|
24 | //100kHz Baud clock(39) @16MHz (scheint bei 20MHz auch zu 100kHz zu führen)
|
25 |
|
26 | StartI2C();
|
27 | WriteI2C(0x70);
|
28 | WriteI2C(0x00);
|
29 | WriteI2C(0B11001110);
|
30 | StopI2C();
|
31 |
|
32 | //PWM für LED dimmer
|
33 | TRISCbits.TRISC2 = 0 ; // setzt den P
|
34 | LATCbits.LATC2 = 0 ; // clear PORT
|
35 | PR2 = 62; // 62 aus berechnung
|
36 | T2CON = 0b00000110 ; /// Vorteiler 1:16
|
37 | CCP1CON = 0b00001100 ; // Schaltet PWM ein bit 3 & 4
|
38 |
|
39 | //Port Konfiguration für LEDs
|
40 | LEDTris0 = 0;//Set LED Pin data direction to OUTPUT
|
41 | LEDTris1 = 0;//Set LED Pin data direction to OUTPUT
|
42 | LEDTris2 = 0;//Set LED Pin data direction to OUTPUT
|
43 | LEDTris3 = 0;//Set LED Pin data direction to OUTPUT
|
44 | LEDPin0 = 1;//Set LED Pin
|
45 | LEDPin1 = 0;//Set LED Pin
|
46 | LEDPin2 = 0;//Set LED Pin
|
47 | LEDPin3 = 0;
|
48 |
|
49 | while(1){
|
50 | fadeInOut(); //trigger PWM Magic on Port C PIN 2
|
51 | if(LEDPin0 == 1){
|
52 | LEDPin0 = 0;//Toggle LED Pin
|
53 | LEDPin1 = 1;//Toggle LED Pin
|
54 | LEDPin2 = 0;//Toggle LED Pin
|
55 | LEDPin3 = 0;//Toggle LED Pin
|
56 | } else if(LEDPin1 == 1){
|
57 | LEDPin0 = 0;//Toggle LED Pin
|
58 | LEDPin1 = 0;//Toggle LED Pin
|
59 | LEDPin2 = 1;//Toggle LED Pin
|
60 | LEDPin3 = 0;//Toggle LED Pin
|
61 | } else if(LEDPin2 == 1){
|
62 | LEDPin0 = 0;//Toggle LED Pin
|
63 | LEDPin1 = 0;//Toggle LED Pin
|
64 | LEDPin2 = 0;//Toggle LED Pin
|
65 | LEDPin3 = 1;//Toggle LED Pin
|
66 | } else if(LEDPin3 == 1){
|
67 | LEDPin0 = 1;//Toggle LED Pin
|
68 | LEDPin1 = 0;//Toggle LED Pin
|
69 | LEDPin2 = 0;//Toggle LED Pin
|
70 | LEDPin3 = 0;//Toggle LED Pin
|
71 | }
|
72 | Delay10KTCYx(20);
|
73 | }
|
74 | }
|
75 |
|
76 | void fadeInOut(){
|
77 | unsigned char dc ;
|
78 | for(dc = 0 ; dc < PR2 ; dc++){
|
79 | CCPR1L = dc ;
|
80 | Delay10KTCYx(5);
|
81 | }
|
82 | for(dc = PR2 ; dc > 0 ; dc--){
|
83 | CCPR1L = dc ;
|
84 | Delay10KTCYx(5);
|
85 | }
|
86 | }
|