PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UART Interrupts Input geht nicht



lanic
15.03.2006, 16:50
Hallo,

ich versuch seit einiger zeit über die UART einen daten string zu empfangen. 20 byte lang.

ohne interupts geht das alles jetzt möchte ich aber das er diese aktion im hintergrung macht und somit wollte ich das mit Interupts machen.

mit diesem code geht es nicht. er bleibt aus ergend welchen gründen in der rotine

in diesem programm soll er mir einfach den eingegebenen string auf dem LCD anzeigen.



$regfile = "m128def.dat"
$crystal = 7372800
$baud = 9600
$baud1 = 9600

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Config Lcdpin = Pin , Db4 = Porte.5 , Db5 = Porte.4 , Db6 = Porte.3 , Db7 = Porte.2 , E = Porte.7 , Rs = Porte.6
Config Lcd = 20 * 4


Open "com1:" For Binary As #1
Open "com2:" For Binary As #2

Dim S As String * 20

On Urxc Onrxd
Enable Urxc
Enable Interrupts

Do

Cls
Lcd S
Wait 2

Loop

Onrxd:

Input #1 , S



Return

Close #1
Close #2


mit diesem klapt es weil ich alles in der rotine abarbeite und anzeigen lasse



$regfile = "m128def.dat"
$crystal = 7372800
$baud = 9600
$baud1 = 9600

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Config Lcdpin = Pin , Db4 = Porte.5 , Db5 = Porte.4 , Db6 = Porte.3 , Db7 = Porte.2 , E = Porte.7 , Rs = Porte.6
Config Lcd = 20 * 4


Open "com1:" For Binary As #1
Open "com2:" For Binary As #2

Dim S As String * 20

On Urxc Onrxd
Enable Urxc
Enable Interrupts

Do

Loop

Onrxd:

Input #1 , S

Cls
Lcd S
Wait 2


Return

Close #1
Close #2


nun meine frage warum geht es nicht mit dem input befehl?

gibt es nur die möklichkeuit das über i = udr zumachen und jedes byte einzeln auszulesen denn damit geht das zumindest kann ich das erste byte auslesen

komm aber nicht weiter da ich nicht weis wie ich die einzelnen bytes zusammenfügen kann.

kann mir jemand helfen?

gruß Nico