Facharbeit, Progammieren eines Temperatursensors



  • Hallo
    Für die Facharbeit zum Abschluss meiner 2 jährigen BFS Technischer Assistent für Informatik habe ich als Thema bekommen, einen Temperatursensor zusammenzubasteln, diesen per parallele schnittstelle an Rechner anzuschließen und mit einem c++ programm die daten auszulesen.

    eine anleitung habe ich hier gefunden

    http://www.franksteinberg.de/lm75.htm

    nur steht hier was von*
    Für die ersten Versuche sollte der PC mit reinem DOS laufen, um Einflüsse von Windows auszuschließen. Wenn Windows 9x läuft, klicken wir Start - Beenden... - Im MS-DOS-Modus neu starten. Dann starten wir LM75-I2C.EXE. Erst wenn alles fehlerfrei läuft, können wir es im DOS-Fenster probieren. Mit WinNT, Win2000, WinXP und Linux geht es garnicht, weil keine Portzugriffe zugelassen werden. Hier hilft eine DOS-Bootdisk
    *

    joa ich hab keine ahnung was die "LM75-I2C.EXE" fürne Datei sein soll, und läuft das dinge jetzt allgemein nicht über winxp? oder betrifft es nur dieses Programmm?
    Ist es überhaupt möglich das so zusammenzubasteln und dann Daten mit c++ auszulesen? 😕

    also nochma kurz, ist es "einfach" möglich mit der hardware sachen auzulesen?!
    ich hoffe ich habe mich hier verständlich genug ausgedrückt,
    grüße, theschaaf :p



  • unter windoze brauchste sowas wie das: http://www.logix4u.net/inpout32.htm



  • Servus,

    die "LM75-I2C.EXE" wird wohl ein ausführbares Testprogramm für den Microcontroller sein. Aber du kannst dir auch mal genauer die Beschreibung anschauen. Dort findest du auch einen Link zu http://www.national.com/pf/LM/LM75.html . Darin ist alles etwas genauer beschrieben und auch unterhalb ein paar Testtools aufgeführt.

    Die Frage ob es "einfach" ist, kann dir wohl keiner so beantworten. Es kommt auf die Erfahrung des jeweiligen an. Ich persönlich würde dir sagen, dass es kein großer Akt ist. Das liegt aber wohl mehr oder weniger daran, dass diese ganzen Geschichten mein "Täglich Brot" sind.

    Es ist möglich, die Aufgabenstellung ist lösbar. Es gibt sogar schon zahlreiche Beispiele für die Kommunikation zur parallelen Schnittstellen. Sogar hier im Forum.

    mfg
    Hellsgore



  • halloa
    also ich stecke grade etwas inner klemme, ich hab getrödelt, hatte dann noch nen studio termin mit meiner band in der letzten woche und steh jetzt da und hab nur noch eine woche zeit.
    jetzt ists passiert, ein pin meines controllers ist abgebrochen, ich hatte einen auf reserve damit wollte ich heute anfangen aber wieder ist ein pin abgebrochen, ich habe gestern schon zwei neue zur sicherheit bestellt, allerdings sind die wohl erst dienstag da und abgabetermin ist freitag.

    ich hab auch keine ahnung wie ich jetzt anfangen soll, kann ich schon anfangen zu programmieren? auch ohne einem angeschlossenen gerät?
    kann mir vll jemand nen tipp geben, also sozusagen der ersten schritt den ich machen muss?
    wäre wirklich nett, und für die die es mir gleich eh sagen werden, ich weiss das ich ein trottel bin und schon viel früher hätte anfangen sollen.

    ich habe einen programmschinpsel gefunden, der sieht so aus.

    #include <conio.h>
            #include <stdio.h>
    
            int main()
            {
            unsigned char port1,port2;
    
                outp( 0x378, 0x01 );        /* D0       auf High setzen Rest auf Low */
                outp( 0x378, 0x02 );        /* D1       auf High setzen Rest auf Low */
                outp( 0x378, 0x07 );        /* D0,D1,D2 auf High setzen Rest auf Low */
    
                port1 = inp( 0x379 );
    
                printf("\n  Error      ist auf %s",(port1&0x08)? "high":"low");
                printf("\n  Select     ist auf %s",(port1&0x10)? "high":"low");
                printf("\n  Paper out  ist auf %s",(port1&0x20)? "high":"low");
                printf("\n  Acknowlege ist auf %s",(port1&0x40)? "high":"low");
    
                printf("\n  Bussy      ist auf %s",(port1&0x80)? "low":"high");
    
                port2 = inp( 0x37A );
                outp( 0x37A, port2^1 );     /* Strobe invertieren */
    
                for(i=0;i<20;i++)           /* D3 im Sekundentakt ein ausschalten */
                    {
                    outp (0x378,0x08);      /* Nur D3 auf 'High' setzen bei LPT1 */
                    Sleep(500);
                    outp (0x378,0x00);      /* Alle Pins auf 'Low' setzen bei LPT1 */
                    Sleep(500);
                    }
    
            return 0;
            }
    

    damit soll man einen paralellen port ansprechen können, aber auch auslesen? und welcher ist der nächste schritt den ich machen muss? ich hab echt keine ahnung und steh jetzt voll auffem schlauch.
    einen rechner mit windows 98 hab ich jetzt da.

    grüße, jens



  • lies dir das hier durch erstmal
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39312.html

    steht schon einiges in richtung.



  • tut mir leid aber irgendwie versteh ich da nicht viel vom geposteten quelltext.
    kann mir vll jemand sagen welches der erste schritt ist den ich machen muss um irgendwas von der schnittstelle zu empfangen?
    und hat vll noch jemand eine seite auf lager wo c++ befehle stehen? habe nämlich begriffe wie "bool" "GetCommModemStatus" etc. noch nichts gehöhrt.
    lg jens



  • mit 'c++ befehlen' wirst du für dein thema nicht weiterkommen.
    kümmer dich um die kommunikation .., die parallele schnittstelle.

    habt ihr sicher was zu gehabt, wenn es als aufgabe gestellt wurde.



  • http://members.inode.at/anton.zechner/az/Parallel.htm

    du wirst einen passenden compiler brauchen. ich rate zu einem alten borlander. oder dem djgpp.

    so long



  • ok danke, das höhrt sich so einfach nicht an...
    handelt sich um ne facharbeit, ich hab getrödelt, freitag is abgabe, war noch mit meiner band im studio und bla...
    dazu haben wir im unterricht auch nichts durchgenommen, hatten nur einfache sachen, if anweisungen, arrays und ja, viel mehr nicht.
    grüße



  • ich habe mir djgpp runtergeladen, aber irgendwie komm ich damit nicht klar, ich habe die dateien entpackt habe aber keine ahnung wie ich da jetzt was starten kann.
    was ist das überhaupt, ein compiler?
    kann ich den "bloodshed dev c++ - compiler" nicht nutzen?
    und

    outp( 0x378, 0x01 );        /* D0       auf High setzen Rest auf Low */
    	    outp( 0x378, 0x02 );        /* D1       auf High setzen Rest auf Low */
    	    outp( 0x378, 0x07 );        /* D0,D1,D2 auf High setzen Rest auf Low */
    

    was sind das hier "0x378, 0x01" genau für adressen?
    hat da was mit dem auslesen einselner pins zu tun?



  • steht doch alles in deiner aufgabenbeschreibung?
    http://www.franksteinberg.de/progss.htm
    hoffe, du findest jemanden aus deinem kurs, der dir hilft.



  • theschaaf schrieb:

    Für die Facharbeit zum Abschluss meiner 2 jährigen BFS Technischer Assistent für Informatik....

    theschaaf schrieb:

    was ist das überhaupt, ein compiler?

    😕
    lernt man da so wenig, oder hast du nur geschwänzt?



  • danke für die hilfreiche antwort, wir benutzen nur den bloodsheed dev c++ compiler, wir wirklich sehr wenig in c++ gemacht, das schwierigste was wir hatten waren pointer.
    geschwänzt habe ich nie, ist es nun mit meinem compiler möglich?

    @ elise.
    ich bin der einzigste aus meiner klasse der dieses thema bearbeit, und die aufgabenbeschreibung ist nicht für mich. meine lautet einfach nur:"baue nach dem plan die schaltung zusammen und programmiere ein programm mit c++ das die temperatur ausließt.
    .



  • auf deiner vorgegebenen projektseite findest du fertige programme, in c# (vielleicht zu verwirrend)
    hier ein link als überblick (linux!)
    http://voxel.at/prj/i2c/LM-Artikel/
    versuch, dich in diese einzulesen und als grundlage zu verwenden.

    darüber hinaus stehen auf der projektseite auch hinweise, welchen compiler du verwenden sollst.

    so long



  • Dieser Thread wurde von Moderator/in Korbinian aus dem Forum Projekte in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • theschaaf schrieb:

    if anweisungen, arrays und ja, viel mehr nicht.
    grüße

    😕 nach 2 jahren?



  • also so langsam läufts einiegermaßen, ich habe die dokumentation des hardwareteils fertig.
    jetzt möchte ich mit diesem programm weiterarbeite

    http://www.goblack.de/desy/digitalt/l_modelle/tempsens75/programm1.html

    allerdings tauchen beim kompilieren in der headerdatei immer 3 fehler auf, und zwar:

    asm{ mov AH, 80h <--- [c++warning]restarting compile using assembly
    int 0AAh }
    }

    ----------------------------------------------------------

    char i2c_receive (char slave, char far* c, char lastchar) <--- [c++error] expected

    ----------------------------------------------------------

    asm{ mov AH, 83h
    mov AL, slave
    and AL, 0FEh <--- [++error] incorrect number format
    mov CX, length
    les BX, buffer
    int 0AAh

    ----------------------------------------------------------

    oder ist dieses programm gar nich für meine schaltung geeignet? aber es müsste doch eigentlich das richtige sein oda?!

    grüße, jens



  • Deine Fehlerbeschreibungen sind zwar ziemlich dürftig, besonders die zweite ...

    theschaaf schrieb:

    asm{ mov AH, 80h <--- [c++warning]restarting compile using assembly
    int 0AAh }
    }

    Ist nur eine Warnung. Kein Problem hier.

    ----------------------------------------------------------

    char i2c_receive (char slave, char far* c, char lastchar) <--- [c++error] expected

    Expected *was*? Sieht aber so aus als würde er das far-Schlüsselwort nicht kennen. Was ist das denn für ein Compiler?

    asm{ mov AH, 83h
    mov AL, slave
    and AL, 0FEh <--- [++error] incorrect number format
    mov CX, length
    les BX, buffer
    int 0AAh

    Da muss ich passen, das sieht eigentlich gut aus.



  • theschaaf schrieb:

    restarting compile using assembly

    Bei Borland gibt es da den Schalter -B, um den Assembler sofort zu starten.



  • ja, den borlander nutze ich jetzt auch

    beim zweiten fehler steht ausser "expected" nichts

    and AL, 0FEh <--- [++error] incorrect number format
    

    hier meinte mein lehrer ich sollte mal die adressen überprüfen? deshalb habe ich auch gefragt ob sich das programm vll auf eine andere schaltung bezieht?
    kann ich aber auch nich sagen da mein lehrer sich das wohl nur ne sekunde angeschaut hat.

    "Bei Borland gibt es da den Schalter -B, um den Assembler sofort zu starten."

    d.h. jetzt genau?


Anmelden zum Antworten