mil disculpas , son 2 pic diferentes , uno es un cartucho de memoria y el otro es un master .
la idea es que el cartucho transmita 3 bytes seguidos a peticion del master , es decir el master inicia la recepcion dando habilitacion al cartucho con un bit.
esto ya mas o menos lo pude hacer , ahora me pasa algo raro , que seguramente me lo estoy tragando
cuando el cartucho transmite , el master lo recibe a traves de la int_rda :
#int_RDA
void RDA_isr ( void )
{
rs232_errors = 0 ;
printf ( "%c " , getc( ) ) ;
}
e imprime en la terminal serie correctamente el byte recibido. Ahora atento a lo que ustedes dicen respecto a lo corto que debe ser una interrupcion , lo que deseo hacer es esto:
#int_RDA
void RDA_isr ( void )
{
rs232_errors = 0 ;
c = getc () ;
}
y el printf hacerlo en el main.
en el main tengo:
#include "master.h"
void main ( void )
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_OFF);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_oscillator(False);
porta = 0b00000000 ; trisa = 0b00000000 ;
portb = 0b00000000 ; trisb = 0b00100011 ;
portc = 0b11000000 ; trisc = 0b11000000 ;
portd = 0b00000000 ; trisd = 0b00000000 ;
porte = 0b00000000 ; trise = 0b00000000 ;
delay_ms ( 100 ) ;
rs232_errors = 0 ;
enable_interrupts ( GLOBAL );
enable_interrupts ( INT_RDA );
while ( true )
{
delay_ms ( 500 ) ;
printf ( "%c " , c ) ; // ACA CUANDO IMPRIMO SALE CUALQUIER COSA!!
rts = 1 ; delay_us ( 100 ) ; rts = 0 ; // rts es el bit de bloqueo/habilitacion que uso para parar al cartucho , que anda bien
}
}
Lo unico que quise hacer fue capturar el valor de getc() en una variable tipo char que es c ( es publica ) , llevarla al main e imprimirla
desde ya gracias!!!!