Guten Tag ! Ich programmiere in C und bekomme da eine Sache nicht hin und zwar würde ich gerne vom PC zum µC Atmega8 ein Befehl schicken der in etwa so aussieht: 200:1 oder 200:0.. Wie muss ich das zum Uart schicken und wie kann ich das in C splitten ? Ich benutze die UART Library von P Fleury. Dort wird die Funktion uart_getc benutzt,um die Daten vom UART Ringbuffer zu bekommen, welche vom Typ unsigned int ist. Wie kann ich das jetzt splitten, das in einer Variable die linke und in der anderen Variable die rechte Seite des Befehls steht ? Komm da nicht weiter, hatt zuvor nie solche Split Funktionen benutzt. Bedank mich schonmal ! Peter.
Hallo Peter, ich kenne die UARD Lib zwar nicht jedoch funktioniert die immer auf die gleiche weisse. Du schickst mit dem PC 200:1 --> dies wird in einzelne Zeichen zerlegt 2(0x32) 0(0x30) 0 (0x30) :(0x3A) 1(0x31). Ich habe die UARD per Interrupt überwacht, sobald ein Zeichen empfangen wurde musst du dieses sofort in ein Array speichern, das ganze machst Du 5 Mal dann stehen die Zeichen im Array und Du kannst diese auswerten was immer Du willst. Wartest Du zulange mit dem auslesen UDRx kann das Zeichen durch das nächste überschrieben werden. TOM
Hallo Tom ! Wie kann ich denn diese Daten in ein Array packen ? Meine Vermutung: int buffer[5] buffer[1]....... buffer[2]..... wie kann ich dieses Array nach dem ":" splitten ? Einige Ansätze wären nett. Ich habe mal ein Testfile von der UART Lib in den Anhang gepackt,würde eventuell etwas hilfreich sein. Danke ! Peter.
Hab mir das so mal vorgestellt: int i; int buffer[5]; while(1) { ....... ......... c = uart_getc(); if (i<=5) { i=i+1; buffer[1] = c; uart_puts_P("give"); } else { uart_puts_P("stop"); // Hier splitten... i = 0; } Man schickt dem UART die Daten einzelt rüber, und man "darf" solange Daten schicken bis das i kleiner oder gleich 5 ist, d.h. UART sagt dem PC "give" und dann überprüfe ich ob "give" beim PC ankommt, wenn das der Fall ist dann kann man weitere Daten (mein Terminalprogramm) schicken. Wenn beim µC i größer als 5 ist, dann sendet UART dem PC "stop" und der PC schickt keine Daten, damit da nix überschrieben wird, und die Daten werden gesplitted, i = 0 und weiter gehts.... Ist das so gut ? Danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.