WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Serielle Schnittstelle ansteuern - Matlab Anfänger

 

Domi
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 18.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2012, 20:38     Titel: Serielle Schnittstelle ansteuern - Matlab Anfänger
  Antworten mit Zitat      
Hallo erstmal an alle Forenmitglieder,

da dies mein erster Beitrag ist möchte ich zuerst kurz vorstellen.
Ich bin 25 Jahre alt und Studiere Elektrotechnik. Zurzeit befinde ich mich in einem Praktikum, in welchem ich mit Matlab in naher Zukunft zutun haben werde Smile .
Mit Matlab habe ich bis jetzt allerdings praktisch nichts zu tun gehabt, jediglich einige Programmausschnitte in Vorlesungen gesehen. Deren Niveau jedoch sehr niedrig war.

Meine sonstigen Erfahrungen mit programmieren sind Basisvorlesungen in C# und C++.

Spass am programmieren habe ich eigentlich erst jetzt so richtig, seit dem ich in meinem Praktikum mit realen Problemen konfrontiert werde.


Nun zu meiner Frage/Aufgabe:

Ich möchte die Serielle Schnittstelle COM1 verwenden.
Genauer gesagt möchte ich spezielle Werte Schreiben, welche ein Mikrocontroller lesen soll und je nach Wert etwas ausführt.

Bis jetzt habe ich folgende Zeichen Code

Code:

com1=serial('com1');
set(com1,'BaudRate', 9600,'Databits',8,'Parity','none','FlowControl','none');
com1.ReadAsyncMode = 'continuous';
com1.Terminator=' ';
fopen(com1);

fwrite(com1,1,'uchar');

 


Ich hoffe damit den COM1 initialisiert und mit fwrite(com1,1,'uchar') beschrieben zu haben.

Ich bin mir nicht sicher ob ich alle wichtigen Parametereinstellungen vorgenommen habe oder ob damit asynchrone Übertragung eingestellt ist.
Die im Code angegebenen habe ich mir aus diesem Forum und anderen abgekupfert. Ob ich Sie so benötige steht noch zur Frage.

Wird eigentlich als Beispiel die Zahl 1 wie in meinem Code als 0000 0001 übertragen ? Oder wird ein Code Übertragen, der die 1 repräsentiert ? ( z.B. ASCII ? )

Auch Syntaxmäßig kann ich zurzeit nur schätzen, Matlab selbst steht mir immoment noch nicht zur Verfügung.

Es wäre sehr nett von Euch, wenn Ihr meinen Code bewerten würdet.
Auch über Verbesserungsvorschläge/Tipps würde ich mich sehr freuen.

Bis dahin mache ich mal ein paar Tutorials für Matlab.

Viele Grüße und Danke im voraus!

Domi
_________________

Matlabneuling
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.10.2012, 01:05     Titel: Re: Serielle Schnittstelle ansteuern - Matlab Anfänger
  Antworten mit Zitat      
Hallo Domi,

Herzlich willkommen im Forum!

Code:
com1.Terminator=' ';

Das ist ein ungewöhnlicher Terminator. Aber möglich.

Zitat:
Ich bin mir nicht sicher ob ich alle wichtigen Parametereinstellungen vorgenommen habe oder ob damit asynchrone Übertragung eingestellt ist.

Was genau "wichtig" ist, müsstest Du noch (er)klären. Das kommt nämlich ganz auf den Mikrokontroller an.

Code:
fwrite(com1,1,'uchar');

Dies schreibt die 1 als Unsigned-Char-Wert, also als 8-Bit ohne Vorzeichen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Domi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 18.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2012, 16:07     Titel:
  Antworten mit Zitat      
Danke für deine Antwort Jan.

Wenn es die 1 als uchar schreibt, passt es soweit schonmal.


Wichtig für mich ist, dass ich während einem Durchlauf eines Matlab-Scripts an verschiedenen Stellen die Serielle Schnittstelle beschreiben kann.
Und zwar mit verschiedenen uchar Werten.

Der Mikrocontroller soll in einer Schleife prüfen, ob einer dieser uchar Werte anliegt und dementsprechend eine Funktion aufrufen.

Hier mein erster Codeansatz für meinen µC(ATTiny2313):

Code:

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>




void init_ports(void);
void init_USART(unsigned int ubrr_value);
void Programm_name();
void Programm2_name();



////////////////////////////////////////////////////////////

int main(void)
{
   
   init_ports();
   
   init_USART(51);//8M/(16*9600)-1
   //sei();//Global Interrupt Enable
   /////////////////////////////////////////////////////////////
// Check UDR DATA and select Programm
    while(1)
    {
      if ( UDR == 1)
      Programm_name();
      if ( UDR == 2)
      Programm_name2()
           
    }
}

///////////////////////////////////////////////////////////////////////
void init_ports(void)
{
//Port B pins 1 to 3 Config as Digital Out

   DDRB=0x03;
}
////////////////////////////////////////////////////////////////////
void init_USART(unsigned int ubrr_value)
{
   //Set Baud rate
   UBRRL = ubrr_value;
   UBRRH = (ubrr_value>>8);


   /*Set Frame Format

   
   >> Asynchronous mode
   >> No Parity
   >> 1 StopBit
   >> char size 8

   */

   UCSRC=(1<<UMSEL)|(3<<UCSZ0);


   //Enable The receiver and transmitter and interrup
   UCSRB=(1<<RXEN)|(1<<TXEN)|(1 << RXCIE);
}
////////////////////////////////////////////////////////////////////
void Programm_name()
{

}
////////////////////////////////////////////////////////////////////
void Programm2_name()
{

}
 


Fragen:

Ist es sinnvoll/üblich, meinen Com1 nach jeder Übertragung zu schließen und anschließend wieder bei einer neuen Übertragung zu öffnen ?

Wie lange liegt mein uchar-Wert am Com1 überhaupt an ? Reicht diese Zeitperiode aus, um meine komplette while-Schliefe meines µControllers zu durchlaufen und dementsprechend eine Funktion aufzurufen ?

Kennt sich jemand soweit mit µ-Controllern aus, um mir sagen zu können ob mein µ-Controller Programm funktionieren würde?


Leider kann ich auch hier mein Programm noch nicht testen.


Vielen Dank im voraus und viele Grüße
Domi
_________________

Matlabneuling
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.