STM32F103 Bluepill externen Interrupt auch PIN B1

Gast #7513746
Lesenswert?

Ich mache gerade die ersten verzweifelten Versuche mit INTs bei ARM Ich will einen externen Interrupt durch PIN B1 auslösen können

Fehlt hier noch was? Bei IMR hatte ich einfach alles eigneschaltet, hoffe das verursacht kein Problem welchen der AFIOs muss man benutzen, wenn ich nur Pin B1 nutzen will? Ich habe das mit den AFIOs noch gar nicht überblickt

1
  RCC_APB2ENR.AFIOEN := 1;              // Enable clock for alternate pin functions
2
    AFIO_EXTICR1 := FFFFFFFF;                 // PB as External interrupt
3
 
4
  EXTI_RTSR :=  0x00000400;             // Set interrupt on Rising edge
5
  EXTI_IMR :=  0xFFFFFFFF;   // Set mask
6
  NVIC_IntEnable(IVT_INT_EXTI1);    // Enable External interrupt
7
  EnableInterrupts();                   // Enables the processor interrupt.
Gast #7513767
Lesenswert?

Ahh, ChatGPT hat auf AFIO_EXTICR1 := 0x00000010; hingewiesen. Es geht zwar noch nicht 100% aber, nun tut sich jedenfalls was:-)

Nun muss ich nur noch die Sin von EXTI_PR verstehen. Gab es das beim Atmega auch schon, ich kann mich gar nicht erinnern, dass ich das da löschen musste

Gast #7513792
Lesenswert?

So, falls ein anderer Anfänger hier mal nach sucht. EXTI_RTSR und EXTI_IMR habe ich noch nicht korrigiert, aber so geht erstmal alles. Ich gehe jetzt erstmal ins Bett. Von da an ist es dann leicht weiter herauszufinden wie es geht.

Bluepill, STM32F103C8, Interrupts

1
program STM32F103V8_16x2;
2
{ Declarations section }
3
{ Declarations section }
4

5
procedure ExternerInterrupt(); iv IVT_INT_EXTI1; ics ICS_AUTO;
6
Begin
7
DisableInterrupts();
8
GPIOC_ODR := 0x0000; // Setze Port C auf 0;
9
EXTI_PR := 0x0000001A;  //Pending register zurücksetzen
10
EnableInterrupts();
11
end;
12

13

14

15
Begin
16
 GPIO_Digital_Input(@GPIOB_BASE, _GPIO_PINMASK_ALL);
17
 GPIO_Digital_Output(@GPIOC_BASE, _GPIO_PINMASK_ALL); // Set PORTC as digital output
18
 GPIO_Alternate_Function_Enable(@_GPIO_MODULE_SWJ_JTAGDISABLE );
19
 GPIO_Analog_Input(@GPIOA_BASE, _GPIO_PINMASK_1 );
20

21
  GPIOC_ODR := 1 SHL 13; Schalte LED am Port PC.13 aus (Bluepill)
22
//*******************************
23
  GPIOB_CRL := 0xFFFFFFFF;
24
  RCC_APB2ENR.AFIOEN := 1;              // Enable clock for alternate pin functions
25
   AFIO_EXTICR1 := 0x00000010;               // PB.1 as External interrupt
26
  EXTI_RTSR :=  0xFFFFFFFF;             // Set interrupt on Rising edge
27
  EXTI_IMR :=  0xFFFFFFFF;   // Set mask
28
  NVIC_IntEnable(IVT_INT_EXTI1);    // Enable External interrupt
29
  EnableInterrupts();                   // Enables the processor interrupt.
30

31
   //clk := Clock_MHz();
32

33
{ Main program }
34
 
35
While TRUE DO
36
 begin
37
 
38
end.
Gast #7513986
Lesenswert?

Harry L. schrieb:

Manch einer glaubt eben, man könne fehlende NI durch KI kompensieren...

...man sieht ja hier, was dabei herauskommt.

Nun mal langsam.... ich programmiere den Cortex M0 und m3 seit Jahren mit embitz und stdlib. neulich mal den Chatbotter dran gelassen und wen man den prompt richtig macht spuckt der recht gescheite sachen aus, die auch hardware nah sein können. Nur behauptet der leider auch steif und fest etwas falsches und wenn man ihn drauf hinweist kommt nur "Sorry, Sie haben recht ..." und wieder holt selbst falsche hinweise.

Gast #7513988
Lesenswert?

Max M. schrieb:

