Gast
#5452120
Hallo, ich habe ein Problem mit dem UART, das sich sicher leicht lösen lässt. Ich nutze einen EFM8SB1 MC von Silabs und möchte den Wert einer Stromquelle als Integer über den UART ausgeben. Der Strom nimmt maximal dreistellige Werte an (ist aber für später auf 4 ausgelegt). Die Beispiele zu anderen MCs habe ich mir angesehen, sie sagen mir als Anfänger aber wegen der anderen Bezeichnungen bei AVR und Arduino nicht viel. Meine Frage ist nun, wie ich diese Integer-Werte am besten in der richtigen Reihenfolge ausgebe, wie ich den Datentyp dafür anpassen muss und warum mein bisheriger Code nicht den gewünschten Wert 0xxx ausgibt, sondern nur Buchstaben. Ich habe mir gedacht, dass es mit einem Zählvariablen-Array am einfachsten geht, das zusammen mit dem Stromwert IREF0CN0 steigt und sinkt. Steigen und Sinken passiert identisch über jeweils eine Methode (Anhang). Die legt ein int-Array an (unschön realisiert), zählt dort hoch und kopiert dann am Ende die char-Werte der Zahlen in ein dafür vorgesehenes Array. Kann der UART das so lesen? Die Ausgabe erfolgt dann über SI_INTERRUPT (UART0_ISR, UART0_IRQn) { if(SCON0_TI==1) { IE|=IE_ES0__DISABLED; //disable UART interrupts SCON0_TI=0;//clear transmit flag bufPos=0; //type = int while(bufPos<3) { SBUF0=cvalc[bufPos]; //transmit bufPos++; } IE|=IE_ES0__ENABLED;//enable UART interrupts } … wobei das Transmit Flag in einer Timer ISR immer dann gesetzt wird, wenn der Strom steigt oder sinkt.
