-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathports.c
89 lines (76 loc) · 2.3 KB
/
ports.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "xpander.h"
#include "ports.h"
#include "sport0.h"
#include "timer0.h"
#include "rele.h"
#include "led.h"
/**
* Èíèöèàëèçàöèÿ ïîðòîâ íà ÁÔ + sport0 è SPI1
* Ïî-óìîë÷àíèþ âñå ïîðòû íà âõîäå â Z - ñîñòîÿíèè (page 9 - 3)
* Ïðîñòî îòêëþ÷èì âñå èõ ôóíêöèè
*
*/
section("L1_code")
void init_bf_ports(void)
{
/* Ïîðòû F: îòêëþ÷àåì ôóíêöèè è âñå íà âõîä */
*pPORTF_FER = 0;
*pPORTFIO_DIR = 0;
/* Îò âñåõ ïîðòîâ îòêëþ÷àåì ôóíêöèè */
*pPORTG_FER &= ~(PG0 | PG1 | PG2 | PG3 | PG4 | PG5 | PG6 | PG7 | PG8 | PG9 | PG10 | PG11 /* | PG12 | PG13*/ | PG14 | PG15);
*pPORTGIO_CLEAR = (PG3 | PG4 | PG11); /* ñòàâèì â íîëü */
*pPORTGIO_DIR = (PG3 | PG4 | PG11); /* Íà âûõîä, âñå îñòàëüíûå íà âõîä */
*pPORTH_FER &= ~(PH0 | PH1 | PH2); /* Ïîðòû H: PH1 íà âõîä-îñòàëüíûå íà âûõîä è â íîëü */
*pPORTHIO_CLEAR = (PH0 | PH2); /* ñòàâèì â íîëü */
*pPORTHIO_DIR = (PH0 | PH2);
SPORT0_config(); /* ÑÏÎÐÒ0 */
}
/**
* Èíèöèàëèçàöèÿ ïîðòîâ íà àòìåãå
* Ïî-óìîë÷àíèþ âñå ïîðòû íà âõîäå â Z - ñîñòîÿíèè (page 9 - 3)
*/
section("L1_code")
void init_atmega_ports(void)
{
/* Ñáðîñèì è óáåðåì reset ñ ýêñïàíäåðà PH0 */
*pPORTH_FER &= ~PH0; /* Îòêëþ÷àåì ôóíêöèè */
*pPORTHIO_CLEAR = PH0; /* Äåëàåì 0 íà âûõîä */
*pPORTHIO_DIR |= PH0; /* Äåëàåì èõ íà âûõîä */
ssync();
*pPORTHIO_SET = PH0; /* Äåëàåì 1 íà âûõîä */
ssync();
delay_ms(WAIT_START_ATMEGA); /* Çàäåðæêà, ò.ê. Íàø DSP î÷åíü áûñòðûé - íå óñïåâàþò èíèöèàëèçèðîâàöà Atmega ðåãèñòðû!!! */
pin_clr(PORTG, 0x0F); /* íà âûõîä ïîðòû G - ËÀÌÏÛ */
pin_set(SD_SRCSEL_PORT, SD_SRCSEL_PIN);
RELE_init(); /* Èíèö. âñåõ ðåëå */
}
/**
* Âêëþ÷èòü SD êàðòó
* SD êàðòà ïîäêëþ÷åíà ê BF
*/
void select_sdcard_to_bf(void)
{
pin_clr(SD_SRCSEL_PORT, SD_SRCSEL_PIN);
delay_ms(100);
pin_clr(SD_EN_PORT, SD_EN_PIN);
delay_ms(10);
pin_set(AT_SD_WP_PORT, AT_SD_WP_PIN);
delay_ms(100);
pin_clr(AT_SD_WP_PORT, AT_SD_WP_PIN);
delay_ms(10);
pin_set(AT_SD_CD_PORT, AT_SD_CD_PIN);
delay_ms(10);
}
/**
*/
void unselect_ports(void)
{
pin_set(SD_EN_PORT, SD_EN_PIN);
delay_ms(10);
/* Ñáðîñèì ýêñïàíäåð PH0 */
*pPORTH_FER &= ~PH0; /* Îòêëþ÷àåì ôóíêöèè */
*pPORTHIO_CLEAR = PH0; /* Äåëàåì 0 íà âûõîä */
*pPORTHIO_DIR |= PH0; /* Äåëàåì èõ íà âûõîä */
ssync();
delay_ms(10);
}