Forum: Mikrocontroller und Digitale Elektronik STM8S - Externer Interrupt an PA3


von Niine (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit dem externen Interrupt an PA3 des STM8S und 
weiss absolut nicht warum es nicht geht. An PD4 zum Beispiel 
funktioniert es. Aber bei PA3 springt er einfach nicht in die Routine.

Das ist mein Code dazu:
1
//
2
//  Process the interrupt generated by the pressing of the button on PA3.
3
//
4
#pragma vector = 5
5
__interrupt void EXTI_PORTA_IRQHandler(void)
6
{
7
  PC_ODR_ODR3 = !PC_ODR_ODR3;
8
}

und die Registerkonfiguration:
1
  asm("SIM");
2
  PA_ODR = 0;             //  All pins are turned off.
3
  PA_DDR_DDR3 = 0;        //  PA3 is input.
4
  PA_CR1_C13 = 0;         //  PA3 is pull high
5
  EXTI_CR1_PAIS  = 2;      //  Interrupt on falling edge.
6
  EXTI_CR2_TLIS  = 0;      //  Falling edge only.  
7
  asm("RIM");

Hat irgendjemand von euch eine Idee wieso es nicht geht?
Als Anschluss ist ein Button mit Pullup, welcher den Eingang auf GND 
zieht, wenn man ihn betätigt.

Besten Dank,
Niine

von Niine (Gast)


Lesenswert?

Niine schrieb:
> Hat irgendjemand von euch eine Idee wieso es nicht geht?

Omg, ich hatte tatsächlich den Interrupt nicht enabled.

Vergessen hatte ich:
1
  PA_CR2_C23 = 1;

Vg Niine

von Harald (Gast)


Lesenswert?

Wie sind denn so die Erfahrungen mit dem STM8s? Man sieht die ja immer 
wieder in extrem günstigen Elektroniken aus China (z.B. Voltmeter-Module 
aus China für 1€)
Welchen Compiler benutzt Du und wie ist die Einarbeitung bzw. ist die 
Dokumentation brauchbar? Was benötigt man für Download/Debug?

von Niine (Gast)


Lesenswert?

Harald schrieb:
> Wie sind denn so die Erfahrungen mit dem STM8s?

Bisher eigentlich recht gut. Man muss sich halt die Register zusammen 
suchen und es gibt weniger Tutorials als bei den AVR. Mir gefallen da 
aktuell die PICs gut, weil es in der MPLAB X IDE einen netten 
Konfigurator gibt, der einem das Gerüst schon nett zusammen baut, so 
muss man sich nicht mit Registern beschäftigen. Aber für den STM8S gibt 
es das Reference Manual 
(http://www.st.com/content/ccc/resource/technical/document/reference_manual/9a/1b/85/07/ca/eb/4f/dd/CD00190271.pdf/files/CD00190271.pdf/jcr:content/translations/en.CD00190271.pdf), 
damit komm ich eigentlich gut klar, weil alle Register gut beschrieben 
sind.

Harald schrieb:
> Welchen Compiler benutzt Du und wie ist die Einarbeitung bzw. ist die
> Dokumentation brauchbar?

Ich habe als IDE die "IAR Embedded Workbench" genommen. Da ist der 
Compiler dabei, wie er genau heißt, kann ich dir gar nicht sagen.
Die Standard peripheral library nutze ich nicht, damit kam ich nicht so 
richtig schnell klar. Ich binde nur die "iostm8s003f3.h" ein, damit kann 
ich alle Register in dem Format REGISTER_BIT (zB PA_CR2_C23 = 1;) 
ansprechen, das funktioniert super. Für die Dokumentation nehm ich das 
Datenblatt und die Reference Manual (s.o.)
Gut für Beispiele ist noch die Seite:
http://blog.mark-stevens.co.uk/2012/09/interrupts-on-the-stm8s/

Harald schrieb:
> Was benötigt man für Download/Debug?

Das ist ziemlich cool, ich hab den kleinen ST Link V2 bei Ebay mit 
deutschem Versand (sollte schnell gehen) für 6,99€ gekauft. Den gibts 
bei Ali noch viel günstiger 
(https://www.aliexpress.com/item/Free-shipping-Smart-Electronics-ST-LINK-Stlink-ST-Link-V2-Mini-STM8-STM32-Simulator-Download-Programmer/32756146997.html?ws_ab_test=searchweb0_0,searchweb201602_4_10152_10065_10151_10068_10344_10345_10342_10343_10340_10341_10193_10194_10304_10307_10060_10302_10155_10154_10056_10055_10054_10538_10537_5370015_10059_10536_10535_10534_10533_100031_10099_10338_10103_10102_10052_10053_10107_10050_10142_10051_10320_10321_10322_10084_10083_10080_10082_10081_10177_10110_5590015_10111_10112_10113_10114_5610015_10180_10312_10313_10314_10184_10078_10319_10079_10073_10186-10050_10112,searchweb201603_25,ppcSwitch_3&btsid=71734a8d-2983-4dcb-9602-a88546a26ae4&algo_expid=d10c1b78-619b-41b4-83cd-581743806532-5&algo_pvid=d10c1b78-619b-41b4-83cd-581743806532) 
und der funktioniert wirklich prima. Mir gefällt die SWIM Schnittstelle 
zum debuggen und brennen, das funktionierte alles auf Anhieb und 
debuggen ist prima. Kann ich nur empfehlen, vor allem weil es auch 
günstig ist :-)

Harald schrieb:
> Man sieht die ja immer
> wieder in extrem günstigen Elektroniken aus China

https://www.aliexpress.com/item/Free-shipping-10pcs-STM8S003F3P6-Value-line-16-MHz-STM8S-8-bit-MCU-STM8S003F3P6TR/32399834476.html?ws_ab_test=searchweb0_0,searchweb201602_4_10152_10065_10151_10068_10344_10345_10342_10343_10340_10341_10193_10194_10304_10307_10060_10302_10155_10154_10056_10055_10054_10538_10537_5370015_10059_10536_10535_10534_10533_100031_10099_10338_10103_10102_10052_10053_10107_10050_10142_10051_10320_10321_10322_10084_10083_10080_10082_10081_10177_10110_5590015_10111_10112_10113_10114_5610015_10180_10312_10313_10314_10184_10078_10319_10079_10073_10186-10110,searchweb201603_25,ppcSwitch_3&btsid=b4b2f9b4-c4ab-499b-8738-e7e138eaaa8c&algo_expid=0d389be4-22b5-43e9-b228-d3d7d399ef5d-5&algo_pvid=0d389be4-22b5-43e9-b228-d3d7d399ef5d
Bei pro Stück um die 30 Cent lohnt es sich das Ding in der 
Massenfertigung zu verbauen, wenn vergleichbare Controller im PIC 
Bereich um die 70 Cent kosten und alle anderen wahrscheinlich noch 
teurer sind. Und er macht seinen Job ja gut, keine Frage. Mir hat nur 
die Firmware meiner Fahrradlampe nicht gefallen (zB geht einfach aus, 
sobald Akku leer, das ist super, Nachts ohne Rücklicht... Da will ich 
langsam einzelne LED abschalten mit Spannungsüberwachung. Lieber wenig 
rotes Licht als garkeines).

Viele Grüße,
Niine

von Harald (Gast)


Lesenswert?

Vielen Dank für die ausführliche Antwort, sehr aufschlussreich!

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.