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 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