Re: Serial_IRQ_Info Kategorie: Programmierung C (von Franz - 13.11.2010 22:28) | |
Als Antwort auf Re: Serial_IRQ_Info von ulrich korth - 13.11.2010 11:51
| |
> > > > Hallo, > > > > > > > > kann mir einer sagen warum das nicht klappt, ich weis nicht mehr weiter .... > > > > > > > > ********************************************* > > > > byte buffer[41]; > > > > > > > > > > > > void main(void) > > > > { > > > > byte count; > > > > count=0; > > > > Serial_Init_IRQ(0,buffer,20,15,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD38400); > > > > while(1) > > > > { > > > > AbsDelay(4000); > > > > count=Serial_IRQ_Info(0,RS232_FIFO_RECV); > > > > Msg_WriteWord(count); > > > > } > > > > } > > > > *********************************************** > > > > > > > > > > > > COUNT bleibt einfach null, Einstellungen stimmen auch(im Anhang Einstellungen von HTerm)?! > > > > > > > > > > > > > > > > ich hoffer Ihr könnt helfen. > > > > > > > > Grü�e > > > > > > > > > > Liegt am AbsDelay > > > > > > in der Hilfe steht: > > > > > > > > > > > > Die Funktion Absdelay() wartet eine bestimmte Anzahl von Millisekunden. > > > > > > > > > > > > Die Funktion arbeitet zwar sehr genau, aber unterbricht nicht nur die Abarbeitung des aktuellen > > > Threads, sondern lä�t den Bytecode Interpreter insgesamt warten. Interrupts werden zwar registriert, > > > aber die Interruptroutinen in dieser Zeit nicht abgearbeitet, da auch dafür der Bytecode Interpreter > > > nötig ist. > > > > > > > > > > > > Beim arbeiten mit Threads immer Thread_Delay und nicht AbsDelay benutzen. Wird trotzdem z.B. > > > ein AbsDelay(1000) benutzt, so tritt folgender Effekt auf: Da der Thread erst nach 5000 Zyklen > > > (Default Wert) zum nächsten Thread wechselt, würde der Thread 5000 * 1000ms (5000 Sek.) laufen, > > > bis der nächste Thread anfangen könnte zu arbeiten. > > > > > > > > > > > > > Hi, > > > > > > Ausgabe bleibt die Selbe 0000000000000000000000000000000000000. > > > > > Hallo Franz, > was willst du eigentlich machen? Ich vermute du willst was einlesen. > Dann solltest du Serial_ReadExt statt Serial_IRQ_Info benutzen. > Ausserdem: > - das Abs_Delay muss weg > - ist da überhaupt ein Partner angeschlossen? > - hat der die gleiche baudRate,.... > - ist der richtig angeschlossen? Evtl Pin 2 und 3 tauschen oder NullModem verwenden > Ulrich Hi, Ja, alles erfüllt Partner ist Rechner mit HTerm( ist oben nen Bild drin), Einstellungen stimmen. ich kann Empfangen und senden, wollte aber mit Serial_Read nich mehr weiter machen, weil die Funktion ja bekanntlich bis zum Zeichen wartet, wenn nichts kommt Kaffeepause. also wollt ich umsteigen auf Serial_ReadExt, und hab erstmal probierl, wie im Beispiel mit Serial_Init_IRQ ob er Zeichen empfängt, zeigt aber immer null. Ich mein mit Serial_ReadExt funktioniert schon !!! aber komisch ist es, ich kann mit Msg_WriteText nichts mehr ausgeben?!?!?! sebst bei Msg_WriteInt(ieingabe); kommt nichts. void leseEingabe(void) { while(true) { if(ieingabe==0) { eingabe="";} ch=Serial_ReadExt(0); if(ch) { if(ch=='n') { ieingabe=0; Msg_WriteInt(ieingabe); setMsg(eingabe); isset=1; } else{ eingabe[ieingabe]=ch; ieingabe++; } } Gru�. | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum