Forum: Mikrocontroller und Digitale Elektronik Probleme mit UART


von Micha (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.