Hallo,
ich habe ein Problem. Ich habe ein C# Programm geschrieben mit den ich daten über den Com Port schicken kann. Mein uC soll diese nun empfangen. Sobald Daten empfangen werden, soll die LED am Port-D leuchten.
Vorher aber erstmal die 2 programme.
einmal mein uC Programm (Kommt aus den AVR Tutorial von www.mikrocontroller.net, also wird es wohl nicht daran liegen):
	Code:
	.include "m8def.inc"
 
.def temp = R16
 
.equ F_CPU = 3686400                             ; Systemtakt in Hz
.equ BAUD  = 9600                               ; Baudrate
 
; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille
 
.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif
 
    ; Stackpointer initialisieren
 
    ldi     temp, HIGH(RAMEND)
    out     SPH, temp
    ldi     temp, LOW(RAMEND)
    out     SPL, temp
 
    ; Port D = Ausgang
 
    ldi     temp, 0xFF
    out     DDRD, temp
 
    ; Baudrate einstellen
 
    ldi     temp, HIGH(UBRR_VAL)
    out     UBRRH, temp
    ldi     temp, LOW(UBRR_VAL)
    out     UBRRL, temp
 
    ; Frame-Format: 8 Bit
 
    ldi     temp, (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)
    out     UCSRC, temp
 
    sbi     UCSRB, RXEN                     ; RX (Empfang) aktivieren
 
receive_loop:
   sbis     UCSRA, RXC                      ; warten bis ein Byte angekommen ist
   rjmp     receive_loop
   in       temp, UDR                       ; empfangenes Byte nach temp kopieren
   out      PORTD, temp                     ; und an Port D ausgeben.
   rjmp     receive_loop                    ; zurück zum Hauptprogramm
 und mein C# programm 
	Code:
	using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;  //Einfügen
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        SerialPort AktuellerComPort = new SerialPort ("COM3",9600,Parity.None, 8,StopBits.One); // ComCort erzeugen 
        
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string[] schnittstellen = SerialPort.GetPortNames();   // Gibt alle aktuell verfügbaren Comports zurück
            foreach (string comport in schnittstellen) 
            {comboBox1.Items.Add(comport); }
             
        }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                AktuellerComPort.PortName = comboBox1.Text; // dem ComPort Objekt einen Comport zuweisen
            }
            catch (Exception ex)
            {
                 MessageBox.Show(ex.Message);                
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {  
                AktuellerComPort.Open();
                AktuellerComPort.Write(textBox1.Text);  // sende inhalt der Textbox an ComPort       
                AktuellerComPort.Close();
            }
            catch (Exception ex)
            {
                 MessageBox.Show(ex.Message);
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
               AktuellerComPort.ReadTimeout = 300;     //Wartezeit (Timeout Zeit) (in ms) auf Antwort bevor der Lesevorgang abgebrochen wird
                AktuellerComPort.Open();
                textBox2.Text = AktuellerComPort.ReadLine();   //einlesen                    
                AktuellerComPort.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                AktuellerComPort.Close();
            }
        }
    }
}
 hier noch die Form dazu
Bild hier  
dabei ist der Button "Daten Senden" Button2 und links daneben die Textbox1
So als Programmer habe ich den myAVR mySmartUSB MK2 bzw habe das kommplette uC Board. Hier ein Bild vom Programmer:
Bild hier  
Ausgangssituration: Programm auf uC und das uC Board am PC via USB angeschlossen. Rote LED vom Programmer leuchtet 
Wenn ich jetzt das myAVRControlcenter benutze (hier ein Bild)
Bild hier  
und die Verbindung herstelle (Start Button oben rechts) dann geht die rote Led von den Programmer aus und die 2 grünen Leds an.
Gebe ich dann im myAVR Controllcenter unter Daten Senden was ein und klicke Senden werden die Daten übertragen (grüne LEDs blinken) und der D Port vom uC wird gesetzt. -> Die Led Leuchtet (Port D PIN2 ist mit einer Led verbunden)
Wenn ich das ganze über mein C# Programm probiere, geht die rote LED vom Programmer nicht aus. Gebe ich in der Textbox was ein und klicke den Butten "Daten Senden" leuchten zwar die beiden grünen LEDs vom Programmer kurz auf (also es wird wohl etwas übertragen), aber der uC bzw das Programm macht nichts. Also die LED am D Port leuchtet nicht.
Wie kann ich das Problem lösen?
Wäre super wenn einer eine Lösung weiß
Schonmal vielen Dank für die Antworten!
mfg André
						
					
Lesezeichen