blob: 05c3406a9d16368bf142aa99d23e77c915fe9b3d (
plain)
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
|
// L�sung zu Termin3
// Aufgabe 1
// von:
// vom:
//
#include "../h/pmc.h"
#include "../h/tc.h"
#include "../h/pio.h"
#include "../h/aic.h"
void taste_irq_handler (void) __attribute__ ((interrupt));
// Interruptserviceroutine f�r die Tasten SW1 und SW2
void taste_irq_handler (void)
{
StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
StructAIC* aicbase = AIC_BASE; //__
// ab hier entsprechend der Aufgabestellung erg�nzen
// *************************************************
aicbase->AIC_EOICR = piobaseB->PIO_ISR; //__
}
// Timer3 initialisieren
void Timer3_init( void )
{
StructTC* timerbase3 = TCB3_BASE; // Basisadressse TC Block 1
StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO B
timerbase3->TC_CCR = TC_CLKDIS; // Disable Clock
// Initialize the mode of the timer 3
timerbase3->TC_CMR =
TC_ACPC_CLEAR_OUTPUT | //ACPC : Register C clear TIOA
TC_ACPA_SET_OUTPUT | //ACPA : Register A set TIOA
TC_WAVE | //WAVE : Waveform mode
TC_CPCTRG | //CPCTRG : Register C compare trigger enable
TC_CLKS_MCK1024; //TCCLKS : MCKI / 1024
// Initialize the counter:
timerbase3->TC_RA = 300; //__
timerbase3->TC_RC = 600; //__
// Start the timer :
timerbase3->TC_CCR = TC_CLKEN ; //__
timerbase3->TC_CCR = TC_SWTRG ; //__
piobaseA->PIO_PER = (1<<PIOTIOA3) ; //__
piobaseA->PIO_OER = (1<<PIOTIOA3) ; //__
piobaseA->PIO_CODR = (1<<PIOTIOA3) ; //__
}
int main(void)
{
StructPMC* pmcbase = PMC_BASE; // Basisadresse des PMC
StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO A
StructPIO* piobaseB = PIOB_BASE; // Basisadresse PIO B
pmcbase->PMC_PCER = 0x4000; // Peripheral Clocks einschalten f�r PIOB, _____
// ab hier entsprechend der Aufgabestellung erg�nzen
//**************************************************
while(1)
{
}
return 0;
}
|