- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Input , Wait , Print... Warum?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348

    Input , Wait , Print... Warum?

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,

    ich hab mal eine Verständnissfrage. Ich will Daten über den UART empfangen und direkt danach senden. Warum funtioniert es nur, wenn ich zwischen den Befehl Input und Print ein Wait setze?

    Liegt das daran, dass ich einen Buffer fürs Empfangen und Senden verwende? Wenn ich nur eins bis zwei Zeichen sende geht es auch ohne Wait. Werden es aber mehrere Zeichen in Folge, muss ein Wait dazwischen stehen. Also irgendwas muss dann länger dauern!?

    Gruß

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Hi,

    ich denke der Grund ist ganz einfach
    Zum Senden und Empfangen wird das selbe Register verwendet. Wenn du nun längere Zeichenketten sendest, dauert es länger diese komplett auszulesen und wieder nach und nach in das Register zu laden und zu senden.
    Von daher musst du diese Zeit überbrücken.
    In C macht man dies z.B. so:

    while (!( USARTC0.STATUS & USART_DREIF_bm));

    Das Programm bleibt solange an der Stelle stehen bis das Datenregister leer ist.
    Bascom hat diese Funktion (soweit ich weiß) in einem Input und einem Print nicht mit drin. Von daher musst du die Zeit "händlich" überbrücken lassen, sprich ein "Wait" benutzen.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348
    Also ich weiß das man auf die Register der UART zugreifen kann. Welches genau müsste ich denn da abfragen um zu erfahren
    wann die UART mit dem Empfangen bzw. Umschichten eines Zeichens fertig ist?

    Woher weiß ich wie lange ich das Wait machen muss?

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Also bei mir funktioniert das:
    Code:
    Dim X As Byte
    
    Do
    
    Input X
    Print X
    
    Loop
    
    End
    Oder hast du etwas anderes gemeint?
    Grüße
    Thomas

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von demmy Beitrag anzeigen
    Also ich weiß das man auf die Register der UART zugreifen kann. Welches genau müsste ich denn da abfragen um zu erfahren
    wann die UART mit dem Empfangen bzw. Umschichten eines Zeichens fertig ist?

    Woher weiß ich wie lange ich das Wait machen muss?
    Du kannst das Bit welches das Ende einer Übertragung signalisiert abfragen.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348
    Das Ende einer Übertragung? Das heißt es wird nach jedem Eingang eines Zeichens gesetzt? Welches Bit wäre das?

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Das Bit müsste "USART Receive Complete Interrupt Flag" heißen und es wird gesetzt sobald ungelesene Daten im Buffer stehen und wird gelöscht sobald der Buffer leer ist.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348
    Ahh ok! Vielen Dank!!!

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348
    Hi,
    also ich hab jetzt versucht das Bit abzurufen. Wenn UCSRA.RXC = 0 dann soll erst die Antwort gesendet werden. Das funktioniert aber leider auch nicht. Will ich die Zahl 2 senden bekomme ich wieder als Empfang 255. Jetzt versteh ichs gar net mehr? weil der Empfang muss jetzt ja definitiv beendet sein oder!?
    Hat das evtl. etwas damit zu tun das ich die Daten per rs485 übertrage?

  10. #10
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Hi,

    Wenn du einen Fehler im RS485 hast kann dies der Fehler sein. Oder hast du UART-RS485 Konverter und die sind nicht für deine Baudrate ausgelegt? Welche Baudrate, Controller und Takt verwendest du den? Und wie sieht der ganze Aufbau aus?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Warum funktioniert diese Print nicht?!
    Von TheTeichi im Forum Elektronik
    Antworten: 111
    Letzter Beitrag: 03.12.2011, 11:28
  2. Bascom Gegenteil von PRINT = INPUT?
    Von Neokortex im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 2
    Letzter Beitrag: 26.05.2009, 11:43
  3. wait x in simulation?
    Von dremler im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 01.01.2008, 16:21
  4. Wait in C
    Von servusssss im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 06.03.2006, 21:02
  5. Input & Print
    Von MAxK im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 11.08.2005, 20:13

Berechtigungen

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

LiFePO4 Speicher Test