Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Sorry, war noch nicht fertig, unten geht es weiter!!!! > > Hi, > > > > folgende Situation: ich nutze eine externe Porterweiterung auf Schieberegister Basis. Dazu habe ich Funktionen geschrieben, die Ports einlesen usw. Da ich meine CC2 für unterschiedliche Dinge nutzen werde, dachte ich unterschiedliche Module und threads zu verwenden. Damit diese die gleichen Ein- und Augaberoutinen für die externe Schaltung nutzen können, ohnen durcheinander arbeiten zu können, wollte ich meine Routinen entsprechend mit captuire und release versehen. Dabei habe ich folgendes Problem: > > > > 1.: Wenn ich in einer Funktion zum debuggen über ein Terminal verwende wie: > > > > function print (string s,int ret) { > > capture; > > hwcom.send(s, str.length(s)); > > if ret>0 hwcom.put(10); > > if ret>0 hwcom.put(13); > > sleep 50; > > release;} > > > > bleibt die CC2 hängen, d.h. das Programm wird nicht weiter ausgeführt. > > LIEGT DAS GGF DARAN, DASS DIE HWCOM ROUTINEN AUCH CAPTURE VERWENDEN ??? > Dazu fehlt mir irgendwie die logische Erklärung. > > 2.: Wenn ich dann zur Steuerung der Schaltung die folgenden zwei Routinen einsetze: > > function SetExtPort(byte Modul, byte Port, byte Value){ > capture; > if Modul<16 { > ShiftDataByte (16*Modul+Port+Value*8); > ports.set(Shift_WD,0); > ports.set(Shift_WD,1);} > else {ports.set(Port,Value);} > release;} > > function init() { > byte Modul,Port; > capture; > // Ports der Unit initialisieren > ports.set(Shift_Clock,0); > ports.set(Shift_WD,1); > // alle Ausgänge ausschalten > for Modul=0 ... 5 { > for Port=0 ... 7 { > SetExtPort(Modul,Port,0);}} > release;} > > bleibt das Programm ebenfalls stehen. Nur wenn ich in beiden Routinen die capture und release Anweisungen entferne läuft alles reibungslos. Das ist natürlich nicht in meinem Sinne, denn dann schließe ich einen Zugriff aus unterschiedlichen thread ja nicht mehr aus. Gem. Handbuch soll man ja für Funktionen auch diese Form der Befehle verwenden. Die Funktionen aus ports sind mit inline definiert und haben zumindest keine erkennbaren caputre oder release Befehle. > HAT EINER EINE BEGRÜNDUNG UND GGF EINEN TIP FÜR MICH? > > Danke für jede Hilfe!!!!! > Klaus > >