mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit UART


Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.