Re: Daten mit RS232 Übertragen Kategorie: Programmierung Basic (von Josef - 6.08.2009 18:19) | ||
Als Antwort auf Daten mit RS232 Übertragen von Daniel - 31.07.2009 8:49 | ||
| ||
> Hey, > > ich bin gerade dabei Den Mega128 so zu programmieren das er über die RS232 Schnittstelle ASCII > zeichen ausgibt. Die Daten werden an den PC gesendet dort schaue ich sie mir mit dem > Hyperterminal an. Jedoch kommen bei allen Zahlen die ich übersende nur sehr komische Zeichen > heraus. Wei� jemand von euch woran das liegen könnte? > > Fg Daniel hallo daniel das selbe problem habe ich auch gehabt. das geht bei der ccontrol pro nicht so einfach wie bei den vorigen ccontrols. dur musst die variable (byte oder word) in ein character umwandeln und dann an die schnittstelle senden. ich hänge die ein demoprg an. Str_Printf ist der Befehl den du anwenden musst. das mit dem Befahl Msg... funktioniert überhaupt nicht, wenn die unit in der schaltung ist und nicht im applikationsbord. // Dieses Demo Programm ist nur für Mega128 #ifdef MEGA32 #pragma Error " Timer3 nur für Mega128 " #endif // Deklaration der Formatierungsvariablen #define SPACE 0x20 #define CR 13 word PM_Wert; // globale Variablendeklaration char str[80]; //------------------------------------------------------------------------------ // Messung // void Timer3_ISR(void) { PM_Wert=Timer_T3GetPM(); // Messwert auslesen Irq_GetCount(INT_TIM3CAPT); // Interrupt zurücksetzen } //------------------------------------------------------------------------------ // Hauptprogramm // void main(void) { byte n; word i; n=0; Irq_SetVect(INT_TIM3CAPT,Timer3_ISR); // Interrupt Service Routine definieren Timer_T1PWM(256,64,PS_64); // Pulsgenerator // Puls=4,34 µs*32= 139 µs // Periode=4,34 µs*256= 1111 µs Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200); // die Messung beginnt hier // Timer Output verbinden mit ICP (input capture pin) Timer1 while (1) { PM_Wert=0; Timer_T3PM(0,PS_1); // Pulsmessung initialisieren und starten //Timer_T3PM(1,PS_1); // Periodenmessung initialisieren und starten while (PM_Wert==0); // Pulsbreite und Periode messen // Msg_WriteHex(n); // Anzahl Durchläufe ausgeben // Msg_WriteChar(SPACE); // Msg_WriteWord(PM_Wert); // Wert ausgeben // Msg_WriteChar(CR); PM_Wert=PM_Wert*67.8e-3; Str_Printf(str, "%4d",n); Serial_WriteText(0,str); Serial_Write(0,SPACE); Str_Printf(str, "%u %5s",PM_Wert, " µsec"); Serial_WriteText(0,str); Serial_Write(0,CR); AbsDelay(500); // Delay 500ms n++; } } ich hoffe dir hilfts gru� josef | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum