- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: Morsegenerator

  1. #11
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.068
    Anzeige

    E-Bike
    ok..m was funktioniert denn nicht? das compilieren? das flashen? das ausführen? oder macht es einfach nicht das was es soll? wenn es so ist, was macht es dann?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2007
    Beiträge
    13
    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.

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    31
    Beiträge
    98
    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

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    08.07.2005
    Ort
    Irgendwo südlich von Dortmund
    Alter
    45
    Beiträge
    16
    Mist, ich habe einen Fehler in dem Code gemacht... >_<

    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);
    }
    Der müsste funktionieren... theoretisch jedenfalls.

  5. #15
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Das war mir schon klar, dass die Erweiterung auf ganze Wörter so nicht funktioniert:
    Code:
          while (einZeichen != 0x09) 
          { 
             SerRead(einZeichen,1,0);       // warten bis ein Zeichen über IR kommt 
             SerWrite(&einZeichen[0],1);    // Kontrollausgabe zum Terminal 
             z1++; 
          }
    Wo werden die einZeichen[0] in der

    char Zeichenkette[] = "";

    eingetragen und wo werden sie wieder ausgelesen?
    Code:
          for (z2 = 0; z2 < z1; z2++) 
          { 
             switch (einZeichen[z2])         // der erste Index von einZeichen[] ist 0 
             { 
                case ('a'): a
    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...

    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:
    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
    Der Fehler ist ja klar, aber die Warnung ist mir unklar: Wurden die Klammern hinter einZeichen mit Absicht entfernt?
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    08.07.2005
    Ort
    Irgendwo südlich von Dortmund
    Alter
    45
    Beiträge
    16
    Was weis ich radbruch... Ich habe den Teil des Codes aus deinem Beispiel...

  7. #17
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    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:
    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++)
          {
    Ich weiß, man kann sich auch verkünsteln...

    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!

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2007
    Beiträge
    13
    Vielen Dank schon mal für eure Bemühungen! Werde mir morgen früh mal alles genauer anschauen.

    Gruß

    René

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2007
    Beiträge
    13
    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?

  10. #20
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.068
    sind die zeichen denn richtig gespeichert?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test