betrifft: Arduino UNO R4 Wifi, µC Renesas R7FA4M1AB
Hallo zusammen,
ich würde gerne On-Chip-Peripherie direkt benutzen, speziell einen der beiden 32-Bit GPTs, um einen Drehgeber auszuwerten. Wie kann ich herausfinden, welche On-Chip-Peripherie bereits in Verwendung ist und wofür?
Hallo,
32-Bit GPTs
Was soll das sein?
Ansonsten gibt es zu jedem Board einen Schaltplan in der Dokumentation.
Su könntest den Arduino Quellcode untersuchen!
Es geht mir nicht um die Peripherie auf dem Arduino-Board, sondern um die Peripherie-Module auf dem Renesas Controller-Chip. Klar könnte ich den Code durchsuchen, aber daran dürfte man ziemlich altern :-).
Hast Du schon mal "Renesas R7FA4M1AB datasheet" in die Suchmaschine Deiner Wahl eingegeben?
Gruß Tommy
Warum erwartest du. dass ich/andere das für dich tun?
Du hast die Klasse FspTimer der du den Kanalnummer mitgeben kannst. Wenn der Timer noch frei ist bekommst du ein OK zurück.
Wühl dich mal hier durch den Code:
Datasheet und UserManual hab ich mir natürlich schon beschafft, sonst hätte ich schlechte Karten, einen GPT selbst zu konfigurieren.
Ich erwarte natürlich nicht, dass andere etwas durchforsten, aber was ich mir erhofft hätte:
Eine Liste alles Peripherie-Module, die vom Arduino Basis-Code bzw. bestimmten Libraries verwendet wird, also von Code, den die Arduino-IDE bereitstellt.
Beispiel: millis() verwendet AGT_TIMER, channel 0. Diesen sollte man also nicht für andere Zwecke verwenden, falls man millis() oder micros() verwendet. Der F7A4M1A hat 2 AGT-Timer.
Danke Rintin für den Hinweis auf ‘class FspTimer’, das sollte helfen - vorausgesetzt alle Library-Schreiber haben ihren Timer über diesem Weg ‘gebucht’, aber das wird man wohl erwarten dürfen.
(Als ehemaliger C-Programmierer bis ich solche Hilfen nicht gewohnt: wir haben früher alle verwendeten Ressourcen in einem Excel-Sheet manuell angekreuzt)
Hab mir schon viele Beispiele für Encoder-Auswertung angesehen, aber alle, die ich bisher gefunden habe, verwenden Pin-Interrupts oder gar Polling. Der Drehgeber liefert 1000 pulse/U, hängt an einer Motor-Achse, die eine Spindel antreibt, um etwas zu Positionieren. Da kommen Unmengen von Interrupt-Requests an und es ist zu befürchten, dass manche wegen anderer Interrupts auf der Strecke bleiben. Der GPT kann das ganz selbständig tun, sogar eine Entprellung der Flanken scheint möglich zu sein, und die CPU würde nicht mit Interrupts belästigt.
Hab gerade in deinen Link geschaut: Supi, das scheint das zu sein, was ich suche - Herzlichen Dank!
Schön das du mit Abkürzungen um dich wirfst. In Post 2 wurdest du schon gefragt, was das ist. Bist jetzt immer noch nicht beantwortet.
Die sind alle im User Manual der CPU auf Hunderten von Seiten beschrieben.
Ganz ehrlich, man kann jetzt nicht erwarten das jeder alle Abkürzungen kennt. Jetzt habe ich nachgeschaut, General Purpose Timer. Ich habe gedacht er hat sich verschrieben. Weil das Board zwei 32Bit MCU drauf hat und die Eingangsfrage zu schwammig ist.
Also übersetzt, der TO will wissen welche Hardware Einheiten das Arduino Framework für was verwendet. Wenn er das genau wissen möchte muss er alle Headerfile durchgucken. Nur welchen Timer fremde Libs verwenden ist nicht standardisiert. Das müsste dann in dessen Doku stehen.
Ach, um eine Anfrage verstehen zu können, soll ich die dazu gehörenden User Manuals lesen, die ich sonst überhaupt nicht benötioge?
Danke, dann verstehe ich lieber die Frage nicht.
Solche Infos gehören ins Ursprungsposting, wenn man Hilfe will.
Gruß Tommy
Wenn es um Registernahe Programmierung geht, solltest du das vielleicht schon wissen. Und deine Forderung das Usermanual ins Eingangsposting zu pasten ist denke ich nicht Zielführend.
Da hast Du was falsch verstanden.
Es ging um die Abkürzungen (z.B. GPT = General Purpose Timer) auszuschreiben, nicht das Datenblatt rein zu kopieren.
Die Abkürzungen muss ich nicht wissen, wenn ich damit nichts tun will.
Aber egal, ich muss ja sein Problem nicht lösen wollen.
Gruß Tommy
Jetzt wo du die Abkürzung kennst, bist du jetzt in der Lage das Problem zu lösen?
Ich ?
Nein.
Grüße Uwe
Ja, danke. Problem ist gelöst.
Hab gefunden, dass es für die GPTs ein Array gpt_used_channel[GPT_HOWMANY] gibt, in dem die benutzten GPTs auf <> TIMER_FREE gesetzt sind.
Ursprünglich hatte ich vor, die betreffenden GPT-Register direkt zu beschreiben. Aber nach Durchsicht der Lib EncoderR4 hab ich gesehen, dass es für die Konfiguration der GPTs komfortable Funktionen gibt wie FspTimer::open().
Leider ist ja Debugging per Eclipse.Sloeber nicht möglich und somit auch nicht das Auslesen des erwähnten Arrays. Zur Laufzeit ist die Abfrage möglich, aber natürlich mühsam.
Ich hab mir die ganze SW in die Arduino-IDE hereingeholt und kann dort über den Debugger alles Nötige auslesen.
Herzlichen Dank für alle Hinweise !
Grüße Peter