//******************************* GPIOB_CRL := 0xFFFFFFFF; RCC_APB2ENR.AFIOEN := 1; // Enable clock for alternate pin functions AFIO_EXTICR1 := 0x00000010; // PB.1 as External interrupt EXTI_RTSR := 0xFFFFFFFF; // Set interrupt on Rising edge EXTI_IMR := 0xFFFFFFFF; // Set mask NVIC_IntEnable(IVT_INT_EXTI1);

Was soll das den sein? Wofür gibt es CMSIS und StdLibs oder HAL? Damit einer wieder nichtssagende Zahlen einschreibt und der nächste Programmierer den Murks aus dem Fenster schmeißen will?

Gast #7514087
Lesenswert?

Klar gibt es das da auch, nur darum geht es mir nicht. Die ganzen HAL und andere, da kann ich mir keine der ewig langen Parameter merken. Nach einigen Monaten, wenn ich mal wieder am PC bin, bekomme ich eine Kriese wenn ich ein neues Projekt mache. Da kann ich auch gleich die einzelnen Register zusammensuchen und habe mir davon noch viel merken können. Von Hall und selbst den Mikroe Konstanten, kann ich mir kaum welche merken da das alles unfassbar kryptisch ist. Dann erstelle ich ggfls. lieber meine eigenen, wenn alles rund läuft oder lasse es so.

Klar, kann ich mir auch mit CubeMX alles zusammenklicken, und es funktioniert dann auch fix, aber durchblicken tu ich da nichts mehr. Ich bin so schon genug mit den ARM überfordert. Und in meinem Alter lernt es sich nicht mal so schnell um

Gast #7514166
Lesenswert?

Max M. schrieb:

Die ganzen HAL und andere, da kann ich mir keine der ewig langen Parameter merken.

Du hast schonmal was von Autoergänzung gehört? Also wenn ich bei Visual Studio oder Embitz schriebe merke ich mir keine der

NVIC_SetzeDasRegisterAufdenNeuenWert (....)

Geschichten, sondern wähle nur aus welche WRAPPER Funktion ich brauche UND selbst die Parameterliste zeigt er mir an und was da rein muss.... also mehr Gehhilfe geht echt nicht. Es gab alles schonmal , kaum etwas muss man neu erfinden.

Ich bin 55 und habe den ARM im Selbststudium erlernt, super Youtube Videos, Blogs usw. und sehr viel selbst geschrieben und gebastelt mit Bluepill und den Disco Boards STM429 usw. Inzwischen poste ich eigene Videos und erkläre das Innenleben wie DMA usw. Alles kein Hexenwerk, der ARM ist einer der durchdachtesten uC der Welt. Und mit C und Arduino sehen sowieso alle uC gleich aus. Bei meinem Fahrtebuch Logger im Auto arbeiten 8 Interrpts, 3 Timer, UART, SPI, I2C, NMEA auswqerten, SD karte alles im IRQ und noch nie abgestürzt.

PS: Pascal ist keine Sprache für den, C oder Python!

Gast #7514201
Lesenswert?

"PS: Pascal ist keine Sprache für den, C oder Python!"

Python ganz sicher nicht. Und weshalb Pascal keine geeignete Sprache sein soll erschließt sich mir nicht Ich kann da keinen Unterschied erkennen. Pascal ist sogar sehr gut geeignet. Genauso wie C hat sich auch Pascal weiterentwickelt. Dir ist sicher bekannt das z.B. Apples Lisa Computer in Pascal geschrieben wurde, also das OS. Oder das C die Rekords aus Turbo Pascal übernommen hat. Vielleicht denkst du an das Ursprüngliche Pascal, das hat aber mit Borland Pascal 6 oder 7 bzw. Delphi kaum noch was gemein und ist eine mächtige Programmiersprache geworden. Und ja, diese Hilfen gibt es, damit werde ich aber nicht warm (Ich bin deutlich über 55)

Gast #7514204
Lesenswert?

Anbei noch mal meine heute gemachten Verbesserungen, damit auch andere Anfänger eher nachvollziehen können wie es sein müsste, damit es zumindest funktioniert

1
  GPIOB_CRL := 1 SHL 7;       //Port configuration register low MODE1_CRL
2
  RCC_APB2ENR.AFIOEN := 1;   // Enable clock for alternate pin functions
3
  AFIO_EXTICR1 := 1 SHL 4;  // External interrupt configuration register 1 (AFIO_EXTICR1)
4
  EXTI_RTSR :=  1 SHL 1;   // Rising trigger selection register (EXTI_RTSR)    Port.B1
5
  EXTI_IMR := 1 SHL 1;    // Interrupt mask register (EXTI_IMR)    Port.B1
6
  NVIC_IntEnable(IVT_INT_EXTI1); // Enable External interrupt     Port.B1
Moderator Persönliche Seite #7514224
Lesenswert?

Max M. schrieb:

Oder das C die Rekords aus Turbo Pascal übernommen hat.

Das bezweifle ich. Turbo Pascal kam 1983 raus. C gibt es seit 1970 und da gab es die sog. Structs (Pascal: Records) bereits schon.

Woher ich das weiß: Die Erstausgabe des K&R kam 1978 raus. Und da waren die structs längst Bestandteil. Hier wurde nämlich das "Ur-C" erklärt - Stand 1970.

Gast #7514237
Lesenswert?

Frank M. schrieb:

Max M. schrieb:

Oder das C die Rekords aus Turbo Pascal übernommen hat.

Das bezweifle ich. Turbo Pascal kam 1983 raus. C gibt es seit 1970 und da gab es die sog. Structs (Pascal: Records) bereits schon.

Woher ich das weiß: Die Erstausgabe des K&R kam 1978 raus. Und da waren die structs längst Bestandteil. Hier wurde nämlich das "Ur-C" erklärt - Stand 1970.

Pascal wurde in den '70er Jahren im letzten Jahrhundert definiert.

War halt die Zeit wo solche Konstrukte entwickelt wurden. "Algorithms + Data Structures = Programs" kam 1976 auf den Markt.

Gast #7514238
Lesenswert?

Hatte ich mal irgendwo gelesen. Abe wie gesagt, macht es sonst keinen Unterschied ob es nun C oder Pascal ist, sicher so oder so besser als Python für Controller, selbst gegen Basic sollte nichts sprechen, das aktuelle kenne ich aber nicht.

Gast #7514241
Lesenswert?

So hatte ich es gelesen. Das es dort dann auch von C übernommen wurde. Aber wie gesagt, ist ja auch wurscht, will damit nur sagen das es sich nicht nimmt ob nun C oder Pascal Hier z.B. wir es erwähnt https://www.bernd-leitenberger.de/turbo-pascal4.shtml

"Pascal ist die ältere der beiden Sprachen. Sie wurde von 1968-1972 von Niklaus Wirth entwickelt." "Records sind eine der Neuerung von Pascal, die andere Sprachen wie C übernommen haben." Ist aber jetzt natürlich keine Referenz

Vax W. schrieb:

Frank M. schrieb:

Max M. schrieb:

Oder das C die Rekords aus Turbo Pascal übernommen hat.

Das bezweifle ich. Turbo Pascal kam 1983 raus. C gibt es seit 1970 und da gab es die sog. Structs (Pascal: Records) bereits schon.

Woher ich das weiß: Die Erstausgabe des K&R kam 1978 raus. Und da waren die structs längst Bestandteil. Hier wurde nämlich das "Ur-C" erklärt - Stand 1970.

Pascal wurde in den '70er Jahren im letzten Jahrhundert definiert.

War halt die Zeit wo solche Konstrukte entwickelt wurden. "Algorithms + Data Structures = Programs" kam 1976 auf den Markt.

Gast #7514256
Lesenswert?

Frank M. schrieb:

Max M. schrieb:

Oder das C die Rekords aus Turbo Pascal übernommen hat.

Das bezweifle ich. Turbo Pascal kam 1983 raus. C gibt es seit 1970 und da gab es die sog. Structs (Pascal: Records) bereits schon.

Der grosse Vorteil (DER Vorteil) von TurboPascal verglichen UCSD oder anderen Pascal-Compiler war die (Compile-)Geschwindigkeit und der Preis: TurboPascal kostete 300DEM incl Mwst, die Data-Library (etwa Dbase-Record-Verwaltung) kostet ca. 200DEM (?). Fuer 500DEM in 1985 konntest Du mit einem IBM-Salesrep vielleicht mal reden, Compiler waren ueber 2000DEM!

UCSD-Pascal kam 1974 auf den Markt.

Es tat mir damals richtig weh den BASCOM-Compiler zu lizensieren (+ Royalties an IBM).

Wie preisguenstig die Sachen heute sind.

Ich aergere mich ein bischen, dass damals nicht bei Wirth mal in den Vorlesungen zugeguckt habe.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren