Forum: Mikrocontroller und Digitale Elektronik M16C28 Key interrupt


von Ralph Stib (Gast)


Lesenswert?

Hallo,

ich habe momentan ein Problem mit dem Renesas Controller M16c28 und
hoffe, dass mir wer weiter helfen kann.

Ich bin gerade dabei einen Key input interrupt zu implementieren. Aber
es funktioniert leider nicht. Ich habe die Port Pins P10_4...P10_7 als
Eingänge deklariert, habe im KUPIC Register die Priorität gesetzt und
eine entsprechende Interrupt Routine habe ich auch geschrieben. Nur
leider löst der Interrupt nicht aus. Am entsprechenden Port wird ein
Wechsel von High auf Low erzeugt.

Wenn ich im KUPIC Register das Interrupt request bit setzte, springt
das Programm direkt in meine Routine, was bedeutet, dass meine Routine
gefunden wird. Nur wird kein Interrupt ausgelöst, wenn ich einen
Wechsel von high auf low erzeuge...

von Daniel W. (danila)


Lesenswert?

Hallo Ralph,

danke für den Tipp mit dem KI Interrupt, hat dann sofort geklappt :)

Kannst du mir vielleicht noch paar Tipps zum I2C Bus geben?
Und zwar wie stelle ich den Bus auf 100kHz ein? Bei dem externen 3,68
MHz Quarz, komme ich mit der Rechnung aus dem Datenblatt auf 76kHz.

Oder muss ich den onChip-Oscillator verwenden und davon die Frequenz
für I2C ableiten?

Danke voraus.

von Viktor Braun (Gast)


Lesenswert?

Hallo Ralph,
habe genau das selbe Problem :(....
Konntest du es schon lösen ?

von Rudi (Gast)


Lesenswert?

>>Hallo Ralph,
>>habe genau das selbe Problem :(....
>>Konntest du es schon lösen ?

wenn er es nach fast 3 Jahren noch nicht gelöst hat, dann schafft er es 
jetzt auch nicht mehr :-)

Beste Grüße

Rudi

von Timo (Gast)


Lesenswert?

Mich würde die LÖsung aber auch mal interessieren, denn bei mir ist 
genau das Selbe...

Ich habe eine key_ISR geschrieben und vom StarterKit den Port, welcher 
auf den Taster geht als Eingang deklariert,. Dort liegt ein High Signal 
an, solange der Taster nicht betätigt wird. Die Priorität ist auch 
gesetzt...
Wenn ich den Taster betätige (PortPin: High --> Low) dann passiert 
nichts.
Wenn ich manuell das IR_kupic auf 1 setze, dann springt er in die 
Routine ...

Ich frage mich einfach was noch fehlt!

Gruß

von Daniel Wiese (Gast)


Lesenswert?

Es ist zwar schon lange her und ich habe auch keine Hardware mehr, um es 
testen zu können, aber ich habe hier noch Code von einem Test...

Bin mir auch nicht sicher was davon zu KI gehört, da bei dem Test auch 
der AD Wandler getestet wurde...
1
int main()
2
{
3
...
4
  /* Port 10 Pins 5,4,3 as Input*/
5
  PD10 = 0xC7;
6
  __disable_interrupt();
7
  /* set the IFSR20 Bit */
8
  IFSR2A |= 0x01;
9
  /* enable the KI interrupt / set the level */
10
  DMA0IC = 0x02;
11
  __enable_interrupt();
12
...
13
  while(1){
14
    /* necessary to access some ports */
15
    PRCR = 0x04;
16
    PACR = 0x02;
17
  ...
18
  }
19
}

von Timo (Gast)


Lesenswert?

Hallo,
weiss leider nicht was mit pacr gemeint ist, finde ich in der m32c 
define liste auch nicht
gruß

von Daniel Wiese (Gast)


Lesenswert?

habe in meiner .typ Datei das hier stehen:

/* Pin assignment control register */
#define PACR 
(0x25d)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.