source: firmware/FSC/src/muxer_fsc.c@ 14062

Last change on this file since 14062 was 10910, checked in by neise, 13 years ago
File size: 1.6 KB
Line 
1#include "muxer_fsc.h"
2#include "usart.h"
3// Sets voltage Muxer to current channel
4// this is a Muxing, and therefor the adc might need some time to settle.
5// Since there are:
6// - 40 voltage monitor channels
7// - 40 current monitor channels
8// - 4 humidity monitor channels
9// the muxer is set as follows.
10// channel 00..39 --> looking at the voltage channels
11// channel 40..79 --> looking at the current channels
12// channel 80..83 --> looking at the humidities
13void Set_V_Muxer (U08 channel){
14U08 SB = 0;
15 // voltages
16 if (channel < 40) {
17 if (channel < 36)
18 SB = channel*2;
19 else
20 SB = (channel+1)*2;
21 }
22 // currents
23 else if (channel < 80) {
24 channel -= 40;
25 if (channel < 36)
26 SB = channel*2+1;
27 else
28 SB = (channel+1)*2+1;
29 }
30 // humidities
31 else if (channel < 84) {
32 channel -= 80;
33 switch (channel) {
34 case 0:
35 SB = 0x48; //0100.1000
36 break;
37 case 1:
38 SB = 0x49; //0100.1001
39 break;
40 case 2:
41 SB = 0x52; //0101.0010
42 break;
43 case 3:
44 SB = 0x53; //0101.0011
45 break;
46 } // end of switch-case
47 } // end of if (channel < some_number)
48
49 PORTC = (PORTC & 0x80) | (0x7F & SB); // Here the muxer is switched.
50}
51
52void Set_T_Muxer(U08 channel) {
53U08 SA = 0x00;
54
55 switch (channel/16) {
56 case 0:
57 SA |= 1<<4; // 0001.0000
58 break;
59 case 1:
60 break; // 0000.0000
61 case 2:
62 SA |= (1<<4)|(1<<5); // 0011.0000
63 break;
64 case 3:
65 SA |= 1<<5; // 0010.0000
66 break;
67 }
68
69 SA = SA | (channel%16);
70
71 PORTA = (PORTA & 0xC0) | (0x3F & SA); // Here the muxer is switched.
72}
73
74
Note: See TracBrowser for help on using the repository browser.