Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

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 !  

> > Hallo André, > > der Vergleichbefehl war/ist schon korrekt geschrieben, dass die 1 in Worten eins wie ein > l ( el ) aussieht liegt am Zeichensatz. > Mit der Sprungmarke hast Du allerdings vollkommen Recht, ich habe nicht cc_SLT sondern cc_NE > im Programm benutzt. > Das Problem bleib allerdings bestehen, im Segment 8 läuft das Programm nicht, Im Segment 3 schon. > Wie ich das Programm in Segment 8 gekriegt habe? > Wie im Buch MSR mit C-Control II beschrieben, Hexcode in ein Integerarray geschrieben. > Low und Highbyte selbstverständlich getauscht und vor dem Programmcode jede Menge Nops. > Deshalb auch die Hohe Speicheradresse von dezimal 2000. > > Gruß Hansi ...und wie geschrieben, in Segment 3 funzt es. > > > > Hallo Hansi, > > > > > <asm> > > > mov R2,#2000 ; Anfangsspeicheradresse im Segment 8 > > > Loop1: mov R4,P1H ; Port einlesen > > > and R4,#0080h ; Bid 7 isolieren > > > shr R4,#7 ; und auf Bid 0 schieben > > > add r4,#30h ; ASCII erzeugen 0 / I > > > EXTS #8,#1 ; Speicherzugriff auf Segment 8 erzwingen > > > movb [R2],RL4 ; und ASCII im Speicher ablegen > > > cmpil r2,#48000 ; Schleifenzähler erhöhen und mit Endwert vergleichen > > > jmpr cc_SLT, Loop1 > > > pop R2 > > > pop R2 > > > rets > > > </asm> > > > > > > Das Problem: > > > Naja, das ausgelesene Integer-Array ( unter C2 ) zeigt keinerlei Veränderung. > > > Wohin werden die Daten bei meinem Programm geschrieben? > > > > Die Daten werden ab Adresse 0x2000 in Segment8 geschrieben, wie Du es in > > der Routine festlegst. > > Allerdings hast Du einen groben Fehler in Deiner Routine: > > <asm> cmpil r2,#48000 ; Schleifenzähler erhöhen und mit Endwert vergleichen > > jmpr cc_SLT, Loop1</asm> > > Der Befehl sollte wohl cmpi1 heißen, also compare and increment GPR by 1. > > Du willst zu Loop1 springen, solange R2 kleiner 48000 ist. > > Dummerweise machst Du einen Vorzeichenbehafteten Vergleich. > > Somit wird 48000 nicht als 48000 gewertet, sondern als -17536. > > Somit wird die Schleife bereits nach dem ersten Durchlauf verlassen. > > Damit das ganze so funzt, wie Du willst, darfst Du nicht auf SLT, sondern mußt auf ULT prüfen. > > > > > > > Ich habe das Programm gerade probeweise in das Segment 3 geladen und siehe da > > > ES FUNKTIONIERT! ( leider nur im Segment 3 ) > > > > Das wundert mich aber ein wenig. > > > > Aber, wie hast Du die Routine in den RAM geladen ? (C2-Code) > > Vielleicht hast du z.B. high- und low-Byte vertauscht, oder die falsche Adresse > > als Einsprungadresse benutzt. > > > > > > Übrigens macht es mittlerweile wenig Sinn, ASM-Routinen im RAM abzulegen. > > Seitdem es sehr einfach geworden ist, die Flashsegmente 1 bis 3 für ASM > > zu nutzen, gibt es nurnoch einen sinnvollen Grund für ASM im RAM: > > Und zwar zum testen von Routinenzur Laufzeit. > > D.h. auf der CC2 läuft ein Testprogramm, welches neue ASM-Routinen entgegenimmt > > und im RAM speichert, ohne daß ein neues Programm geladen wird. > > > > MfG André H. > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB