PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Raspberry UART-Abfrage



#fritz#
09.04.2015, 22:05
Folgende Situation:
ein ATMEGA empängt Signale einer IR-Fernbedienung und sendet
diese an den RPI per UART weiter.
RPI Programmierung in Python

Bisher habe ich am RPI eine UART-Abfrage im Sekundentakt durchgeführt.
- Funktioniert einwandfrei -

Ich wollte dann die sekündlichen Sprünge zur UART-Abfrage einsparen. Jetzt sendet
der Atmega ein Signal an den RPI (GPIO) wenn er per UART sendet.
Der RPI fragt daraufhin den UART ab und sendet ok zurück --> Atmega schaltet Signal ab.
Die Programmsprünge im RPI funktionieren, aber Daten werden nicht empfangen.
Ich habe alle möglichen Varianten probiert (Signal vor dem Senden, nach dem Senden
mit unterschiedlichen Pausen, UART Timout verändert ).
Irgendwas scheint nicht zu passen.

Hat jemand eine Idee?

Hier das Programm (die Einrückungen werden hier nicht dargestellt):

#!/usr/bin/python
# -*- config: utf-8 -*-

import serial
import time
import sys


def uart_empfang():

ser = serial.Serial()
ser.port = "/dev/ttyAMA0"
ser.baudrate = 9600
ser.timeout = 3
ser.open()
time.sleep (0.1)
if ser.isOpen():
s = ser.read(6)
#s=ser.read(ser.inWaiting())
#s = ser.readline()
ser.flushInput()
ser.flushOutput()

print "--" + s +"--"
time.sleep(0.1)
ser.write ("ok" + chr(13))
ser.close()




return s

peterfido
10.04.2015, 17:48
Unter C lüppt es bei mir eins a. (Python habe ich noch nie genutzt) Welches Protokoll nutzt Du? Bei mir ackert der Atmega dem Raspi mundgerecht pro Befehl ein Byte zu.

Edit:
Die Schnittstelle selbst ist frei? Standardmäßig ist da eine Konsole drauf.

#fritz#
11.04.2015, 19:23
Also sollte ich mal versuchen, die Daten Byte für Byte zusenden. Vor jedem Byte ein Impuls vom Atmega.
Bisher habe ich einen kompletten String (bis zu 10 Zeichen) gesendet.

Ich beschäftige mich erst seit ein par Wochen mit dem RPI. Das die empfangenen UART-Daten in einer Datei abgelegt werden, ist neu für mich.
Ich dachte die liegen dort solange bis sie "abgeholt" werden.

Danke

peterfido
11.04.2015, 20:01
Strings gehen auch. Wichtig ist halt, dass ein Programm an der Schnittstelle lauscht. Und halt, dass die standardmäßige Beelegung der Schnittstelle aufgehoben wird. Details dazu stehen in meinem Internetradio-Thema.