[79] | 1 | /* |
---|
| 2 | * wiring.h |
---|
| 3 | * |
---|
| 4 | * Created: 10.08.2013 13:55:53 |
---|
| 5 | * Author: Sven |
---|
| 6 | */ |
---|
| 7 | |
---|
| 8 | |
---|
| 9 | #ifndef WIRING_H_ |
---|
| 10 | #define WIRING_H_ |
---|
| 11 | |
---|
| 12 | #define __AVR_ATmega644__ 1 |
---|
| 13 | /* Standard-8Mhz-Quarz des Boards */ |
---|
| 14 | #define OSCSPEED 8000000UL /* in Hz */ |
---|
| 15 | #define F_CPU OSCSPEED |
---|
| 16 | |
---|
[87] | 17 | // Time scaling, 1 = Original |
---|
| 18 | #define SCALING 1.2 |
---|
| 19 | |
---|
[79] | 20 | #include "avr/io.h" |
---|
| 21 | #include "avr/interrupt.h" |
---|
[80] | 22 | #include "util/delay.h" |
---|
[79] | 23 | |
---|
| 24 | // code copied mostly from PTNG2013 |
---|
| 25 | |
---|
| 26 | // 1. Pin Input Names |
---|
| 27 | |
---|
| 28 | // PIN A: Relais Output |
---|
| 29 | // PIN B: Button |
---|
| 30 | #define PINB_BUT PINB4 |
---|
| 31 | #define is_button() (!( PINB & (1 << PINB_BUT) )) |
---|
| 32 | // PIN C: Relais Output |
---|
| 33 | // PIN D: No RS232 |
---|
| 34 | |
---|
| 35 | // 2. Port Output Names |
---|
| 36 | |
---|
| 37 | // PORT A: Realais Output 1-8, sic |
---|
| 38 | #define RELAIS_01 PORTA0 |
---|
[83] | 39 | |
---|
| 40 | // PORTA1 und PORTA2 scheinen defekt zu sein, umgelegt auf PORTD2, PORTD3 |
---|
| 41 | //#define RELAIS_02 PORTA1 |
---|
| 42 | //#define RELAIS_03 PORTA2 |
---|
[87] | 43 | #define RELAIS_02 PORTD3 |
---|
| 44 | #define RELAIS_03 PORTD4 |
---|
[83] | 45 | |
---|
[79] | 46 | #define RELAIS_04 PORTA3 |
---|
| 47 | #define RELAIS_05 PORTA4 |
---|
| 48 | #define RELAIS_06 PORTA5 |
---|
| 49 | #define RELAIS_07 PORTA6 |
---|
| 50 | #define RELAIS_08 PORTA7 |
---|
| 51 | // PORT B: LED |
---|
| 52 | #define PORTB_LED PORTB0 |
---|
| 53 | // PORT C: Relais Output 9-16, sic umverdrehung! |
---|
| 54 | #define RELAIS_09 PORTC7 |
---|
| 55 | #define RELAIS_10 PORTC6 |
---|
| 56 | #define RELAIS_11 PORTC5 |
---|
| 57 | #define RELAIS_12 PORTC4 |
---|
| 58 | #define RELAIS_13 PORTC3 |
---|
| 59 | #define RELAIS_14 PORTC2 |
---|
| 60 | #define RELAIS_15 PORTC1 |
---|
| 61 | #define RELAIS_16 PORTC0 |
---|
| 62 | // PORT D: No RS232 |
---|
| 63 | |
---|
[82] | 64 | // Relais zu daran angeschlossenen Geraete-Mapping: |
---|
| 65 | //Rel. 1-4 (+15) TAPE1 (ON, FORWARD, REWIND, OFF, LP=LOAD-POINT, READ) |
---|
| 66 | //Rel. 5-8 TAPE2 (ebenso) |
---|
| 67 | //Rel. 9-14 Tape0 (pneumatisches Laufwerk) |
---|
[79] | 68 | |
---|
[82] | 69 | // C99.. |
---|
| 70 | #define TRUE 1 |
---|
| 71 | #define FALSE 0 |
---|
| 72 | |
---|
| 73 | #define set_bit(PORTi, RELAISj, WERT) (\ |
---|
| 74 | (WERT == TRUE) ? \ |
---|
| 75 | (PORTi &= ~(1 << RELAISj)) : \ |
---|
| 76 | (PORTi |= (1 << RELAISj)) ) |
---|
| 77 | |
---|
| 78 | // ON und OFF gehen immer in 1sec-Impulsen. Abkuerzen! |
---|
| 79 | |
---|
| 80 | #define set_impuls(PORTi, RELAISj) ({ \ |
---|
| 81 | set_bit(PORTi, RELAISj, TRUE); \ |
---|
[87] | 82 | _delay_ms(1000 * SCALING); \ |
---|
[82] | 83 | set_bit(PORTi, RELAISj, FALSE); \ |
---|
| 84 | }) |
---|
| 85 | |
---|
| 86 | |
---|
[87] | 87 | #define sound_on set_impuls(PORTC, RELAIS_16) |
---|
| 88 | |
---|
| 89 | #define tape1_on set_impuls(PORTA, RELAIS_01) |
---|
| 90 | #define tape1_on_set(v) set_bit(PORTA, RELAIS_01, v) |
---|
[83] | 91 | #define tape1_for(v) set_bit(PORTD, RELAIS_02, v) |
---|
[87] | 92 | #define tape1_rew set_impuls(PORTD, RELAIS_03) |
---|
| 93 | #define tape1_rew_set(v) set_bit(PORTD, RELAIS_03, v) |
---|
| 94 | #define tape1_off set_impuls(PORTA, RELAIS_04) |
---|
| 95 | #define tape1_off_set(v) set_bit(PORTA, RELAIS_04, v) |
---|
| 96 | #define tape1_read(v) set_bit(PORTC, RELAIS_15, v) |
---|
[82] | 97 | |
---|
[87] | 98 | #define tape2_on set_impuls(PORTA, RELAIS_05) |
---|
| 99 | #define tape2_on_set(v) set_bit(PORTA, RELAIS_05, v) |
---|
[82] | 100 | #define tape2_for(v) set_bit(PORTA, RELAIS_06, v) |
---|
[87] | 101 | #define tape2_rew set_impuls(PORTA, RELAIS_07) |
---|
| 102 | #define tape2_rew_set(v) set_bit(PORTA, RELAIS_07, v) |
---|
| 103 | #define tape2_off set_impuls(PORTA, RELAIS_08) |
---|
| 104 | #define tape2_off_set(v) set_bit(PORTA, RELAIS_08, v) |
---|
[82] | 105 | |
---|
[87] | 106 | #define tape0_on set_impuls(PORTC, RELAIS_09) |
---|
| 107 | #define tape0_on_set(v) set_bit(PORTC, RELAIS_09, v) |
---|
[82] | 108 | #define tape0_for(v) set_bit(PORTC, RELAIS_10, v) |
---|
| 109 | #define tape0_read(v) set_bit(PORTC, RELAIS_11, v) |
---|
[87] | 110 | #define tape0_rew set_impuls(PORTC, RELAIS_12) |
---|
| 111 | #define tape0_rew_set(v) set_bit(PORTC, RELAIS_12, v) |
---|
| 112 | #define tape0_lp set_impuls(PORTC, RELAIS_13) |
---|
| 113 | #define tape0_lp_set(v) set_bit(PORTC, RELAIS_13, v) |
---|
| 114 | #define tape0_off set_impuls(PORTC, RELAIS_14) |
---|
| 115 | #define tape0_off_set(v) set_bit(PORTC, RELAIS_14, v) |
---|
[82] | 116 | |
---|
| 117 | #define sound_start(v) set_bit(PORTC, RELAIS_16, v) |
---|
| 118 | |
---|
| 119 | |
---|
| 120 | |
---|
[79] | 121 | // sic! LED on Olimex devel board |
---|
| 122 | #define start_led() ( PORTB &= ~(1 << PORTB_LED) ) |
---|
| 123 | #define stop_led() ( PORTB |= (1 << PORTB_LED) ) |
---|
| 124 | #define is_led() ( !(PINB & (1 << PINB0)) ) |
---|
| 125 | #define toggle_led() ( is_led() ? stop_led() : start_led() ) |
---|
| 126 | |
---|
| 127 | |
---|
| 128 | |
---|
| 129 | #endif /* WIRING_H_ */ |
---|