-         

Ergebnis 1 bis 8 von 8

Thema: UART (Uhr von C# aus an dem Microkontroller stellen)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2011
    Beiträge
    5

    UART (Uhr von C# aus an dem Microkontroller stellen)

    Anzeige

    test.c

    Hallo, miteinader bin neu beim µC Programmieren. und möchte gerade meine Uhr stellen welche ich programmiert habe über einen String wo von meinem PC- Programm über die Serielle Schnittstelle geschickt wird.

    Habe als anhang gleich mal die Datei angehängt. Würde mich freuen wenn mir jemand dabei helfen könnt!

    Danke!!!!!

    MfG von Thron

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.05.2005
    Ort
    Berlin
    Beiträge
    316
    Hallo,

    müssteste uns erstmal sagen, was für Hilfe du brauchst?!

    Sollen wir dir die Stell-Routine schreiben? Das wird wahrscheinlich nicht passieren.
    Eine präzise Fragestellung wäre wünschenswert!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2011
    Beiträge
    5
    es geht nicht um die Stellroutine es geht ganz einfach darum das mir jemand mal erklärt wie das ganze funktioniert!
    Habe jetzt schon hier im Forum nachgelesen und auch in anderen Foren.

    Es wäre super einfach ein wenig unterstützend erklärt das ganze mal beigebracht zu bekommen wie das funktioniert.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Ich hab mal kurz in den Code reingeguckt.

    Die Zeit Senderoutine läuft ja, wie Du sagst.

    Die String Empfangsroutine müsste auch funktionieren.

    Ich denke, dein Verständnis Problem sind die Strings und die Variablen.

    Ein String ist eine Kette auch Zeichen wie "Hallo Welt".
    Eine Variable ist eine Zah mit der man rechnen kann z.B. 1234.

    In deinem empfangenen String sind nun Zahlenwerte enthalten, die du wieder in echte Variablen zurückverwandeln willst.
    Dazu gibt es in C die Funktion atoi ("String",variable);
    Da dort aber auch trenner wie z.B. der : in dem String sind, musst Du zuerst die Zahlenwerte rausfiltern und in einem eigenen String unterbringen.
    18:33:15<CR><LF> wird dazu in die Einzelstrings stundestr[3], minutestr[3], sekundestr[3] aufgeteilt. der Inhalt von stundestr ist "18" und 0 als endekenner.
    nun kannst Du den string stundestr in die variable stunde mit atoi wandeln lassen.
    Das Ergebnis kann dann in deine Uhr direkt übertragen werden, weil es ja nun wieder eine Zahl ist.

    Für eine konkrete Funktionsbeschreibung müsste man den Code komplett durcharbeiten, aber das solltest Du mal selber tun, Du willst ja auch was lernen dabei. Hoffe Ich!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2011
    Beiträge
    5
    ISR Routine des Controllers

    unsigned char verb=0;
    unsigned int minuten;
    unsigned int stunden

    cli();

    while (UCSR0A & (1<<RXC0))
    {
    verb = UDR0;
    }
    if (verb=='s')
    {
    uart_gets(text,25);
    stunden = atoi(text);

    uart_gets(text1,25);
    minuten = atoi(text1);

    uart_puts("aktuelle Uhrzeit: ");
    uart_puts(dtostrf( stunden, 1,0,string ));
    uart_puts(":");
    uart_puts(dtostrf( minuten, 1,0,string ));
    uart_puts("\n");
    }
    sei();

    Ausgabe
    mit Hterm Funktion gegeben

    Routine von C#:

    serialPort1.PortName = "COM10";
    serialPort1.Open();
    serialPort1.WriteLine("s");
    help = Time.Substring(0, 2);
    serialPort1.Write(help + "\n");
    help = Time.Substring(3, 2);
    serialPort1.Write(help + "\n");
    help=serialPort1.ReadTo("\n");

    Ausgabe

    Aktuelle Uhrzeit: 0:12 //schreibt die Stunden in die Minuten und
    lässt die Minuten weg

    Jetzt hab ich lediglich nur noch das Problem

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.05.2005
    Ort
    Berlin
    Beiträge
    316
    Erstmal die C# Ausgabe der Zeit:
    Code:
    //zeit cache
    var time = DateTime.Now;
    //Stunden
    time.ToString("HH");
    //Minuten
    time.ToString("mm");
    //Sekunden
    time.ToString("ss");
    Wo kommen 'text' und 'text1' im uC her?
    Kannst du nochmal den ganzen Code posten?

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2011
    Beiträge
    5
    Mitleirweile klappt es jetzt fehlen mir eigentlich nur noch die Sekunden

    text und text1 sind 2 char arrays

    char text[25];
    char text1[25];

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2011
    Beiträge
    5
    also die werte werden zwar übertragen docharbeitet er nicht mit den werten Weiter, am Programmtext habe ich nichts weiter geändert! Weis jemand vielleicht woran das liegt?

Ähnliche Themen

  1. Microkontroller Anfang
    Von Kimba im Forum AVR Hardwarethemen
    Antworten: 41
    Letzter Beitrag: 15.09.2010, 21:13
  2. microkontroller??
    Von rummsumfallt im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 10
    Letzter Beitrag: 22.07.2009, 01:07
  3. Welcher Microkontroller?
    Von Essigq im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 29.04.2006, 00:10
  4. Microkontroller oder SpS
    Von Jumper im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 9
    Letzter Beitrag: 18.03.2006, 20:05
  5. Microkontroller Architekturen
    Von tehat im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 19.03.2005, 16:06

Berechtigungen

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