Statistics
| Revision:

root / trunk / tp_info6 / bsp / dma0.c @ 2

History | View | Annotate | Download (2.32 KB)

1
// 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
}