Kein A auf dem Bus
Verfasst: So 13. Sep 2009, 04:15
Hallo HiveFans,
Ich versuche gerade zu verstehen wie die Kommunikation über den Bus läuft. Habe mir da ein kleines Programm geschrieben(zusammen kopiert). Es soll einfach ein A auf den Bus legen.
EIN A????
PSSSST... Genau!
Das Programm startet HBEAT und bus_putchar, leicht modifiziert. Die LED blinkt, aber am Bus liegt nichts an. Ich lade das Programm mit F10 direkt in den Propeller. Wird bus_putchar irgendwie terminiert?
Grüße,
Benjamin
Ich versuche gerade zu verstehen wie die Kommunikation über den Bus läuft. Habe mir da ein kleines Programm geschrieben(zusammen kopiert). Es soll einfach ein A auf den Bus legen.
EIN A????

Das Programm startet HBEAT und bus_putchar, leicht modifiziert. Die LED blinkt, aber am Bus liegt nichts an. Ich lade das Programm mit F10 direkt in den Propeller. Wird bus_putchar irgendwie terminiert?
Grüße,
Benjamin
Code: Alles auswählen
OBJ
ios: "ios"
CON
_CLKMODE = XTAL1 + PLL16X
_XINFREQ = 5_000_000
#24, HBEAT 'LED
BUSCLK 'Bustakt
BUS_WR '/wr - Schreibsignal
BUS_HS '/hs - Quittungssignal
DB_IN = %00001001_00000000_00000000_00000000
DB_OUT = %00001001_00000000_00000000_11111111
CNT_HBEAT = 5_000_0000
VAR
long stack[24]
PUB main
{{Hauptprogramm fuer Bus Test}}
init
PUB init
{{Initialisierung}}
cognew(led_hbeat, @stack)
cognew(bus_putchar("A"), @stack) ' oder (str)
PUB led_hbeat
{{led_hbeat - Herzschlag fuer Front-LED}}
dira := DB_IN
repeat
!outa[HBEAT]
waitcnt(CNT_HBEAT + cnt)
PUB bus_putchar(zeichen)
{{Ein Byte über Bus ausgeben}}
dira[BUSCLK]~~ ' Simuliert busclk
outa[BUSCLK] := 1
waitpeq(%00000010_00000000_00000000_00000000,%00000010_00000000_00000000_00000000,0)
dira := DB_OUT
outa[7..0] := zeichen ' Daten werden auf den Bus gelegt. A entspricht 01000001.
outa[BUS_HS] := 0
' Hier sollte das Programm doch warten auf busclk = 0
' Es müsste also noch A auf am Bus liegen.
waitpeq(%00000000_00000000_00000000_00000000,%00000010_00000000_00000000_00000000,0)
outa[BUS_HS] := 1
dira := DB_IN
DAT
str byte "A", 0