Probleme mit UART

Gast #884387
Lesenswert?

Hallo bin relativ ungeübt in Sachen µC und habe direkt ein Problem. 
Wollte I2C Bus abhören und habe meinen eigenen Code geschrieben

------------------------
#include <tiny2313.h>
#include <delay.h>
#include<io.h>
#include<C:\Programme\cvavreval\inc\stdio.h>

int start=0, index, zeichen[], i;

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
index++;
if(PIND &(1<<2))
zeichen[index]=1;
if (!(PIND &(1<<2)));
zeichen[index]=0;

putchar(zeichen[index]);
}



void main(void)
{




DDRD=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Rising Edge
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x80;
MCUCR=0x0C;
EIFR=0x80;


// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x67;



// Global enable interrupts
#asm("sei")

while (1)
      {
        if (!(PIND & (1<<3)))
        {
        if (PIND & (1<<2))
            {
            start=1;

            do {
                }
                while(index==52);

            for (i=1;i==51;i++)
                {
                putchar(zeichen[i]);
                delay_ms(50);
                }

            }
        }




      };
}

----------------------------
Das Programm soll zuerst die Startbedingung erkennen und dann beim 
nächsten Takt ein Interrupt auslösen, wo die Daten in ein Array 
geschrieben werden. Dannach werden sie nach und nach per UART an den 
Rechner gegeben an der Stelle hackt es, die Daten wollen einfach nciht 
ins Array. Gibts da irgendein Trick bei, oder mach ich was falsch.
Die While-Schleife im Main Teil ist nur zum abwarten bis alle Daten 
gesendet wurden.
Hoffe ihr Überblickt das Prog.

Benutze den TINY2313+ STK500+ 16MHz+ codevision
PD3  -> Takt
PD2  -> Data

Danke schon mal für die Antworten!

Gruß Micha

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren