- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: 4 Eingänge als BCD auswerten?

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Anzeige

    Praxistest und DIY Projekte
    Hallo Sebastian,

    Du schreibst bei Linux ist GCC dabei. Wie kann man den denn zum testen verwenden? Das ist doch der Compiler oder?
    Ich werwende WinAVR und GCC unter Windows auch und wenn man damit auch testen kann wäre das super.
    mfG Henry

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo Henry,
    Ob winavr auch den GCC (ohne avr) enthält kann ich Dir leider nicht sagen, meine Frau lässt mich nicht an ihren Win PC dran, aber falls das nicht gehen sollte gibt es noch andere Lösungen (sehe oben)
    Ich teste meine Routinen in ganz normalen PC Programmen, das geht ganz gut, man muß aber ein paar Tricks benutzen, gerade habe ich Deine bcd Routine ausprobiert, und einen Fehler entdeckt
    und hier das PC- Programm:
    Code:
    #include <stdio.h>
    #include <string.h>
    
    int bcd (int portd,int portb){
      int var1 = portd & ((1<<5)|(1<<6)|(1<<7));
      var1 >>=5;
      if (portb & (1<<0))
        var1 |= (1<<3);
      return var1;
    }
    
    
    
    int bit2char (char *string) {
    
      int i,result=0;
      for (i=strlen(string)-1;i>=0;i--) {
        if (*string++ == '1')
          result |=(1<<i);
      }
      return result;
    }
    
    int main (int argc,char *argv[]) {
      int a,b;
      if (argc < 3) {
        printf("Du musst zwei Parameter übergeben\n");
        return 1;
      }
      printf ("Ergebnis %d\n",bcd(bit2char(argv[1]),bit2char(argv[2])));
      return 0;
    }
    Das Programm erwartet 2 Argumente in einer binären Form, die den Zustand Deiner Ports darstellen z.B. wenn alle Pins am Schalter auf high stehen <programname> 11100000 00000001
    die bit2char Funktion wandelt nur die zwei Argumente aus char Arrays in int werte um, damit wird dann die bcd Funktion gefüttert und liefert den BCD Wert zurück, der ausgegeben wird...
    Naja der Fehler lag bei
    Code:
    if (PINB & (1<<PB0)) 
        var1 |=(1<<4);
    es muß heißen
    Code:
    if (PINB & (1<<PB0)) 
        var1 |=(1<<3);
    Wohl ein Bit zu weit geschoben...

    Und kompliziert ?
    So lernt man C am einfachsten

    Gruß Sebastian

    P.S Ich habe das Programm oben nochmal geändert
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Hallo Sebastian,

    hast Recht, der Compiler heißt avr-gcc. Du testest Deine Programme also indem Du sie als PC-Programm compilierst und dann laufen lässt.

    Danke für die Fehlerkorrektur, hätte ich erst gemerkt ween ich ab der achten Schalterstellung Probleme gehabt hätte.

    Zitat Zitat von izaseba
    Und kompliziert ?
    Nö, wenn ich es so sehe dann macht das alles Sinn für mich. Ich werde zwar so schnell kein Programm aus dem Kopf zusammencoden können, aber mit meinen Aufzeichnungen als Hilfe wird der Wissensstand immer besser.
    Ist nur immer etwas ungewohnt, da ich am PC (als weiteres Hobby) Programme in Delphi (also Pascall) schreibe.
    mfG Henry

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Ist nur immer etwas ungewohnt, da ich am PC (als weiteres Hobby) Programme in Delphi (also Pascall) schreibe.
    Naja, ich habe die Erfahrung gemacht, wenn man eine Sprache kann, kann man sich ziemlich schnell in eine andere reindenken.
    Mit Pascal hatte ich bis jetzt nichts gemacht, ich fing auf C64 mit Basic an, dann auf Amiga mit C später PC C++, Java, PHP die sind fast alle gleich, bis auf die Objekt Orientierung, da bin ich etwas zu blöd dafür
    Mit der Bitschubserei muß Dir für die Zukunft nur merken
    a = 1<<4 ergibt 00010000
    das heißt man fängt bei 0 an
    a = 1<<0 ergibt 0000001
    wenn man aber die ganze Zahl schiebt fängt man bei 1 an
    a = 1 ; //00000001
    a <<=1; ergibt 00000010
    usw.
    deswegen
    if (PINB & (1<<PB0))
    var1 |=(1<<4);
    hätte 000x0000 hier ben Bit gesetzt
    naja, viel Spaß noch

    Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.01.2004
    Beiträge
    317
    Das war ein guter Hinweis. Ich denke das mit der schieberei habe ich jetzt denke ich begriffen. Kommt gleich in meine Sammlung nützlicher infos zur µC programmiererei

    Gute Nacht dann erst einmal und danke für die ausdauernde Hilfe. (Wir werden sicherlich noch einmal das Vergnügen haben hier im Forum )
    mfG Henry

  6. #16
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    59
    Beiträge
    1.305
    Blog-Einträge
    1
    *** Fast (nicht ganz) OFFTOPIC ***

    • Zitat Zitat von izaseba
      Naja, ich meine eigentlich das Programm des Fragestellers,
      sorry, hätte zitieren müssen.
      Wenn ich solche Konstrukte sehe,
      verstehe ich auch Leute, die meinen C wären Hieroglyphen
      und allen Basic aufs Auge drücken möchten
      @Henry,
      nicht böse sein

      SELBST ZENSIERT

      Naja das Basic, als Programmiersprache ist nicht der alleinige Grund warukm ich mit Bascom arbeite,
      mit C wäre ich damals auch zufrieden gewesen,
      wenn ich eine Anleitung gefunden hätte wie man das "Zeuch" richtig compiliert (damals zu viele unvollständige und z.T. widersprüchliche Anleitungen).

      Jetzt ist es eben so, und ich bin zufrieden damit.

      Ich will keinesfalls jemanden von Bascom überzeugen ***Jeohva, Jehova schrei***.


      Hoffentlich entseht jetzt nich so ein Krieg wie mit Windows/Linux.
    *** Fast (nicht ganz) OFFTOPIC ENDE***


    SELBST ZENSIERT
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hoffentlich entseht jetzt nich so ein Krieg wie mit Windows/Linux.
    Das hoffe ich auch, aber ich verstehe nicht so ganz, warum Du hier in GCC Forum hausieren gehen muß, lass die Leute antun, jedem das seine
    Gegen Deine 6 Argumente hab ich nur das zu bieten
    Vielleicht kannst Du den Artikel ergänzen ?
    Und bitte versuche das Ergebnis nicht schönzureden, Zitat
    Remark: Das reine Register-rechnen (GCC) macht Bascom nicht. Er arbeitet immer im SRAM , brav mit Load & Store. (PicNick)
    vor allem dieses brav hört sich so an, als ob es ein Vorteil wäre

    Ach so, Deine Lösung hat immernoch einen Fehler

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  8. #18
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    59
    Beiträge
    1.305
    Blog-Einträge
    1
    OOOPS,
    Sorry...

    habe garnich realsiert, dass das heir ein C-Forum ist,
    Jetzt erst da Du es ansprichst.

    Ich habe einfach auf die Frage hin gepostet und nicht auf das Forum geachet.

    Ich war wo so voller Tatendrang...


    Nochmal Entschuldigung

    Ich wollte hier nicht Wildern.

    ENTSCHULDIGUNG ENTSCHULDIGUNG ENTSCHULDIGUNG

    Soll ich meine Beiträge wieder löschen?
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  9. #19
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Eigentlich OT, aber weil ich grad' vorbeikomme
    Zitat Zitat von izabesa
    vor allem dieses brav hört sich so an, als ob es ein Vorteil wäre
    "Brav" sollte da nicht implizieren, daß C "schlimm" sei.

    Ich wollte das Gespräch aber nicht unterbrechen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo PicNick,
    sorry, es war auch nicht gegen Dich gerichtet, ich find es gut, daß Du bei diesem Vergleich mitgemacht hast, mir ist es auch im Endeffekt egal, womit man seine Programme schreibt, nur objektiv soll man dabei bleiben und keinen Kreuzzug führen.
    Für mich ist dieses Thema abgeschlossen.
    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad