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 Harald, > > Warum führst Du am Anfang der Routine "main" zweimal pop aus ?? > Denn dieses zweimalige pop definiert so gesehen schon den C2-Rücksprung. > Deshalb muß dies <u>immer</u> unmittelbar vor dem RETS bzw. in C direkt > am Ende der Funktion stehen ! > > Außerdem kannst Du hier nicht einfach in C definieren, daß irgendeine Routine > bei einem Interrupt ausfegührt wird ! > Dazu mußst Du die Interrupt-Vektoren im OS anpassen. > > Und diese lauten von CAPCOM16 bis 26 so: > <asm> > 0xc0: JMPS 0xc0 > 0xc4: JMPS 0xc4 > 0xc8: JMPS 0xc8 > 0xcc: JMPS 0x1e5e CAPCOM Register 19 (FRQ0/DCF77) > 0xd0: JMPS 0xd0 > 0xd4: JMPS 0xd4 > 0xd8: JMPS 0xd8 > 0xdc: JMPS 0xdc > 0xe0: JMPS 0xe0 > 0xe4: JMPS 0xe4 > 0xe8: JMPS 0x9dbc CAPCOM Register 26 > </asm> > Du siehst, nicht definierte Routinen enden in einer Endlosschleife. > > MfG André H. > > > > Hallo, > > > > hier noch der C-Quellcode: > > > > C-Code--------------------------- > > > > /* impuls.c */ > > > > #include <REG164CH.h> > > > > //Hier die Interruptroutine. Wenn sie nicht auskommentiert ist, geht dar nichts mehr > > > > /*_interrupt (0xF4) void > > timer_stop (void) > > { > > CC16 = 0x0FFF; > > CC17 = 0x0FFF; > > }*/ > > > > void main() > > { > > #pragma asm > > > > pop R1 > > pop R2 > > > > #pragma endasm > > > > int i = 0xFFFF; > > /* Timerregister Initialisieren */ > > /* Reload-Register auf 0 setzen */ > > T7REL = 0x0; > > /* Steuerungsregister für die CapCom-Timer einstellen */ > > T78CON = 0x3; > > //T7M = 0; Timer 7: Timerbetrieb > > //T7I = 0x3; Prescaler für Takt: T=210ms, dTmin=3,2us > > > > /* Interruptsteuerung für Timer 7 */ > > > > T7IC = 0x7F; > > /* T7IE: IRQ enable */ > > /* ILVL = 0xF; Interruptpriorität max. */ > > /* GLVL = 0x3; Gruppenpriorität max. */ > > > > /* Steuerungsregister für die Vergleichsregister einstellen */ > > CCM4 = 0x77; > > /*ACC16 = 0; Compare-Register CC16 zu Timer 7 zuordnen > > ACC17 = 0; Compare-Register CC17 zu Timer 7 zuordnen > > CCMOD16 = 0x7; Set output on each match für CC16 > > CCMOD17 = 0x7; Set output on each match für CC17 */ > > > > /* Werte in Vergleichsregister schreiben */ > > CC16 = 0x8000; /* Compare-Register 16: 50% */ > > CC17 = 0x8000; /* Compare-Register 17: 50% */ > > T7R = 1; /* Timer 7: Start */ > > > > i = 0x8000; > > //while(T7IR != 1) > > while(i > 0) > > { > > i = i - 1; > > CC16 = i; > > CC17 = i; > > } > > T7R = 0; > > } > > > > > > C-Code-Ende------------------ > > > > Problem 1: CC16 bzw. CC17 lassen sich nicht dekrementieren. > > Problem 2: Wenn der Programmteile für die Dekrementierung der Vergleichsregister herausgenommen > > wird und stattdessen die Interruptroutine aktiviert wird, dann rührt sich gar nichts mehr. > > > > Was mache ich da falsch? > > > > Gruß, > > Harald
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB