Raspberry Pi 2 (C++) MCP3008 2 Fehler

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi,

    habe mir vor kurzem ein Raspberry Pi zugelegt und muss sagen... hätte ich schon vorher haben sollen ::) nun denn habe ich kleine Programme geschrieben und Tutorials getestet und bin nur begeistert. Nun habe ich bei einem Tutorial für das MCP3008 2 kleine "BUGS".

    Und zwar halte ich mich an :

    http://www.hertaville.com/interfacing-an…pi-using-c.html

    1. der Zweite wert (2/20) von a2dVal ist bei mir leider immer 0 (null) egal welche Spannung ich anlege.
    2. multipliziere ich a2dVal mit einem Wert z.B. 0.03545 + " V" um eine Spannung anzeigen zu lassen ist nur der erste Wert korrekt z.B. 6,123V. Die nächsten 19 Werte sind 0.

    1. Problem verursacht das nur ein Wert Angezeigt wird und dann durch diese Anweisung :

    if(retVal < 0){
    perror("Problem transmitting spi data..ioctl");
    exit(1);
    }

    die while - schleife unterbrochen wird. Nehme ich diese If - Anweisung raus erhalte ich 20 Werte, doch leider ist Wert 2 immer NULL.

    2. Bei dem Problem bin ich tatsächlich am Ende ^^ 20 mal die While Schleife also immer alles gleich trotzdem erster Wert immer OK Rest null.

    Nur aus Testzwecken habe ich die gleiche Schaltung mit einem Pythoncode laufen lassen. LEIDER alles ok ^^ Endlosviele Werte die auch korrekt sind von 0-24 V. Keine Nullwerte und auch die Datawerte multipliziert mit 0.00345 + " V" ergeben keine Nuller.

    Irgendwer ein Plan? :)

    mfG Drangoon

  • [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> 2. multipliziere ich a2dVal mit einem Wert z.B. 0.03545 + " V" um eine Spannung anzeigen zu[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> lassen ist nur der erste Wert korrekt z.B. 6,123V. Die nächsten 19 Werte sind 0.[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Tja, 0 mal irgendwas gibt immer 0, das ist also keine Ueberraschung[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> 1. Problem verursacht das nur ein Wert Angezeigt wird und dann durch diese Anweisung :[/font]
    >
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> if(retVal < 0){[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> perror("Problem transmitting spi data..ioctl");[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> exit(1);[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> }[/font]
    >
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> die while - schleife unterbrochen wird. Nehme ich diese If - Anweisung raus erhalte ich 20 Werte,[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]> doch leider ist Wert 2 immer NULL.[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Wenn ioctl sagt, dass es einen Fehler gegeben hat, dann sollte man das glauben.[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Was steht in errno ?[/font]

    - - - -

    Gibt es noch andere Anleitungen mit Code fuer diesen Chip ? Der Code scheint mir recht
    fragwuerdig: er macht fuer jedes Byte einen Transfer von einem Byte ?!

    Ich haette den ganzen Block in einem Rutsch transferiert...

  • Hab zuletzt wiringPi funktion für den IC verwendet. geht prakisch out of the box.

    mcp3004Setup (pinBase, spi) ;
    readanalog (...

    den genauen code hab ich zuhause müsste da erst nachsehen
    Ist ein Wechsel für dich OK, soll ich den Code dann posten?

    Mit gpio geht das übrigens bereits in der console.

    So macht er das
    https://github.com/hardkernel/wir…ingPi/mcp3004.c

    Einmal editiert, zuletzt von evil (15. Februar 2016 um 12:16)

  • HI ihr 2, danke schon mal für die Antwroten :)

    @Fehlermeldung lautet : Problem transmitting spi data..ioctl: Invalid argument

    ich glaube ja dass dort ein Fehler sich eingeschlichen hat ::) Das komische ist halt die while - schleife wird 20 mal durchlaufen 1. wert korrekt, 2. wert immer null restlichen 18 werte auch wieder korrekt. Das widerspricht irgendwie meiner Logik :)

    @Tell, der Wert ist ja leider nicht wirklich NULL, wenn ich die multiplikation raus nehme wird mir ein wert von ca 174 bei ca 6V angezeigt.
    evil wäre super und danke schon mal

    Drangoon

    Einmal editiert, zuletzt von Drangoon (15. Februar 2016 um 13:35)

  • Tell das ist ganz genau was ich gesucht habe ::) vielen Dank. Funktioniert auch einwandfrei auch bei einer whileschleife von 20 durchgängen. "MERCI".

    Trotzdem würde ich gerne diesen Fred noch offen halten, weshalb der andere Code bei mir nicht funzt obwohl der Code wohl richtig scheint :)

    Drangoon

  • Soderle,

    bin schon ein wenig weiter gekommen. Und zwar wenn ich das Program starte scjreibt er mir die spannung im terminal und gibt sie auf der lcd anzeige aus. Nach einer tasteneingabe ermittelt er wieder die spannung und gibt auch diese auf dem display aus.

    Leider funktioniert dies nur 9mal, dann springt das program mit rückgabewert 139 raus.

    Irgendwer ein Plan warum?

    ich vermute zwar das es an der Convertierung von float auf char liegt aber da lass ich doch mal die Profis ran :)

    Danke Drangoon

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!