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 !  

> Vielen Dank für eure Hilfe. Hatte leider noch keine Zeit mir die disassemblierten Codes anzuschauen, werde das aber sicher > bald tun. Ich möchte prinzipiell auch nicht den vorhandenen Bootloader modifizieren, sondern meinen > eigenen schreiben um an die Grundlagen der Mikrocontrollerprogrammierung zu gelangen. Die Einteilung > in Primary und Secondary Loop ist somit sicherlich nur ein Aspekt den man beachten muss, wenn man > den genauen Ablauf verstehen will. Dass die eigentliche boot.hex dann mit einmal gesendet wird ist mir klar. > Es geht mir hier auch mehr um theoretisches Verständnis der Abläufe. Dies denke ich habe ich mir auch > mittlerweile schon angeeignet (aber Danke für den Hinweis mit dem SRAM ;-)). Ich habe meinen Bootloader > daher in mehrere Files unterteilt um die Abläufe klarer darstellen zu können. Ich kann auch schon > die Primary und Secondary Loop einwandfrei übertragen. Auch mein eigentliches Programm wird dann > scheinbar ohne Fehler geladen, jedoch nicht ausgeführt. Ich habe zur Kontrolle des Ablaufs an verschiedenen > Stellen Ausgaben auf eine 8-LED-Leiste an Port P1L eingefügt. Diese zeigen mir den korrekten Ablauf, > nur das nach dem Laden des eigentlichen Programms nichts passiert. Ich habe auch noch keine Funktion > zum Laden von Hex-Files eingefügt sondern arbeite erstmal nur mit Binary-Files. Hier mal mein > bisheriger Code: > _____________________________________________________________________________________________ > Primary Loop > _____________________________________________________________________________________________ > <asm> > ;Code fuer LED > mov P1L, #04 > extr #1 > mov DP1L, FFh > ;eigentlicher Beginn > mov R0, #FA60h ;enhaellt Adresse des > ;naechsten Bytes > W0: > jnb S0RIR, W0 ;warten, bis ein Byte > ;empfangen wurde > movb [R0], S0RBUF ;Byte speichern > bclr S0RIR ;Receive-Flag zuruecksetzen > cmpi1 R0, #FAD3h ;vergleiche ob Ende > ;erreicht+incrementiere R0 > jmpr cc_NE, W0 ;Springe zu W0 wenn > ;R0!=FAD3h > nop ;"Auffuellen" der 32 Byte > </asm> > _____________________________________________________________________________________________ > Secondary Loop: > _____________________________________________________________________________________________ > <asm>; (0xFA60) > ;LEDs > mov P1L, #33 > extr #1 > mov DP1L, 0FFh > nop > > ; --- Bus-Konfiguration initialisieren ------------------------------------------ > mov SYSCON, #7800h > nop > mov SYSCON, #7800h > nop > ;Kontroll-Led > mov P1L, #AA > ; --- DPPx initialisieren ------------------------------------------------------- > mov DPP0, #0 > mov DPP1, #1 > mov DPP2, #2 > mov DPP3, #3 > > ; --- ADDRSEL1 initialisieren --------------------------------------------------- > mov ADDRSEL1, #1008h > ; --- set up WR# as an output ----------------------------------------------- > bset P3.13 ; set WR# > bset DP3.13 ; make WR# an output > > ; --- set up serial port ---------------------------------------------------- > bset DP3.10 > mov S0CON, #8011h ; enable, 8N1, asynchron > mov S0BG, #01h ; 19200Baud > mov S0TIC, #0 > mov S0RIC, #0 > mov S0EIC, #0 > > > ; --- Ende der Systeminitialisierung -------------------------------------------- > DISWDT ;disable watchdog > EINIT ;Ende der Initialisierung > ;Kontroll-LED > mov P1L, #BB > > > ; --- Code an Adresse 0 laden --- > mov R0, #0 > mov P1L, #04 ;Kontroll-LED > W0: > jnb S0RIR, W0 ;Auf Zeichen warten > mov P1L, #08 ;Kontroll-LED > movb [R0], S0RBUF ;In Speicher schreiben > bclr S0RIR > mov P1L, #02 ;Kontroll-LED > cmpi1 R0, #0Ch ;12 Byte lesen > jmpr cc_NE, W0 > mov P1L, #01 ;Kontroll-LED > ;0x0D 0xFF ; ENDLOSSCHLEIFE!!! - zum Testen ob > ;Secondary Loop vollständig durchlaufen wurde > nop > SRST ;Software-Reset > </asm> > _____________________________________________________________________________________________ > Das Hauptprogramm, hier zum Test nur ein kurzes Programm das alle LEDs an P1L leuchten lässt. > _____________________________________________________________________________________________ > <asm> > mov P1L,#06Ch > extr #1 > mov DP1L,#0FFh > endl: jmp endl > </asm> > > Wie gesagt, mit Hilfe der einzelnen LED beschaltungen habe ich mich dann langsam soweit vorangetastet > bis der Code bis zum Ende der Secondary Loop lief. Das eigentliche Hauptprogramm sollte sich nun > an Adresse 0 befinden und eigentlich nach dem Software-Reset in der Secondary Loop abgearbeitet werden. > Es passiert jedoch nichts, außer, dass offensichtlich schon ein Reset ausgeführt wird, da auch die > letze von mir ausgegebene Belegung an P1L nicht mehr aktiv ist. Dies lässt darauf schließen, dass > ein Reset durchgeführt wurde, da beim Reset alle Ports auf Eingang gesetzt werden und somit keine > der LEDs mehr leuchten kann. > > Vielen Dank nochmal für eure Hilfe!!! > > Gruß > > Thomas > > PS: Habe auch grad bei einem kurzen Blick auf den disassemblierten Code gesehn, dass dort andere > Einstellungen für beispielsweise das SYSCON SFR gemacht wurden. Werde mir das bei nächster Gelegen- > heit mal genauer anschauen... Hoffe ich komme heute noch dazu. Vielleicht sieht aber auch jemand > von euch meinen Fehler. > Wie könnte ich z.B. überprüfen, dass mein Code auch tatsächlich an Adresse 0 im Segment 0 steht? >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB