PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Bascom Software UART und ATmega8



Buzii12
22.10.2008, 14:19
Liebes Doktor Sommer Team O:) ,
ich bin vor kurzen von Pic (Assembler) auf Atmel (Bascom) umgestiegen, nach einigen Tests mit dem Hardware UART wollte ich mit dem Software UART spielen. Habe ein Program geschrieben mit dem ich jede Sekunde "Start" auf die Serielle Schnittstelle schreibe. Dann wollte ich die Empfangsleitung testen indem ich inkey prüfe und eine LED aufleuchten lasse wenn Daten da sind, aber das funktioniert nicht.
Mein Programm sieht so aus.


$regfile = "m8def.dat"
$crystal = 8000000
Baud = 19200

$hwstack = 32
$swstack = 10
$framesize = 40

Config Portd.5 = Output
Config Portd.6 = Output

Open "comc.1:19200,8,N,1" For Output As #1
Open "comc.0:19200,8,N,1" For Input As #2

Led Alias Portd.5

Dim B As Byte
Dim W As Byte

Enable Interrupts
Do
Print #1 , W
W = W + 1

B = Inkey(#2)
If B > 0 Then
Led = 1
End If
Wait 1
Led = 0
Loop

end
Code Tags eingefügt (Dr.Sommer)

Das senden funktioniert ohne Probleme nur ich bekomme die LED nicht zum blinken bringen. Wenn ich inkey mit waitkey austausche klappt es, aber das hilft mir nicht weiter.
Währe nett wenn jemand eine idee hätte was es sein kann.

Grüße Denis

repi64
22.10.2008, 20:47
Hi,
ich denke, das Inkey und ein Soft UART ist eine schlechte Kombination.
Der Soft UART hat ja keinen Buffer. Somit wäre es ein grosser Zuffal, dass die Daten auch exakt anliegen wenn der Programmablauf grad vorbei kommt.
Das geht nur beim Hardware UART.
Wofür enablest du die Interrupts?
Es sollte auch zu Beginn "$Baud = ..." heissen.

Buzii12
23.10.2008, 12:07
Hallo repi64, das enable Interrupt ist noch ein überbleibsel von tests mit dem Hardware UART, du hast recht wenn ich Inkey ständig abfrage funktioniert es.
Danke für den Tip.
Grüße Buzii

Bluesmash
23.10.2008, 12:20
Ich habe mal bei verwendung der Software Uart den RX zusätzlich noch auf einen Interrupt gelegt, somit konnte ich auch mit der software uart die daten interruptgesteuert abholen.

gruss Bluesmash