- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: Übertragung von zuständen vom microcontroller zum pc

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170

    Übertragung von zuständen vom microcontroller zum pc

    Anzeige

    E-Bike
    hi,

    also ich muss ca. 200 zahlen (0 oder 1) an mein rechner vom microcontroller übertragen.
    ich mach des bis jetzt am lpt-port über zwei inputleitungen von dem port.
    wenn die eine leitung strom hat dann ist es eine null und wenn die andere leitung strom hat dann ist es eine eins.
    aber manchmal wird mir des nicht genau übertragen weil ein oder mehrere zahlen verloren gehen.
    jetzt würde ich es gerne so machen, dass ich nur eine leitung benutze und das programm auf dem rechner soll solange warten bis ein interrupt vom lpt-port ausgelöst wird, dann soll das programm paar MIKROsekunden warten und die leitung prüfen, wenn auf dieser leitung dann noch strom ist, dann ist es eine eins und wenn der microcontroller in den paar mikrosekunden wieder den strom ausgemacht hat soll das programm eine null speichern. dann geht das programm wieder zum anfang und wartet wieder bis ein interrupt ausgelöst wurde.

    jetzt weiss ich aber nicht wie ich in c den interrupt vom lpt-port abfragen kann und wie ich das machen kann dass das programm ein paar MIKROsekunden wartet bis es die leitung abfragt.

    oder habt ihr da eine besser idee zur übertragung.
    solltet ihr eine haben, möchte ich liebsten dass die übertragung am lpt-port abgewickelt wird und am besten nur über eine leitung bzw. pin.

    wäre sehr dankbar für hilfreiche antworten

    mfg
    pitt

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Ich kenne mich in der PC-Seitigen Programmierung leider nicht so aus, aber wäre es nicht einfacher, die serielle Schnittstelle für Dein Vorhaben zu verwenden? Damit kannst Du gleich 8 Bit in einem Rutsch übertragen und am PC gibt es garantiert auch einen Empfangs-Interrupt für die RS232.

    askazo

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170
    ja des stimmt, nur jetzt bin ich gerade dabei des alles mit lpt-port zu machen und wenn ich hier vielleicht erfahre wie man interrupts am lpt-port auslesen kann und ein programm in c mikrosekunden warten lassen kann, werde ich es dann sowieso alles auf die serielle Schnittstelle umschreiben.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    41
    Beiträge
    506
    Eine Eigenart des Parallelports ist es, dass er (wie der Name schon sagt) darauf ausgelegt ist einen parallelen Datenstrom zu verarbeiten. Er ist dadurch relativ schnell, aber nur wenn man die Daten auch parallel vorliegen hat.
    Um serielle Daten (wie bei dir) einzulesen, verwendet man typischerweise auch eine serielle Schnittstelle (wie z.B. RS232). Daher würde auch ich dir empfehlen, dass du die Serielle nimmst und nicht die Parallele

    Auf dem Mikrocontroller hast du typischerweise Hardwareunterstützung für U(S)ART (=serielle Schnittstelle) und musst die nur gemäß Datenblatt initialisieren.
    Aufm Rechner gibts für fast jede Programmiersprache Beispiele, wie man von der Seriellen einliest - einfach mal sagen, welche Sprache du verwendest - vielleicht hab ich da schon was rumliegen...

    MfG
    stegr

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170
    hi,

    also des mit usart kann ich net verwenden weil mein pic des nicht kann bzw. hat. also muss ich des selber machen.

    ich programmiere in c.

    aber was mich sehr interessieren würde wie man halt in c
    MIKROsekunden warten kann und wie man halt interrupts ausliest.

    weil wenn ich mal irgendwann mal was über die parallele schnittstelle machen will dann möchte ich da nicht wieder die ganze zeit rumhängen weil ich des nie gemacht hab.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    41
    Beiträge
    506
    am rechner programmierst du in ansi-c?
    unter windows oder dos oder linux?

    warten (ANSI-C): delay (ms) - macht aber nur millisekunden, daher vielleicht nicht brauchbar.
    Interrupts unter Windows kannste grad vergessen - die gibts nur mit besonderem Aufwand und das möchtest du mit C wohl eher nicht machen
    Unter Linux ist das einfacher - aber auch da nimmst du lieber C++ und verwendest eine Klasse aus der STL dafür.
    Dos ist auch sehr einfach - muss aber echtes Dos sein (also max. Win9

    MfG
    Stefan

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170
    hi,
    also da wo das programm laufen soll ist ein windows xp.
    ja des delay kenn ich aber ich brauch des für mikrosekunden, deswegen hab ich des MIKRO vorhin immer großgeschrieben.

    mfg pitt

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    41
    Beiträge
    506
    Unter Windows XP hast du keinen direkten Zugriff auf die parallele Schnittstelle. Du musst zwangsweise über Winapi gehen (oder über eine Bibliothek, die das für dich macht). Die einzige, die mir da direkt einfällt wäre http://www.logix4u.net/inpout32.htm aber da ist kein Beispielcode für C dabei und ne DLL in echtem C einbinden ist auch wieder ne Sache für sich...
    Schau ansonsten mal bei www.programmersheaven.com oder unter http://www.lvr.com/parport.htm findest du eine nette Übersicht, vielleicht kannst du ja was davon verwenden.

    Btw: nen delay unter winXP machste auch über ne Winapi-Funktion, aber das macht auch keine Freude...

    MfG
    Stefan

  9. #9
    Erfahrener Benutzer Begeisterter Techniker Avatar von Andre_S
    Registriert seit
    26.06.2005
    Beiträge
    360
    Hallo,

    schau mal hier, diese IO.DLL habe ich bisher ohne Probleme für alle meine Anwendungen nutzen können. Sehr einfach, unkompliziert und von 95 bis XP ohne Änderungen einzusetzen.
    Da kannst Du z.B. auch wunderbar einzelne Bits setzen oder lesen und je nach Adresse eben auch den Druckerport, ohne das Dich XP da behindert.
    http://geekhideout.com/iodll.shtml


    Gruß André

Berechtigungen

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

12V Akku bauen