PC -> RS232 -> µC

  • So ich noch mal.


    Zwar wollt ich eigentlich auf Bluetooth hinaus, scheitere aber schon an einer RS232 Verbindung.


    Ich benutze einen USB-> serial Converter, den ich nach einigem Ärger endlich zum laufen gebracht hab, an meinem Win XP Pc.
    Empfangen klappt auch wunderbar. Nur scheint das senden ein paar Probleme zu machen.


    Ich hab eigentlich mal den einfachsten Code den es zum Empfangen in Bascom gibt benutzt und hab inzwischen 4 verschiedene Terminal Programme ausprobiert.


    Das "Hallo" wird immer empfangen.
    Aber schon das "gehts noch" kommt nie. Egal ob ich im Terminalprogramm ne 1 ne 0 oder sonst was sende.


    Hat ja jemand vlt ne Idee.


    Hier noch der Quelle-Code von meinem Bascom-Programm:



    Viele Grüße
    Philipp

  • Nabend, ich schmeiß mal eben eine Idee in den Raum:
    Ich habe von Bascom keine Ahnung, aber ich kenne Switch Case abfragen nur mit Integer-Werte (oder chars) diese werden normal mit '0' und '1' deklariert ich weiß nicht ob Bascom hier nen unterschied macht oder ob es vllt sogar mit Strings oder sowas funktioniert. Um nicht völligen Unsinn zu posten habe ich noch etwas hier aus dem Forum gefunden

    Code
    Select Case I
    Case 0 : Gosub Allesaus
    Case 1 : Gosub Sl
    Case 2 : Gosub Abl
    End Select


    Das sieht für mich anders aus, aber vllt klappt ja auch deine Version..

  • Funktioniert mit Strings. Habs grad noch mal getestet.


    Er gibt mir ja nicht mehr "gehts noch" aus. Das bedeutet, er kommt nicht mal zur case Abfrage.
    Der Input Befehl wartet noch auf die "enter" Bestätigung durch CR.


    Ich verzweifel hier noch...


    Danke für die Hilfe schon mal.

  • Letzte Idee: Ich hatte es bei mir schon einmal umgestellt gehabt das beim Enter dücken der CR Befehl nicht richtig war. Versuch doch mal den CR explizit zu schicken. Dazu die "ALT" Taste Drücken und dann auf dem Nummernblock den Ascii-Code 13 eintippen, dann die ALT-Taste loslassen.
    Bein schreiben kam mir noch eine Idee. Ich lese "Config Portd.5 = Output" ist das die TX-Leitung am µC? Wäre es vllt sinnvoll die RX-Leitung auch auf Input zu setzen ?
    So ich bin nun schlafen, meine nicht Bascom spezifischen Tipps wollte ich noch eben loswerden.

  • wieso verwendest du nicht eins dieser befehle statt Input!?


    Code
    Waitkey()  = Waitkey will until a character is received in the serial buffer.
     
    Ischarwaiting()  = Isrcharwaiting returns 1 when a character is waiting in the hardware UART buffer.
     
    Inkey()  = Inkey returns the ASCII value of the first character in the serial input buffer.


    oder sendest einfach mal etwas damit Input die pause beendet und weiter spring...

  • Ich benutze zum Empfangen von Daten einen anderen, viel flexibleren Code, den ich irgendwo im internet gefunden habe.
    Ich hab dein Programm mal so umgeschrieben.
    Der vorteil ist, dass du, egal in welchem Schritt des Programms du bist, etwas empfangen kannst und das dann abfragen kannst, wann du willst.
    Der nachteil ist, dass das was vom PC gesendet wird immer eine bestimmte länge haben muss.


    benkly: Bei mir hat der Compiler nichts gesagt.


  • Hi Leute.


    Ich noch mal. So eine späte Rückmeldung, da ich die letzte Woche noch mal ziemlich Stress hatte.
    Jedenfalls hab ich jetzt mehr oder weniger den Fehler gefunden.


    Getestet wurde das Ganze immer auf einem Pollin-Board mit nem Atmega88.
    Weil mir gar nichts mehr einfiel, hab ich jetzt mal nen Atmega32 eingesetzt. Funktionierte auf Anhieb.


    Also entweder hat der Atmega88 nen Knacks oder ich hab irgendwelche Jumper oder sonst was am Pollin.Boear nicht richtig gesetzt.


    Wenn ich mal wieder bei Reichelt bestelle, besorg ich mi rnen neuen Atmega88 und teste dann noch mal.


    Danke euch auf jedenfall für eure Hilfe.


    Viele Grüße
    Philipp