Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Thu Feb 12 16:42:35 2015 +0000
Revision:
100:09a23fcd3bdf
Parent:
99:e80850c51106
Child:
104:62646ef786a3
begin the job

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 0:4d17cd9c8f9d 1 #include "parallelcpld.h"
klauss 0:4d17cd9c8f9d 2
klauss 74:81c47fff88a5 3 DigitalOut data0(p30); //LSB
klauss 74:81c47fff88a5 4 DigitalOut data1(p31);
klauss 74:81c47fff88a5 5 DigitalOut data2(p32);
klauss 74:81c47fff88a5 6 DigitalOut data3(p33);
klauss 74:81c47fff88a5 7 DigitalOut data4(p34);
klauss 74:81c47fff88a5 8 DigitalOut data5(p37);
klauss 74:81c47fff88a5 9 DigitalOut data6(p38);
klauss 74:81c47fff88a5 10 DigitalOut data7(p39); //MSB
klauss 74:81c47fff88a5 11
klauss 74:81c47fff88a5 12 DigitalOut DataReady(p11);
klauss 74:81c47fff88a5 13 ///<IO 27
klauss 74:81c47fff88a5 14
klauss 74:81c47fff88a5 15 uint8_t cb_tx_buffer[ __CB_BUFFER_SIZE__ ];
klauss 74:81c47fff88a5 16
klauss 74:81c47fff88a5 17 uint8_t TXBuffer[ __CB_BUFFER_SIZE__ ];
klauss 74:81c47fff88a5 18
klauss 72:895ca792c647 19 uint8_t tx_clear = 1;
klauss 0:4d17cd9c8f9d 20
klauss 74:81c47fff88a5 21 ring_buffer * rb = ring_buffer_init( NULL );
klauss 74:81c47fff88a5 22 ring_buffer test;
klauss 74:81c47fff88a5 23
klauss 99:e80850c51106 24 Timer delay_to_send_to_cbx;
klauss 99:e80850c51106 25
klauss 72:895ca792c647 26 // Print a variable using parallel protocol
klauss 72:895ca792c647 27 void parallel_write( uint8_t data ){
klauss 72:895ca792c647 28 data0 = BIT0&(data);
klauss 72:895ca792c647 29 data1 = BIT1&(data);
klauss 72:895ca792c647 30 data2 = BIT2&(data);
klauss 72:895ca792c647 31 data3 = BIT3&(data);
klauss 72:895ca792c647 32 data4 = BIT4&(data);
klauss 72:895ca792c647 33 data5 = BIT5&(data);
klauss 72:895ca792c647 34 data6 = BIT6&(data);
klauss 72:895ca792c647 35 data7 = BIT7&(data);
klauss 0:4d17cd9c8f9d 36 }
klauss 0:4d17cd9c8f9d 37
klauss 72:895ca792c647 38 // Needs: function parallel_write/ Global variables: TXBuffer, tx_clear / Configuration extern interrupt
klauss 74:81c47fff88a5 39 void send2callboxes( uint8_t * buffer ){
klauss 99:e80850c51106 40 static bool once = true;
klauss 99:e80850c51106 41 if( once ){
klauss 99:e80850c51106 42 delay_to_send_to_cbx.start();
klauss 99:e80850c51106 43 once = false;
klauss 99:e80850c51106 44 }
klauss 100:09a23fcd3bdf 45 /*
klauss 99:e80850c51106 46 if( delay_to_send_to_cbx.read_ms() < 7 ){
klauss 100:09a23fcd3bdf 47 {
klauss 100:09a23fcd3bdf 48 delayed_pkg_to_cb++;
klauss 99:e80850c51106 49 uint8_t ret = ring_buffer_add( rb, buffer );
klauss 81:3656f00ab3db 50
klauss 100:09a23fcd3bdf 51 if( ret == 0x01 ) if( dparallel ) debug_msg("Error: Ring buffer fully charged");
klauss 74:81c47fff88a5 52
klauss 92:92df17f538a8 53 if( ret == 0x00 ) if( dparallel ) debug_msg("Success : package queued -- on queue %u", rb->size );
klauss 99:e80850c51106 54 } else {
klauss 100:09a23fcd3bdf 55 */
klauss 99:e80850c51106 56 delay_to_send_to_cbx.reset();
klauss 99:e80850c51106 57
klauss 99:e80850c51106 58 if( tx_clear == 1 ){
klauss 99:e80850c51106 59 tx_clear = 0;
klauss 99:e80850c51106 60 xmemcpy( TXBuffer, buffer, __CB_BUFFER_SIZE__ );
klauss 100:09a23fcd3bdf 61 /*
klauss 100:09a23fcd3bdf 62 if( big_bug_pkg ){
klauss 100:09a23fcd3bdf 63 send_msg("--> %d", __CB_BUFFER_SIZE__ + 4 );
klauss 100:09a23fcd3bdf 64 big_bug_pkg = false;
klauss 100:09a23fcd3bdf 65 uint8_t big_buffer[ __CB_BUFFER_SIZE__ + 4 ];
klauss 100:09a23fcd3bdf 66 xmemcpy( big_buffer, buffer, __CB_BUFFER_SIZE__ );
klauss 100:09a23fcd3bdf 67 big_buffer[ __CB_BUFFER_SIZE__ + 3 ] = 0x11;
klauss 100:09a23fcd3bdf 68 big_buffer[ __CB_BUFFER_SIZE__ + 2 ] = 0x13;
klauss 100:09a23fcd3bdf 69 big_buffer[ __CB_BUFFER_SIZE__ + 1 ] = 0x17;
klauss 100:09a23fcd3bdf 70 big_buffer[ __CB_BUFFER_SIZE__ ] = 0x17;
klauss 100:09a23fcd3bdf 71
klauss 100:09a23fcd3bdf 72 parallel_write( big_buffer[ 0 ] );
klauss 100:09a23fcd3bdf 73
klauss 100:09a23fcd3bdf 74 }else{
klauss 100:09a23fcd3bdf 75
klauss 100:09a23fcd3bdf 76 }
klauss 100:09a23fcd3bdf 77 */
klauss 99:e80850c51106 78 // Send the first position of TXBuffer first
klauss 99:e80850c51106 79 parallel_write( TXBuffer[ 0 ] );
klauss 99:e80850c51106 80 DataReady = 1;
klauss 99:e80850c51106 81 xmemcpy( cb_tx_buffer, buffer, __CB_BUFFER_SIZE__ );
klauss 99:e80850c51106 82 cpld_pkg_tx_counter++;
klauss 99:e80850c51106 83
klauss 99:e80850c51106 84 uint16_t ext = ( ( uint16_t )buffer[ 0 ] ) << 8 | buffer[ 1 ];
klauss 99:e80850c51106 85 uint16_t port = ( ( uint16_t )buffer[ 2 ] ) << 8 | buffer[ 3 ];
klauss 99:e80850c51106 86 uint8_t type = buffer[ 6 ];
klauss 99:e80850c51106 87
klauss 99:e80850c51106 88 if( debug_fw ){
klauss 99:e80850c51106 89 buffer[ 0 ] |= BIT7;
klauss 99:e80850c51106 90 fw_cbx_pkg( ext, port, ( char *)buffer );
klauss 99:e80850c51106 91 }
klauss 99:e80850c51106 92
klauss 99:e80850c51106 93 if( debug_cb_tx == true ){
klauss 99:e80850c51106 94 if( type != __AUDIO__ ) send_msg("Pkg to CBx :: ( %d, %d ) -- Type :: %d", ext, port, type );
klauss 99:e80850c51106 95 }
klauss 99:e80850c51106 96 }else{
klauss 99:e80850c51106 97 // Error if the transmission is still in use
klauss 99:e80850c51106 98 uint8_t ret = ring_buffer_add( rb, buffer );
klauss 99:e80850c51106 99
klauss 99:e80850c51106 100 if( ret == 0x01 ) if( dparallel ) debug_msg("Error: Ring buffer fully charged");
klauss 99:e80850c51106 101
klauss 99:e80850c51106 102 if( ret == 0x00 ) if( dparallel ) debug_msg("Success : package queued -- on queue %u", rb->size );
klauss 99:e80850c51106 103 }
klauss 100:09a23fcd3bdf 104 //}
klauss 0:4d17cd9c8f9d 105 }
klauss 0:4d17cd9c8f9d 106
klauss 0:4d17cd9c8f9d 107 //*****************************************************************************
klauss 0:4d17cd9c8f9d 108 // EXTERN IRQ Handler
klauss 0:4d17cd9c8f9d 109 //*****************************************************************************
klauss 0:4d17cd9c8f9d 110
klauss 72:895ca792c647 111 void get2(){
klauss 72:895ca792c647 112 static uint16_t c = 1;
klauss 72:895ca792c647 113 // Get Ready the new data
klauss 72:895ca792c647 114 DataReady = 0;
klauss 0:4d17cd9c8f9d 115 tx_clear = 0;
klauss 72:895ca792c647 116
klauss 72:895ca792c647 117 if ( c < 300 ){
klauss 72:895ca792c647 118 // Write the next data to be send
klauss 72:895ca792c647 119 parallel_write ( TXBuffer[c] ) ;
klauss 72:895ca792c647 120 // Allow the data to be capture
klauss 72:895ca792c647 121 DataReady = 1;
klauss 0:4d17cd9c8f9d 122 }else{
klauss 72:895ca792c647 123 // Allow the next package to the transmitted
klauss 72:895ca792c647 124 tx_clear = 1;
klauss 72:895ca792c647 125 c = 0;
klauss 72:895ca792c647 126 }
klauss 0:4d17cd9c8f9d 127 c++;
klauss 74:81c47fff88a5 128 }
klauss 74:81c47fff88a5 129
klauss 74:81c47fff88a5 130 void tx_buffer_ring_buffer_handler( void ){
klauss 100:09a23fcd3bdf 131 //if( ( rb->size != 0x00 ) && ( tx_clear == 1 ) && ( delay_to_send_to_cbx.read_ms() > 7 ) ){
klauss 100:09a23fcd3bdf 132 if( ( rb->size != 0x00 ) && ( tx_clear == 1 ) ){
klauss 99:e80850c51106 133 //uint8_t buffer[ __CB_BUFFER_SIZE__ ];
klauss 74:81c47fff88a5 134 uint8_t * _rb_next = ring_buffer_get_next( rb );
klauss 99:e80850c51106 135 //xmemcpy( buffer, _rb_next, __CB_BUFFER_SIZE__ );
klauss 74:81c47fff88a5 136 if( dparallel ) send_msg( "Ring Buffer less one -- remain %u", rb->size );
klauss 99:e80850c51106 137 send2callboxes( _rb_next );
klauss 74:81c47fff88a5 138 }
klauss 0:4d17cd9c8f9d 139 }