meiner einer schon wieder!!! so, jetzt hab ich mal wieder ein prob. bei dem ich so nicht weiter komme. ich versuche commands ( ala kommandozeilenparameter der guten alten textbasierenden os`s ;-) ) an den msp via uart0 zu schicken. einzelne zeichen kann ich ja auch ein und auslesen, auch kann ich ganze strings ausgeben, doch beim einlesen ganzer strings hapert es noch. naja, es geht garnich (zumindest bin ich schon ziemlich down und will das zeug bald in die ecke werfen!!!!) hier in etwa meine funktion (achtung kein code, sondern ein brainstorming!!!!) 010 array: char command[20] 020 TXBUF0 löschen 030 for( i = 0;i<=20;i++) 040 { 050 wenn( TXBUF0 != leer ) // weil ja gelöscht!!!! 060 { 070 dann command[i] = TXBUF0 080 } 090 sonst warte bis TXBUF0 != leer 100 { 110 dann gehe zu 070: 120 } 130 wenn ( TXBUF0 == ENTER ) 140 { 150 dann ende der funktion 160 array übergeben 170 } auch wenn es so aussieht, ich bin kein basic'er (schien mir so aber am einfachsten mein prog/funktion zu verdeutlichen), sondern ein reiner c-mensch (mspgcc)und auch meine schöne sprungmarke sollte nicht unbeding rein ;-) hat da jemand schonmal soetwas gemacht, und wenn ja, kann ich den code vielleicht einsehen?? oder kann man mir zumindest mal einen großen denkanstoß geben?? mein prob ist im eigentlichen, das ich nicht weiß, wie ich feststellen kann, das sich TXBUF0 geänder hat/bzw ich nicht weiß, ob man ihn löschen kann... mfg KoF
Hallo KoF! Hier mal meine routine, nicht ganz optimal, aber ich brauchs im moment nicht komfortabler ;) Gruß, Patrick...
vielleicht interessiert es ja jemanden, oder hat noch einige verbesserungen, aber im grunde ist mit dem folgendem ( dank an oldbug ) nun einige riesen schritte weiter gekommen!!! struct Command { char zeichen; char kette[20]; unsigned int count; }cmd; run() { writec(cmd.zeichen); cmd.kette[cmd.count] = cmd.zeichen; } ausgabe() { int i; writes("\r"); for( i = 0; i<= 19;i++) { writec(cmd.kette[i]); } } main() { int i; uart0(); cmd.count = 0; _EINT(); // interrupt for (;;) { _BIS_SR(CPUOFF); // Enter LPM0 _NOP(); // Required only for C-spy } } interrupt(UART0RX_VECTOR) isr_usart0rx() { char ch; ch = U0RXBUF; switch(ch) { case 0x0D: writec(0x0D); writec(0x0A); break; case 0x08: writec(0x08); writes(" "); writec(0x08); break; default: writes("geht :-)"); cmd.zeichen = ch; if(cmd.count <=19) { run(); cmd.count++; } if(cmd.count >= 19) { writes("\rstack ist voll"); ausgabe(); cmd.count = 0; writes("\rstack wurde zurueckgesetzt und wird ab jetzt ueberschrieben!!!\r"); } break; } } ich hab kein problem mit kritik an dem prog, den kritik verbessert und macht auf fehler aufmerksam!! ;-) mfg KoF
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.