www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik C167CS: Kein Pin - Ausgangssignal am GPT1 P3.3

Autor: Mathias Quetschlich (paolo_pinkel)
Datum: 18.12.2007 05:38

Hallo liebe Experten,

fuer mein Projekt - einer Drehzahlregelung eines Reihenschluss DC-Motors
- expermentiere ich gerade mit dem C167CS-LM auf einem Phytec Evalboard
KitCon-167.

Zum Ueben wollte ich das Hands-On Training von Infineon durchgehen.
Dafuer habe ich DAvE einen Code fuer den GPT1 generieren lassen (Eine
Schande - ich weiss, aber als Einsteiger...)

Das Evalboard ist mit zwei mal 256KB RAM (an CS1 und CS2) sowie zwei mal
1MB Flash (an CS0 und CS3) bestueckt.

Die Startdatei Start167.A66 habe ich von DAvE erstellen lassen und
folgende Register angepasst:

BUSCON0 = 0x04AF
BUSCON1 = 0x04AF
ADDRSEL1 = 0x0006

Den Code habe ich  angehaengt, interessant sind main.c und gpt1.c. Ich
kompiliere und debugge mit Keil uVision3.

Die Einstellungen vom Target sind die Folgenden:
- 5Mhz Oszi
- ROM 0x0 - 0x4000
- RAM 0x40000 - 0x44000
- Monitor: Phytec KC167CR an COM1 bei 9600 Baud (mehr geht natuerlich
auch)
- 8H-0BH, 0ACH-0AFH fuer Monitor reserviert

Der Timer wird in der Datei gpt1.C initialisiert und arbeitet
folgendermassen:

- T2/T4 als Quellen fuer T3 (je nach T3 Toggle Latch)
- T3 als Timer mit Alternate Output P3.3

Wenn ich ein Oszilloskop an P3.3 (Pin 106 am X3 vom kitCON) anschliesse
und debugge rauscht das Signal nur ein Bisschen, aber von Pulsen ist
weit und breit nichts zu sehen.

Auch wundert mich, dass wenn ich mir die Timer im Debug Modus von
uVision anzeigen lasse sind alle Register und Timer nach einem Stop auf
"0".
Selbst wenn Sie die dann dort von Hand einstelle und das Toggle Latch
staendig invertiert wird, sowie der Ausgang gesetzt ist (T3OE = 1, DP3.3
= 1) tut sich nichts.


Hier meine main.c:
#include "MAIN.H"

void MAIN_vInit(void)
{
  GPT1_vInit();
  PSW_IEN = 1;
}

void main(void)
{
  MAIN_vInit();
  while(1) {};     
}

und meine GPT1-Initialisierung gpt1.c:
#include "MAIN.H"

void GPT1_vInit(void)
{
  T3CON          =  0x0201;      // load timer 3 control register
  T3             =  0x0000;      // load timer 3 register
  
  T2CON          =  0x0025;      // load timer 2 control register
  T2             =  0xC000;      // load timer 2 register

  T4CON          =  0x0026;      // load timer 4 control register
  T4             =  0x4000;      // load timer 4 register

  P3   = (P3   & ~(uword)0x0008) | 0x0008;    //set data register
  DP3  = (DP3  & ~(uword)0x0008) | 0x0008;    //set direction register

  T3CON_T3R      =  1;           // timer 3 run bit is set

}

Fuer Anregungen, Tips, Kritiken bin ich sehr dankbar. Langsam weiss
alleine nicht mehr weiter.

LG Maze
Autor: Mathias Quetschlich (paolo_pinkel)
Datum: 18.12.2007 05:39
Dateianhang: Copy_of_START167.A66 (33,1 KB, 85 Downloads)

hier ist meine Startup-Datei,
insgesamt sind folgende Dateien eingebunden:

start167.a66
main.c
 main.h
 intrins.h
 gpt1.h
gpt1.c
Autor: Max Murks (Gast)
Datum: 18.12.2007 09:55

Läuft Dein Programm richtig hoch?
Toggle zuerst einen beliebigen Port. Kontrolliere diesen mit dem Oszi,
oder besser gebe etwas über RS232 aus.

> ROM 0x0 - 0x4000
bist Du dir da sicher?
Autor: Mathias Quetschlich (paolo_pinkel)
Datum: 18.12.2007 12:10

Hi Max!

Zum Hochlauf:
Ich befürchte auch, dass das Programm nicht richtig initialisiert und
werde das mit der Seriellen Schnittstelle oder nem getoggelten Pin
prüfen, so bald ich wieder im Lab bin. Aber warum das so ist ist mir
weiterhin leider ein Rätsel.

Zum Speichermodell:
So wie ich das verstanden habe kann ich mir aussuchen wo ich meine
Adresse von RAM und Flash hinlege und lege das mit den ADDRESELx
Registern fest. Oder sehe ich das falsch? Auf jeden Fall läuft ein
simples LED blinky mit dieser Konfiguration.

so far...
Autor: Max Murks (Gast)
Datum: 18.12.2007 14:06

Autor: Mathias Quetschlich (paolo_pinkel)
Datum: 18.12.2007 21:46

Hallo Max,

den thread hatte ich mir schon mal durchgelesen. Ich hatte zunächst auch
das Problem "Connection to Target System lost", aber mit den
(hoffentlich) richtigen Einstellungen für Monitor, Target und
Initialisierungsregistern (auch auf die Waitstates achten!) habe ich das
in Griff bekommen.

Leider scheinen meine Timer nicht initialisiert zu werden (alle Register
sind auf Restet-Wert) - daher kein Ausgang....aber leider auch nicht
wenn ich ToggleBit, T3OE und DP3.3 manuell setze.

Hat keiner sonst einen Schimmer? Wäre echt super!
Autor: David (Gast)
Datum: 18.12.2007 23:12

Hatte damals ebenfalls probleme mit den timern im debbuging modus (u3V).
Woran es lag habe ich leider nie genau kappiert, aber wenn ich nicht im
debbuging modus war, und vom flash bootete hatte ich damit nie
probleme...

habe mit einer älteren Dave version gearbeitet, ist mir nicht ganz klar
wofür PSW_IEN steht (Interrupt enable?, PWM-Generator?) Aber wenn du
einem pin ne spezielle funktion gibst, kanst du diesen normalerweise im
debbugingmodus nicht mehr von hand verstellen..., tippte daher auf einen
initialisierungsfehler (wobei was ich hier sehe, soweit passen sollte)
Autor: Mathias Quetschlich (paolo_pinkel)
Datum: 19.12.2007 03:30

Hi David.

Flash:
Ich habs auch schon mal als H86 geflashed - ging leider auch nicht. Aber
ich probiere es nochmal.

PSW:
Steht für Prozessor-Status Wort. Eigentlich sind darin die Interrupt/PEC
Level des derzeitig ausgeführten Programmes drinn. PSW_IEN spiel hier
eigentlich keine Rolle. Das Bit sperrt oder gibt global alle Interrupts
frei (außer NMI = Non Maskerable Interrupts)

Debugg-Modus:
Das könnte sein, allerdings erlaubt mir uVison, das setzen von Bits im
Debug-Modus (Peripherals). Weiss nicht genau was das bewirkt - nen
Pulsausgang jedoch leider nicht...

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel





Hinweis: der Originalbeitrag ist mehr als 6 Monate alt.

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net