-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Frage zu Software Uart

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341

    Frage zu Software Uart

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hi,

    ich habe eine Frage zur Software Uart.

    Gibt es da irgendeinen Befehl bei dem unabhängig in welcher sub schleife sich das Programm befindet, festgestellt wird ob gerade daten empfangen wurden und das Programm dann in eine Interrupt schleife springt ?

    Also so wie das bei der Hardware UART mit On Urxc auch funktioniert ?

    mfg Blamaster

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622

    Re: Frage zu Software Uart

    Hallo Blamaster,

    Zitat Zitat von Blamaster
    ...Gibt es da irgendeinen Befehl bei dem unabhängig in welcher sub schleife sich das Programm befindet, festgestellt wird ob gerade daten empfangen wurden und das Programm dann in eine Interrupt schleife springt ? ...
    von Bascom habe ich keine Ahnung, da ich nur Assembler und C verwende. Ich wage trotzdem eine Antwort: Wenn die Software-UART-Implementierung von Bascom etwa der Atmel-Note AVR305 ( http://www.atmel.com/dyn/resources/p...ts/doc0952.pdf ) entspricht, wird das gar nicht möglich sein, da die UART-Zeitabläufe durch Warteschleifen bestimmt sind. Falls doch ein Timer (mit Timer-Interrupt) benutzt würde, wäre das anders! Sieh mal in der entsprechenden Bascom-Dokumentation nach.

    Normalerweise ist es nicht sinnvoll, bei Nutzung eines Software-UARTs (ohne Timer-Interrupts) andere längere Funktionen aufzurufen -- allerhöchstens z.B. sehr kurze ISRs; sonst kann die Software-UART-Routine nicht richtig funktionieren.

    Wie könnte man es anders machen? Dazu müsste die Software UART-Routine mindest einen Timer-Interrupt nutzen. Dann ließe sich dort entscheiden, was zu tun ist, wenn ein Zeichen komplett empfangen wurde. Man könnte das Zeichen dann (falls das sehr schnell geht) innerhalb der ISR weiterverarbeiten oder einen "Software-Interrupt" (über einen der externen Interrupt-Pins per Software einen Interrupt auslösen!) auslösen. Aber da sind wir schon wieder bei Interrupts, die ja meist nicht nicht zu einem Software-UART gehören.

    Bist Du Dir sicher, dass bei Deinem Bascom Program "sub Schleifen" (wie Du sie nennst) überhaupt parallel zur Software-UART-Routine laufen können?

    Gruß

    Fred

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Nein parallel zueinander können sie wohl nicht laufen.

    Was ich erreichen möchte ist ganz einfach, das sobald der µC etwas über die Software UART empfängt den restlichen Ablauf abbricht und erstmal die empfangenen Daten behandelt.

    Im Prinzip ist also die Frage mit welchem befehl Bascom signalisiert, dass gerade etwas über die UART reingekommen ist.

    mfg Blamaster

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Habe schon mal schaltungen gesehen bei denen der Soft- RX Pin gleichzeitig mit einem weiteren Interrupt Pin verbunden ist, damit bei einem eingehenden Zeichen in die ISR gesprungen werden kann.
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Kann dazu jemand genauere Infos geben ?

    Am besten mit Beispiel ?

    mfg Blamaster

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hallo Blamaster,

    wenn Du zusätzlich einen Interrupt-Pin verwenden möchtest, warum nimmst Du dann nicht gleich einen AVR mit Hardware-UART(s) und UART-Interrupt?

    Wenn ich mir diese Bascom-Beispiele ansehe ( http://books.google.com/books?id=4K6...um=8&ct=result ), ist der Bascom Code entweder mit der Abarbeitung des Software-UART-Codes beschäftigt, oder er macht etwas anderes. Wie schon oben gesagt, beides simultan geht nicht, es sei denn, Du verwendest ein RTOS o.ä., z.B. Task-Switching mit Hilfe eines Timer-Interrupts.

    Gruß

    Fred

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Den AVR kann ich leider nicht mehr wechseln.

    Ich habe jetzt den code nochmal abgewandelt, so dass ich in einer Do Loop abfragen könnte, ob neue Daten über die UART kommen.

    Mit welchem Befehlt kann ich das denn abfragen ?

    mfg Blamaster

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hallo,

    Zitat Zitat von Blamaster
    ...Mit welchem Befehlt kann ich das denn abfragen ? ...
    in dem Link (S. 116 des Buchs) in meinem obigen Beitrag wird der Port einfach geöffnet und dann nachgesehen ob die Funktion
    Code:
    Inkey(#PORTNUMMER)
    ungleich Null ist (was wohl bedeutet, dass ein Zeichen eingetroffen ist).
    Wie gesagt, ich spreche nur C und Assembler.

    Gruß

    Fred

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Thx so funkt es

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Hi,

    wie müsste denn der Code aussehen, wenn ich einfach in einer Do Loop Abfragen möchte ob was übern Com gekommen ist und das ganze dann übern nen lcd ausgeben möchte ?

    Ich habe es jetzt so probiert, aber es funkt nicht wirklich ...

    Code:
    Do
    
    Open "comb.6:9600,8,n,1" For Input As #2
    Input #2 , Test
    Cls
    Locate 1 , 1
    Lcd Test
    Close #2
    
    Loop
    Test ist als Byte deklariert.

    Kann mir da jemand helfen ?

    mfg Blamaster

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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