- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: C# Kommunikation mit dem ATMEGA32

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Ja, ich war mir schon fast bewusst, dass das Thema nicht in diesem Thread richtig ist... Hatte aber sonst auf einen Moderator gehofft, der das Teil an die passende Stelle verschiebt.

    Laufen tut mein C# Code jetzt. Allerdings habe ich ein eigenartiges Problem. Die Kommunikation mit dem Mikrocontroller funktioniert nur, wenn ich auch einen Portmonitor auf dem System anhabe, auf dem auch mein C# Programm läuft.

    Hier einmal beide Codeausschnitte:
    C# Programm:
    Code:
     public SerialPort comPort = new SerialPort("COM1", 2400, Parity.None, 8, StopBits.One);
            
            
    
            public void ser_sendYes()
            {
                if (comPort.IsOpen == false)
                {
                    comPort.Open();
                }
                comPort.Write("J\r");
                comPort.Close();
            }
            public void ser_sendReset()
            {
                if (comPort.IsOpen == false)
                {
                    comPort.Open();
                }
                comPort.Write("R\r");
                comPort.Close();
            }
    
    	this.ser_sendReset();
    	this.ser_sendYes();
    Mikrocontroller (BASCOM):
    Code:
    Rem This file contains an error in the include statement
    Rem the file a.bas does not exist
    Rem It shows that the editor will load this file
    Rem and displays the error marker on this line
    Rem when you compile the main file : include.bas
    $regfile = "m32def.dat"
    $crystal = 4000000
    $baud = 2400
    
    Config Porta.0 = Output
    Config Porta.1 = Output
    Config Porta.2 = Output
    Config Porta.3 = Output
    Config Porta.4 = Output
    
    Dim X As Byte
    Dim Y As Byte
    Dim Empfangen As String * 255
    
    Declare Sub Led1()
    Declare Sub Led2()
    Declare Sub Led3()
    Declare Sub Led4()
    Declare Sub Blinken()
    Do
    
    
       X = 0
    
       Do
          Empfangen = ""
          Input Empfangen
    
          Select Case Empfangen
          Case "J"
             Led1
             X = X + 1
          Case "R"
             Porta.0 = 0
             Porta.1 = 0
             Porta.2 = 0
             Porta.3 = 0
             X = 4
          End Select
       Loop Until X = 4
    
       Wait 2
       Porta.0 = 0
       Porta.1 = 0
       Porta.2 = 0
       Porta.3 = 0
       Porta.4 = 0
    
    Loop
    
    End
    
    Sub Led1()
       If Porta.0 = 0 Then
          Porta.0 = 1
          Print "Led 1 ist an"
       Else
          Led2
       End If
    End Sub
    
    Sub Led2()
       If Porta.1 = 0 Then
          Porta.1 = 1
          Print "Led 2 ist an"
       Else
          Led3
       End If
    End Sub
    
    Sub Led3()
       If Porta.2 = 0 Then
          Porta.2 = 1
          Print "Led 3 ist an"
       Else
          Led4
       End If
    End Sub
    
    Sub Led4()
       If Porta.3 = 0 Then
          Porta.3 = 1
          Print "Led 4 ist an: Gewonnen"
          Wait 1
          Blinken
       End If
    End Sub
    
    Sub Blinken()
    
    Y = 0
    
    Do
    Porta.4 = 1
    Waitms 500
    Porta.4 = 0
    Waitms 500
    Y = Y + 1
    Loop Until Y=15
    End Sub

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Da wärst Du wohl im Bascom Thread besser aufgehoben.
    Aber zum Code: Mittlerweile sendest Du ja immerhin ein CR, dachte mir vorher schon, dass es daran scheitert. Solltest Du Input von Bascom verwenden wollen, dann musst Du darauf achten, dass dort der String auch mit nur einem CR erkannt wird. Schau' Dir dazu Config Input an, damit kann man das einstellen.
    Sonst wirf noch einen Blick auf Waitkey oder das Beispiel zu Ischarwaiting in der Hilfe. Damit kannst Du auf jedes gesendete Zeichen reagieren und musst nicht warten, bis die Input Funktion durch ein CR/LF abgeschlossen wurde. Außerdem würde ich Dir empfehlen $hwstack, $swstack und $framesize im Code zu definieren, damit die nicht zu klein sind.
    Edit:
    Schreib' Dir einen kleinen Code in Bascom, mit dem Du eine Led kurz blinken lässt sobald ein Zeichen ankam, das geht über Waitkey. Dann siehst Du ob ohne Portmonitor überhaupt Zeichen ankommen. Was ich zum Test auch noch machen würde, ist in der Systemsteuerung den Com1 Port fest auf die 2400, bzw. auch die anderen Parameter einzustellen.
    Geändert von MagicWSmoke (21.03.2012 um 08:47 Uhr)

Ähnliche Themen

  1. atmega32 <---> atmeg32 Infrarot-Kommunikation
    Von jcrypter im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 06.08.2010, 12:46
  2. ATmega32 und DataFlash - keine Kommunikation möglich
    Von nowayback im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 28.05.2009, 19:25
  3. Handy-Atmega32-Kommunikation (seriell)
    Von stoffelll im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 18.09.2007, 07:33
  4. Kommunikation zwischen C++ und ATMega32 (realisieren??)
    Von strunz im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 16
    Letzter Beitrag: 21.04.2006, 05:37
  5. Kommunikation ATMega32 <-> CmuCam2 funst nicht !
    Von Javik im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 19
    Letzter Beitrag: 26.08.2005, 10:51

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress