Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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
Ich nutze:
C-Control Pro Mega128
> 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: