Also das compilieren funktioniert ohne error, wenn ich nun z.B. test im hyperterminal eingebe und dann tab drücke passiert garnichts, der asuro blinkt nicht.
Also das compilieren funktioniert ohne error, wenn ich nun z.B. test im hyperterminal eingebe und dann tab drücke passiert garnichts, der asuro blinkt nicht.
du hast das ganze ABC ergänzt und die funktion blinken???
edit: kommt eigentlich irgendwas im terminal zurück?
mfg liggi
Lieber am Asuro rumschrauben als alles andere.
Meine Homepage
Mist, ich habe einen Fehler in dem Code gemacht... >_<
Der müsste funktionieren... theoretisch jedenfalls.Code:#include "asuro.h" #define a blinken(1,1); blinken(1,3); #define b blinken(1,3); blinken(3,1); #define c blinken(1,3); blinken(1,1); blinken(1,3); blinken(1,1); #define x blinken(1,3); blinken(2,1); blinken(1,3); #define y blinken(1,3); blinken(1,1); blinken(2,3); #define z blinken(2,3); blinken(2,1); char einZeichen[] = "#"; char Zeichenkette[] = ""; uint8_t z1, z2 = 0; int blinken(int anzahl,int multipl) { return(0); } int main(void) { while(1) { while (einZeichen != 0x09) { SerRead(einZeichen,1,0); // warten bis ein Zeichen über IR kommt SerWrite(&einZeichen[0],1); // Kontrollausgabe zum Terminal Zeichenkette[z1] = einZeichen[0]; z1++; } for (z2 = 0; z2 < z1; z2++) { switch (Zeichenkette[z2]) // der erste Index von einZeichen[] ist 0 { case ('a'): a case ('b'): b case ('c'): c // ... case ('x'): x case ('y'): y case ('z'): z case (' '): wortende } } } return(0); }
Hallo
Das war mir schon klar, dass die Erweiterung auf ganze Wörter so nicht funktioniert:
Wo werden die einZeichen[0] in derCode:while (einZeichen != 0x09) { SerRead(einZeichen,1,0); // warten bis ein Zeichen über IR kommt SerWrite(&einZeichen[0],1); // Kontrollausgabe zum Terminal z1++; }
char Zeichenkette[] = "";
eingetragen und wo werden sie wieder ausgelesen?
Natürlich könnte ich ein komplettes Programm posten, aber selbst tüfteln macht doch viel mehr Spass. Blöd dass der Herr Morse kein ASCII kannte...Code:for (z2 = 0; z2 < z1; z2++) { switch (einZeichen[z2]) // der erste Index von einZeichen[] ist 0 { case ('a'): a
Gruß
mic
*lol* Da war ich mal wieder zu langsam. btw: ich teste meine Codes meist, bevor ich sie anbiete...
Und kompilieren kann ich es auch nicht:
Der Fehler ist ja klar, aber die Warnung ist mir unklar: Wurden die Klammern hinter einZeichen mit Absicht entfernt?Code:avr-gcc -mmcu=atmega8 -Os -mno-interrupts -funsigned-char -funsigned-bitfields -Wall -Wstrict-prototypes -ggdb -c -DF_CPU=8000000UL -Wa,-acdhlmns=morsen.lst morsen.c -o morsen.o morsen.c: In function `main': morsen.c:24: warning: comparison between pointer and integer morsen.c:43: error: `wortende' undeclared (first use in this function) morsen.c:43: error: (Each undeclared identifier is reported only once morsen.c:43: error: for each function it appears in.) morsen.c:43: error: syntax error before '}' token make: *** [morsen.o] Error 1
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Was weis ich radbruch... Ich habe den Teil des Codes aus deinem Beispiel...
Hallo Warringer
Ne, der Code stammt von dir, hier Zeile 24:
while (einZeichen != 0x09)
Du vergleichst den Zeiger auf einZeichen[] (den SerRead() benötigt) mit der Endekennung deines Wortes 0x09. Richtig wäre
while (einZeichen[0] != 0x09)
Aber mit vorherigem Löschen von einZeichen[], sonst wird beim nächsten Wort das letzte 0x09 geprüft und die Schleife nie mehr betreten. Richtig gut (nach meiner Meinung) wäre:
Ich weiß, man kann sich auch verkünsteln...Code:uint8_t z1, z2; while(1) { z1=0; do { SerRead(einZeichen,1,0); // warten bis ein Zeichen über IR kommt SerWrite(&einZeichen[0],1); // Kontrollausgabe zum Terminal Zeichenkette[z1] = einZeichen[0]; z1++; } while (einZeichen[0] != 0x09); // solange Zeichen einlesen bis VT erkannt wird for (z2 = 0; z2 < z1; z2++) {
Noch 'ne Frage: Warum wird das Ende des Wortes mit 0X09 markiert? Das ist ein horizontaler Tab? Wäre cr ('\r') oder newline ('\n') nicht sinnvoller? Eben das, was die Enter-Taste sendet? Viele Wege führen eben auch hier zum Ziel.
Übrigens ist der Wikieintrag zum Morsealphabet auch lesenswert. Speziell das Kapitel über die Übertragungsrate (WPM) im Zusammenhang mit automatischem Senden der Zeichen.
Noch eine kleine Anmerkung zum Anschluß: An diesem Beitrag habe ich nun fast 40 Minuten gebastelt. Ich hoffe, er ist inhaltlich richtig und halbwegs verständlich formuliert. Das mache ich nicht immer so sorgfältig, aber speziell bei Newbee-Fragen versuche ich es. Und nun gebe ich den Ball wieder ab an Thraxas.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Vielen Dank schon mal für eure Bemühungen! Werde mir morgen früh mal alles genauer anschauen.
Gruß
René
Also der code den radbruch als letztes gepostet hat funktioniert schon mal zum Teil! Wenn ich jetz "sos" morse passiert folgendes, er morst ... - ..- ...- .- - -..- -.-- --.. . (die leerzeilen sind die pausen). Eigentlich sollte aber ... --- ... ankommen. Hat da vielleicht noch jemand eine Idee?
sind die zeichen denn richtig gespeichert?
Lesezeichen