Statistics
| Revision:

root / branch / elmansour / bsp / dma0.c @ 31

History | View | Annotate | Download (2.32 KB)

1 2 jalaffon
// subroutines for control DMA0
2
3
#ifdef M32C87
4
        #include "sfr32c87.h"
5
#endif
6
7
#ifdef M32C83
8
        #include "sfr32c83.h"
9
#endif
10
11
#include <itron.h>
12
#include <kernel.h>
13
#include "kernel_id.h"
14
#include "dma0.h"
15
16
unsigned char dma0_fin_tr;
17
18
void dma0_init(void)
19
{
20
    dmd0 = 0x00;            //invalide canaux 0&1 DMA
21
        dm0ic = 0x05;                        // valide interruption dma canal 0
22
    dm0sl = 0x8E;           // transfert sur interruption emission uart0
23
    dsa0 = &u0tb;           // adresse destination
24
    asm (" nop ");
25
    asm (" nop ");
26
    asm (" nop ");
27
    asm (" nop ");
28
    asm (" nop ");
29
    asm (" nop ");
30
    //dmd0 = 0x09;            // canal 0 actif en mode monocoup avec mot code sur 8 bits
31
}
32
33
/*
34

35
// declaration variable
36

37
void initdma0(void)
38
{
39
    dmd0 = 0x00;            //invalide canaux 0&1 DMA
40
    dm0sl = 0x8E;           // transfert sur interruption emission uart0
41
//    dma0 = &buf_em[1];      // adresse source
42
    dsa0 = &u0tb;           // adresse destination
43
    dct0 = 0x00;            // taille buffer - 1
44
    asm (" nop ");
45
    asm (" nop ");
46
    asm (" nop ");
47
    asm (" nop ");
48
    asm (" nop ");
49
    asm (" nop ");
50
    dmd0 = 0x09;            // canal 0 actif en mode monocoup avec mot code sur 8 bits
51
}
52
*/
53
54
void uart0_dma0_tr_OK(void)
55
{
56
        s0tic=3; // Autorise les interruptions Uart pour detecter la fin de l'envoi du dernier caractere
57
        //s0tic&=~0x08; // Effacer la demande d'int uart0
58
        // Pour eviter un risque de prise en compte anticip?
59
        // Les interruption DMA0 et
60
        dma0_fin_tr=1;
61
        //iset_flg(ev_bus_fin_tr,(UINT) 1);
62
}
63
64
void uart0_str_dma0 (char str[])
65
{
66
        dmd0 = 0x00;                                // initialise nouveau transfert
67
        dct0 = strlen(str)-1;
68
        dma0 = &str[1];
69
        dm0sl = 0x8e;
70
        dsa0 = &u0tb;           // adresse destination
71
    asm (" nop ");
72
    asm (" nop ");
73
    asm (" nop ");
74
    asm (" nop ");
75
    asm (" nop ");
76
    asm (" nop ");
77
        dmd0 = 0x09;
78
        s0tic=0;                 // Arret par securit? des int uart0 tx
79
        dm0ic=7;
80
        dma0_fin_tr=0; // Utile pour eviter des collision de message lors de la prise
81
                                   // du processeur par le debugger
82
        u0tb = str[0];
83
}
84
85
void uart0_dma0_itx()
86
{
87
        if (dma0_fin_tr){
88
                iset_flg(ev_bus_fin_tr,(UINT) 1);
89
                dma0_fin_tr=0;
90
        }
91
        s0tic=0; // Interruption bloqu?s jusqu'a la fin d'un transfert dma
92
}