Forum: Mikrocontroller und Digitale Elektronik ARM-Cortex als Anfänger?


von Mampf F. (mampf) Benutzerseite


Lesenswert?

W.S. schrieb:
> Du sollst nicht 10 Stunden lang "diverse Treiber" ausprobieren, sondern
> innerhalb dieser Zeit begreifen, wie der Hase läuft und dann selbst
> was zustande bringen.
>
> Es ist doch so UNSÄGLICH EINFACH!

Ich hab das genauso mit USB CDC auf dem STM32F103 gemacht xD

Das war ein Sonntag - ziemlich genau 10h - und nach dem uhm ähm 9ten 
Versuch oder so hat's dann endlich geklappt ;-)

W.S. schrieb:
> Lade dir mal das herunter:
> "https://www.mikrocontroller.net/attachment/316790/STM32F103C8T6.ZIP";
> und lies es dir durch. Das ist ein Minimal-System, was auf nem
> chinesischen ST-Link2 für stolze 2 Euro oder so läuft und du kannst per
> USB CDC damit kommunizieren.

Ja wahnsinn! Hab mir wirklich die Finger wund gegoogelt und etliche USB 
CDC Codes getestet, bis ich zähneknirschend aufgegeben hab und mich 
schlussendlich meinem Schicksal - an ST's HAL und CubeMX gebunden zu 
sein - hingab und meinen bereits HAL-freien und funktionierenden Code 
nach HAL portieren musste :S Den werde ich auch noch testen ... :)

: Bearbeitet durch User
von ASM Superprofi (Gast)


Lesenswert?

oooooooder man machts mit Assembler. Da gibts keine Konstrukte ;)

Für die meisten kleinen Basteleien (wo der Code kaum länger als ein paar 
Seiten wird) ist doch Assembler völlig ausreichend. Meistens gehts doch 
darum, Pins einzulesen und je nach Status andere Pins zu schalten.

Meistens sind es doch so Sachen wie:

temperatur > X?
wenn nicht, springe zu ende
ausgang4 schalten
led3 schalten
ende:

Und nichtmal mehr SPI muss man heutzutage noch selber programmieren.
Einfach nur "sts SPDR,r16" und schon geht das Byte in r16 auf Reisen. Ob 
man jetzt "sts SPDR,r16" schreibt oder "SPDR = 123" ist doch nun 
wirklich kein grosser Unterschied.

Allerdings besteht für einen Einsteiger in C die Gefahr, auf die Idee zu 
kommen, sowas wie "SPDR = 'Hallo Welt'" schreiben zu wollen.

von ASM Superprofi (Gast)


Lesenswert?

Einverstanden. Bei ASM muss man vorher noch ldi r16,123 schreiben. Nicht 
hauen! ;)

von Mampf F. (mampf) Benutzerseite


Lesenswert?

ASM Superprofi schrieb:
> Für die meisten kleinen Basteleien (wo der Code kaum länger als ein paar
> Seiten wird) ist doch Assembler völlig ausreichend.

Du scheinst einen Hang zum Minimalismus zu haben ... Finde ich 
prinzipiell nicht schlecht, allerdings ist das mittlerweile unnötig.

Evtl resultiert das auch aus deiner Liebe zu den 8-pinnigen Tinys ... 
Evtl ist da der C-Compiler schon damit überfordert xD

Was mich halt ein bisserl stört ... Bei dir schwingt immer so ein "Ich 
bin so geil" mit ... Ich bin so geil, mir reichen 8Pins ... Ich bin so 
geil, mir reicht Assembler usw^^

: Bearbeitet durch User
von TMK (Gast)


Lesenswert?

Es findet sich sicher jemand, der auf dem AtTiny einen Cross-C-Compiler 
für einen Intel-PC schreibt und damit die neueste PC-Software 
schreibt... ;-)

von Schreiber (Gast)


Lesenswert?

ASM Superprofi schrieb:
> Für die meisten kleinen Basteleien (wo der Code kaum länger als ein paar
> Seiten wird) ist doch Assembler völlig ausreichend. Meistens gehts doch
> darum, Pins einzulesen und je nach Status andere Pins zu schalten.

Stimmt schon, nur will man normalerweise auch noch ein Display 
dranhängen, zwei Taster und ein kleines Menü für irgendwelche 
Einstellungen dazubasteln.
Das wird mit Assembler schnell extrem lästig, selbst dann, wenn es sich 
nur um eine 7-Segment-Anzeige handelt.
Ich bleibe dabei: mit Basic oder C (einschließlich dessen Derivate) 
kommt man in der halben Zei4t ans Ziel.

Eine LED kann man mit 6 Zeilen Basic ohne nachdenken zu müssen zum 
Blinken bringen. Schneller geht es nicht!

von ASM Superprofi (Gast)


Lesenswert?

Mampf F. schrieb:
> Was mich halt ein bisserl stört ... Bei dir schwingt immer so ein "Ich
> bin so geil" mit ... Ich bin so geil, mir reichen 8Pins ... Ich bin so
> geil, mir reicht Assembler usw^^

Dann sieh es halt anders:

Ich bin so arm, dass ich mir nichtmal leisten kann, einen mega für eine 
einfache LED-Blinkerei zu nehmen!!!

Ich bin so dumm, dass ich C nicht kapiert habe und deshalb bei ASM 
Zuflucht gesucht habe.

von ASM Superprofi (Gast)


Lesenswert?

Schreiber schrieb:
> Stimmt schon, nur will man normalerweise auch noch ein Display
> dranhängen, zwei Taster und ein kleines Menü für irgendwelche
> Einstellungen dazubasteln.

Ab "Display dran mit Menüführung" bin ich durchaus damit einverstanden, 
die Sache in C anzugehen...

... obwohl ich meine TFTs mit ASM ansteuere. Hach ich bin ja so geil!!

Für Mampfi: Da ich zu blöd bin zu kapieren, wie man ASM mit C Objekten 
mischt, musste ich tatsächlich eine TFT Lib in ASM schreiben :((((((




;)

von Lothar (Gast)


Lesenswert?

ASM Superprofi schrieb:
> ldi r16,123

ARM Assembler ist besser, einfacher, orthogonaler, und sowieso :-)

W.S. schrieb:
> Kinetis-Blabla-Studio

Da gibt es doch jetzt das ganz neue und tolle MCUXpresso :-)

Bereite mich grade auf den Zwangsumstieg von LPCXpresso vor ...

http://www.nxp.com/products/software-and-tools/run-time-software/mcuxpresso-software-and-tools/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE

von Mampf F. (mampf) Benutzerseite


Lesenswert?

ASM Superprofi schrieb:
> Für Mampfi: Da ich zu blöd bin zu kapieren, wie man ASM mit C Objekten
> mischt, musste ich tatsächlich eine TFT Lib in ASM schreiben :((((((
>
> ;)

?????

von Bernd K. (prof7bit)


Lesenswert?

W.S. schrieb:
>> Es gibt dafür die schöne Erfindung des Kapitels.
> Das war zwar ein netter Spruch, aber ich würde dich dafür dazu
> verdammen, einmal einen Kinetis MKE06xxx aufzusetzen, OHNE deren
> Kinetis-Blabla-Studio verwenden zu dürfen.

Hab ich gemacht. Überhaupt kein Problem. Hatte mich vorher anhand eines 
STM32 in ARM eingearbeitet (davor AVR). Alles im Selbststudium. Erst 
Kinetis L, dann später noch E. Die Kinetis E0x-Reihe ist so 
minimalistisch, die Dinger sind kein bisschen schwieriger als damals ein 
ATmega, das GPIO ist ab Reset schon eingeschaltet und die 
Peripheriefunktionen auf den Pins aktivieren sich bei Benutzung von 
selbst, genau so simpel wie beim AVR.

Die Dokumentation ist sauber und übersichtlich aufgebaut, alles steht 
genau da wo man es vermutet und wo es auch hingehört:

* Jede Peripherie hat ein eigenes Kapitel in dem alles erklärt wird, 
jedes Register und jedes Bit, teils auch mit Code-Beispielen oder 
Ablaufplänen für die Initialisierung oder die empfohlene Behandlung im 
Interrupt.

* Und im Kapitel 3 ist aufgelistet wieviele von jeder Sorte auf diesem 
konkreten Chip instantiiert sind und wie die untereinander verschaltet 
sind (Mux-Tabellen, etc).

* Alles was man zur Programmierung braucht steht übersichtlich in einem 
einzigen Dokument.

Wenn man links das Inhaltsverzeichnis des PDF aufklappt findet man jede 
Information binnen Sekunden. Und hat man ein Kinetis Manual gesehen 
kennt man sie alle. Mir ist nicht klar warum Du immer wieder behauptest 
die Doku wäre schlecht, von der hervorragend organisierten Kinetis Doku 
könnten sich mancher andere ein Scheibe abschneiden. Das einzige was 
nervt (aber das ist bei allen anderen ebenfalls so) ist daß man 
tonnenweise unnötigen Schrott herunterladen und durchwühlen muss bis man 
irgendwo versteckt im hintersten  Zipfel eines unförmigen "SDK" .zip 
versteckt hinter Tonnen von stinkendem HAL-Unrat die eigentlich 
wichtigen Sachen wie CMSIS-Header, Linkerscripte und Startup findet, 
aber das muss man ja pro CPU nur ein einziges mal machen, dann hat mans, 
und da bekleckern sich andere Hersteller auch nicht mit Ruhm, bei STM 
gehts diesbezüglich genauso unübersichtlich zu.

: Bearbeitet durch User
von oleg (Gast)


Lesenswert?

Eine letzte Frage hätte ich noch bezüglich Atmega328, es gibt 
verschiedene Bezeichnungen bei den Chips, z.B. Atmega328, Atmega328p, 
Atmega328p-pu. Ziemlich verwirrend, was ist da der Unterschied bzw. 
spielt das überhaupt ne Rolle welchen ich zu Beginn nehme?

von oleg (Gast)


Lesenswert?

oleg schrieb:
> Eine letzte Frage hätte ich noch bezüglich Atmega328, es gibt
> verschiedene Bezeichnungen bei den Chips, z.B. Atmega328, Atmega328p,
> Atmega328p-pu. Ziemlich verwirrend, was ist da der Unterschied bzw.
> spielt das überhaupt ne Rolle welchen ich zu Beginn nehme?

Und die wirklich letzte Frage, kann ich mit diesem Atmega328 das AVR 
Tutorial hier auf dieser Seite durcharbeiten? Davon abgesehen, dass ich 
hier im Form  jede Menge Hilfe bekommen könnte.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

oleg schrieb:
> z.B. Atmega328, Atmega328p,
> Atmega328p-pu.

*P - “Picopower”, hat ein paar Powersave-Funktionen mehr als der ohne
P.

Die angehängten -PU etc. bezeichnen die Gehäusevarianten.  Die findest
du am Ende des Datenblatts erklärt (“Ordering Information” und 
“Packaging
Information”).  Wenn man sie weglässt, beschreibt man halt nur das
generische Bauteil, ohne auf das Gehäuse einzugehen.

> Ziemlich verwirrend, was ist da der Unterschied bzw.
> spielt das überhaupt ne Rolle welchen ich zu Beginn nehme?

Das Gehäuse dürfte sehr wohl eine Rolle spielen :), nicht jeder wird
beispielsweise gleich einen ATmega328P-MU nehmen wollen.

von ASM Superprofi (Gast)


Lesenswert?

Du hast die ATmega**PB-Serie vergessen.

von W.S. (Gast)


Lesenswert?

Mampf F. schrieb:
> Ja wahnsinn!

Nee, nix Wahnsinn.

Ich hatte vor Jahren mal den USB-Quellcode von Nuvoton auseinander 
genommen, weil der so unsäglich von Macros strotzte, daß man ne Krise 
davon kriegt. Als Ergebnis hab ich mir dann meinen eigenen 
USB-CDC-Treiber geschrieben und auf die Vorlage von Nuvoton gepfiffen. 
Die haben es nämlich auch nicht besser gemacht als all die Anderen (NXP, 
ST und so) und einen irren Haufen Kruscht eingebaut - insbesondere sowas 
wie Arrays variabler Länge von void Pointern. Klasse, sowas liebt 
unsereins über alle Maßen!! Ich krieg jetzt noch Pickel, wenn ich nur 
dran denke...

W.S.

von W.S. (Gast)


Lesenswert?

Bernd K. schrieb:
> Die Dokumentation ist sauber und übersichtlich aufgebaut, alles steht
> genau da wo man es vermutet und wo es auch hingehört:
>
> * Jede Peripherie hat ein eigenes Kapitel in dem alles erklärt wird,
> jedes Register und jedes Bit, teils auch mit Code-Beispielen oder
> Ablaufplänen für die Initialisierung oder die empfohlene Behandlung im
> Interrupt.

So langsam regen mich deine ständigen Behauptungen auf. Worüber 
schreibst du eigentlich? Ich hab den Eindruck, du schreibst über ein 
ganz anderes Produkt als ich.

Also, ich schreibe zum Beispiel über "MKE02P64M40SF0RM.pdf", das ist das 
RefManual zu den MKE02Z16VLC4, MKE02Z32VLC4, MKE02Z64VLC4, MKE02Z16VLD4, 
MKE02Z32VLD4, MKE02Z64VLD4, MKE02Z32VLH4, MKE02Z64VLH4, MKE02Z32VQH4, 
MKE02Z64VQH4, MKE02Z16VFM4, MKE02Z32VFM4 und MKE02Z64VFM4.

Dort gibt's ein Kapitel 11: Port Control (PORTS). Dort werden aber 
nicht die Ports und deren Verwendung erklärt, sondern lediglich das 
Glitchfilter, die Pullups, die Pulldowns und die Stromstärke (HDRIVE). 
Eigentlich würde das in das Kapitel 32: GPIO gehören. Die tatsächliche 
Port-Verwendung, also ob so ein Pin nun UART-TxD oder Counter-Clock oder 
I2C oder GPIO oder was sonst noch sein soll, wird weder in Kapitel 11 
noch in Kapitel 32 geklärt. Dazu findet man NUR in 
"MKE02P64M40SF0.pdf", was das Datenblatt zu einigen der im RefManual 
behandelten µC ist, eine Tabelle. Geht so, zwar nicht schön, aber geht.

Aber schauen wir mal dort rein und nehmen uns ein Pin heraus, z.B. PTB2.
Das kann sein: PTB2(also GPIO), KBI0_P6(Keyboard-Interrupt), 
SPI0_SCK(SPI eben), FTM0_CH0(Timer Modul), ADC0_SE6(Analog).

So! Wenn man jetzt PTB2 als GPIO benutzen will, aber eben auch den 
SPI-Modul und auch den Timer-Modul - natürlich auf anderen Ports, oder 
den Timer z.B. nur intern ohne I/O, wie stellt man jetzt die Funktion 
dieses PTB2 denn ein?

Bei anderen Kinetis-Familien ist das so gehandhabt wie bei vielen µC von 
NXP und ST. Da gibt es HW-Register, wo man die gewünschte Port-Funktion 
hineinschreibt und fertig ist die Zuweisung.

Aber bei der MKE-Reihe gibt es derartige Register eben NICHT.
Verstehst du das endlich? Es gibt sie NICHT!

Deswegen kann man den Portpins auch nicht dediziert ihre Funktion 
zuweisen, wie man das bei anderen Produkten kann. Das ist schlichtweg 
Bockmist der Sonderklasse. Bei meiner damaligen Anfrage an Freescale 
wurde mir geantwortet, daß man die Auswahl damit tätigt, daß man keine 
weiter rechts in der Tabelle des Datenblattes "MKE02P64M40SF0.pdf" 
(Seiten 32..33) stehende Peripherie aktiviert, denn es wird automatisch 
immer die Funktion dem Pin zugewiesen, die am weitesten rechts in der 
Tabelle steht.

Klasse!

Wenn ich nen Pin als GPIO benutzen will, bei dem z.B. auch UART0 
aufgelistet ist, dann darf ich UART0 nicht aktivieren, weil sonst der 
Pin nicht mehr als GPIO benutzbar ist. Nun taucht UART0 mehrfach auf, 
hier sowohl auf PTB1 als auch auf PTA3 - und wo steht, wie man beim 
festlegen der Pins verfahren muß, auf denen man UART0 nicht haben 
will? UART0_TxD braucht man ja nur einmal und nicht auf allen dafür 
möglichen Pins.

Die Antwort ist klar:
Man muß für jedes Pin durch alle seine möglichen Verwendungen tingeln 
und in den dafür zuständigen Peripherie-Cores genau DIESE Verwendung 
ausschließen, z.B. indem man dort ein anderes Pin ansagt (falls man 
damit nicht an andere Setup's anrempelt) oder den Core eben irgendwie so 
einstellt, daß er eben genau DIESES Pin nicht benutzt.

Im Klartext: Für die immer wiederkehrende Basis-Arbeit des Zuweisens der 
Funktionen für ein Port-Pin muß man immer wieder durch alle Kapitel 
des RefManuals sich durchquälen und dort Einstellungen vornehmen. Gilt 
aber nur, wenn man das weiß! In keiner Dokumentation zu dieser Familie 
ist das tatsächliche Verfahren zur Funktions-Auswahl beschrieben - man 
kann das allenfalls stückweise zwischen den Zeilen lesen.

Dieses Verfahren ist (Damen mal bitte wegschauen) OBERSCHEISSE! Es geht 
nur dann passabel, wenn man brav das Konfigurations-Tool des Herstellers 
benutzt, weil man selber von Hand mit dem Konfigurieren des Chips graue 
Haare kriegt. Da ganze gleicht etwas dem Rubik-Würfel: Um eine Sache 
einzustellen, muß man an allen anderen Sachen zugleich mitdrehen - und 
das so lange, bis es denn endlich paßt.

Nein, gerade bei dieser Kinetis-Familie sucht man sich tot in den 
Manuals, eben weil dort weder in der Hardware noch in der Dokumentation 
die Dinge dort und so sind, wo und wie sie hingehören. Natürlich riecht 
man den Zweck dahinter. Was ST mit Cube, Infineon mit Dave und andere 
Hersteller mit jeweils ihren Tools tun, das macht Freescale eben auch.

So Bernd, jetzt bist du dran: Schildere doch einfach mal, wie man all 
den Portpins eines der genannten µC dediziert deren gewünschte 
Funktionen zuweist. Nach deiner Meinung geht das ja so einfach.

W.S.

von Bernd K. (prof7bit)


Lesenswert?

W.S. schrieb:
> Bernd K. schrieb:
>> Die Dokumentation ist sauber und übersichtlich aufgebaut, alles steht
>> genau da wo man es vermutet und wo es auch hingehört:
>>
>> * Jede Peripherie hat ein eigenes Kapitel in dem alles erklärt wird,
>> jedes Register und jedes Bit, teils auch mit Code-Beispielen oder
>> Ablaufplänen für die Initialisierung oder die empfohlene Behandlung im
>> Interrupt.
>
> So langsam regen mich deine ständigen Behauptungen auf. Worüber
> schreibst du eigentlich? Ich hab den Eindruck, du schreibst über ein
> ganz anderes Produkt als ich.
>
> Also, ich schreibe zum Beispiel über "MKE02P64M40SF0RM.pdf"

Was stimmt bei Dir nicht? Bei jeder Gelegenheit meckerst Du rum wie Dir 
die Handbücher nicht passen aber jedesmal kommst Du wieder mit nem neuem 
MKE oder MKL an, diesmal ein MKE06. Warum hängst Du so sehr an Kinetis 
wenn sie doch so scheiße sind?

Und wenn Dich tatsächlich jemand dazu zwingt warum merkst Du Dir nicht 
endlich mal die zwei oder drei Kapitelüberschriften die bei ALLEN 
Kinetis identisch lauten in denen immer wieder die selben 3 Sachen 
stehen nach denen Du immer und immer wieder wieder fragst und die man 
Dir jedesmal aufs Neue beantwortet und namentlich die Kapitel nennt und 
die Du jedesmal angeblich trotzdem wieder suchen musst wenn Du trotz 
tiefster Abneigung wieder mit dem nächsten Kinetis daherkommst der fast 
identisch aufgebaut ist wie der letzte und fast das selbe RefMan hat? 
Was ist los mit Dir?

> Dort gibt's ein Kapitel 11: Port Control (PORTS). Dort werden aber
> nicht die Ports und deren Verwendung erklärt, sondern lediglich das
> Glitchfilter, die Pullups, die Pulldowns und die Stromstärke (HDRIVE).
> Eigentlich würde das in das Kapitel 32: GPIO gehören.

Im PORT Kapitel steht gleich am Anfang dick und fett daß deren IO über 
die GPIO-Register kontrolliert wird. Wer lesen kann ist klar im Vorteil. 
In den Blockschaltbildern ist das auch bebildert für die die weniger gut 
lesen können.

Das ist bei allen Kinetis so, auch bei den letzte 12 über die Du Dich 
aufgeregt hast, und be jedem steht schwarz auf weiß im PORT-Kapitel daß 
IO über die GPIO-Register gemacht wird langsam sollte sich das im Hirn 
eingebrannt haben, meinst Du nicht?

> Die tatsächliche
> Port-Verwendung, also ob so ein Pin nun UART-TxD oder Counter-Clock oder
> I2C oder GPIO oder was sonst noch sein soll, wird weder in Kapitel 11
> noch in Kapitel 32 geklärt. Dazu findet man NUR in
> "MKE02P64M40SF0.pdf", was das Datenblatt zu einigen der im RefManual
> behandelten µC ist, eine Tabelle. Geht so, zwar nicht schön, aber geht.

Nein, das ist gelogen. Pinout und Alternate-Funktionen stehen dick und 
fett im Kapitel 10 Signal multiplexing and pin assignments (wie bei 
ALLEN Kinetis). Das ist das selbe PDF, man muss hier nicht nach dem 
Datenblatt suchen. Und das ist kein verstecktes Unterkapitel das man 
erst aufklappen müsste, das springt einen sofort an in der ersten Ebene. 
Mach die Augen auf  / kauf Dir eine Brille (nichtzutreffendes 
streichen).

> So! Wenn man jetzt PTB2 als GPIO benutzen will, aber eben auch den
> SPI-Modul und auch den Timer-Modul - natürlich auf anderen Ports, oder
> den Timer z.B. nur intern ohne I/O, wie stellt man jetzt die Funktion
> dieses PTB2 denn ein?

Im SIM->PINSEL stellt man das ein, das steht dick und fett und blau 
unterlegt (und verlinkt) gleich am Anfang des oben genannten Kapitels 
Signal multiplexing and pin assignments. Stellst Du Dich absichtlich so 
dumm? Bist Du ein Troll?

> Aber bei der MKE-Reihe gibt es derartige Register eben NICHT.
> Verstehst du das endlich? Es gibt sie NICHT!

SIM->PINSEL. Wie oben erwähnt.

> Wenn ich nen Pin als GPIO benutzen will, bei dem z.B. auch UART0
> aufgelistet ist, dann darf ich UART0 nicht aktivieren,

Dann legst Du den UART0 halt eben auf die beiden Alternativpins, wo ist 
das Problem?

> Im Klartext: Für die immer wiederkehrende Basis-Arbeit des Zuweisens der
> Funktionen für ein Port-Pin muß man immer wieder durch alle Kapitel
> des RefManuals sich durchquälen und dort Einstellungen vornehmen.

Bullschit. Man nimmt die Tabelle mit dem Pinout (immer noch Kapitel 10 
welches sich bereits in den Bildschirm eingebrannt haben sollte) und 
sucht sich die Pins für UART, SPI, ADC, oder was auch immer aus die man 
gerne verwenden will, trägt die getroffene Auswahl im PINSEL-Register 
ein und der Rest bleibt GPIO. Fertig.

> Dieses Verfahren ist (Damen mal bitte wegschauen) OBERSCHEISSE!

Bei AVR hat man das genauso gemacht, Sonderfunktionen liegen auch da auf 
festen Pins und wenn man z.B. den UART einschaltet krallt der sich seine 
beiden Pins von selbst, trotzdem hört man immer wieder AVR sei so 
einfach.

Beim MKE funktionierts genauso.

> Es geht
> nur dann passabel, wenn man brav das Konfigurations-Tool des Herstellers
> benutzt, weil man selber von Hand mit dem Konfigurieren des Chips graue
> Haare kriegt

Das erzähl mal den ganzen AVR-Programmierern hier dort geht das exakt 
genauso: erst sucht man sich die Pins mit den Sonderfunktionen raus die 
man für irgendwas braucht und der ganze Rest der übrig bleibt kann für 
GPIO verwendet werden. hat noch keiner graue Haare von bekommen und nach 
nem Konfig-Tool hab ich dort noch keinen schreien hören. Du solltest 
vielleicht das Hobby wechseln wenn Dir das so sehr zusetzt daß es schon 
die Haarfarbe angreift.

> Da ganze gleicht etwas dem Rubik-Würfel: Um eine Sache
> einzustellen, muß man an allen anderen Sachen zugleich mitdrehen - und
> das so lange, bis es denn endlich paßt.

Bei welchen "allen anderen" Sachen? Du sprichst in Rätseln.

> Nein, gerade bei dieser Kinetis-Familie sucht man sich tot in den
> Manuals,

Also ich blende immer als erstes links das Inhaltsverzeichnis ein, dann 
finde ich Kapitel 3 oder Kapitel 10 (die beiden Kapitel die Du andauernd 
aufs neue suchst) binnen 2 Sekunden.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Bernd K. schrieb:
> Dann legst Du den UART0 halt eben auf die beiden Alternativpins, wo ist
> das Problem?

Daß eben auf den Alternativpins bereits etwas anderes zu liegen gekommen 
ist und daß man dann selbiges eben abwürgt, sofern UART0 in der Tafel 
eben weiter rechts steht. Kapierst du diese Umständlichkeit nun endlich? 
Man muß eben genau so, wie ich das geschrieben habe, durch alle Kapitel 
tingeln, um sich die Informationen mühsam zusammenzusuchen, die man 
braucht.

Und es ist eben doch der Rubik-Würfel, wenn man zum Auswählen eines GPIO 
den USART erst mal auf nen Alternativport und den Timer auch auf nen 
Alternativport und den Weißdergeier auch noch auf seinen Alternativport 
verlegen muß und dann zusehen muß, was man dann mit den Alternativports 
anstellt, um sie sinnvoll benutzen zu können.

Also genau wie du es auf deine Art umrissen hast, muß man bei diesen µC 
kreuz und quer im RefManual und im DB herumsuchen, um sich die 
Informationen zusammen zu klauben, die man braucht, um das Teil benutzen 
zu können. Stets und ständig steht eben was man braucht nicht dort, wo 
man es braucht, sondern woanders oder garnicht.

Und warum ich gelegentlich drauf zurückkomme? Nun, ganz einfach: Weil 
eben die Chips und die Dokumente dazu von Freescale so schlecht sind wie 
sie sind. Schade eigentlich, der Preis hätte mich durchaus interessiert, 
aber in der Gesamtkalkulation ist es eben nur ein Posten von vielen.

Aber so leicht lasse ich dich nicht davonkommen, da du ja den 
entsprechenden Ton angeschlagen hast. Also erkläre der lauschenden 
Gemeinde doch abschließend mal, wie man denn vorgeht, wenn man z.B. 
sämtliche Timer intern zu gebrauchen gedenkt und dennoch alle Portpins 
als GPIO zu benutzen gedenkt. Nur so als Beispiel zwecks Klarheit über 
die Vorgehensweise.

W.S.

von Bernd K. (prof7bit)


Lesenswert?

W.S. schrieb:
> Man muß eben genau so, wie ich das geschrieben habe, durch alle Kapitel
> tingeln, um sich die Informationen mühsam zusammenzusuchen, die man
> braucht.

Nein, muss man nicht, man muss

* erstens planen welche Peripheriegeräte man zu nutzen gedenkt
* zweitens dann in der Tabelle nachschauen auf welchen Pins die 
rauskommen
  und das in seinem Schaltplan entsprechend anschließen
* drittens alles was übrig bleibt kann man als GPIO nutzen
  und das in seinem Schaltplan entsprechend anschließen.

Fertig.

Ich sehe nicht wozu man da durch irgendwelche Kapitel "tingeln" muss, 
alle möglichen Pinfunktionen für jeden einzelnen Pin stehen 
übersichtlich in der Pinout Tabelle, diese Tabelle ist alles was man 
dazu braucht.

von Bernd K. (prof7bit)


Lesenswert?

W.S. schrieb:
> Also erkläre der lauschenden
> Gemeinde doch abschließend mal, wie man denn vorgeht, wenn man z.B.
> sämtliche Timer intern zu gebrauchen gedenkt und dennoch alle Portpins
> als GPIO zu benutzen gedenkt. Nur so als Beispiel zwecks Klarheit über
> die Vorgehensweise.

Dann schaltet man einfach keinen der PWM-Ausgänge ein, was auch nicht 
weiter schwer ist denn die sind ja per Default sowieso alle erstmal 
ausgeschaltet und wenn Du die Timerkanäle nur für interne Zwecke nutzt 
(Interrupt, DMA-Trigger, etc) hast Du ja nicht den geringsten Grund die 
PWM-Erzeugung einzuschalten.

Dann bleiben die zugehörigen Pins auf GPIO weil nicht anderweitig 
genutzt.

von JojoS (Gast)


Lesenswert?

Da ist es doch herrlich wenn die Hersteller Werkzeuge liefern mit denen 
man einfach so komplizierte Konfigurationen hinbekommt ohne die Manuals 
lesen zu müssen :-)))

von Bernd K. (prof7bit)


Lesenswert?

JojoS schrieb:
> Da ist es doch herrlich wenn die Hersteller Werkzeuge liefern mit denen
> man einfach so komplizierte Konfigurationen hinbekommt ohne die Manuals

W.S. ud ich streiten uns hier über einen KE06, der ist ungefähr so 
kompliziert wie ein ATMega und konfiguriert sich auch so ähnlich: 
Schaltest Du die PWM-Erzeugung an kannst Du den betreffenden Pin (der im 
Pinout so beschriftet ist) nicht mehr als GPIO nutzen. Schaltest Du den 
UART an krallt der sich seinen TX-Pin. Schaltest ihn wieder ab ist der 
Pin wieder GPIO. Dafür hat noch keiner ein Konfig-Tool gebraucht, da 
gibts nämlich überhaupt nix zu konfigurieren, das geht automatisch.

Da muss man nur in der Tabelle nachschauen welche Peripherie auf welchen 
Pins rauskommt.

Optimal für ängstliche AVR-Umsteiger, da fühlt man sich gleich wie 
zuhause.

: Bearbeitet durch User
von JojoS (Gast)


Lesenswert?

Naja, so Tools wie Cube von ST meckern schon wenn etwas nicht zusammen 
passt. Wenn man das zur Laufzeit umkonfiguriert können die natürlich 
auch nicht helfen, aber einfacher als ein Telefonbuch dickes Manual 
durch zu lesen sind die Tools schon.
Ansonsten noch ein entspanntes Wochenende.

von Bernd K. (prof7bit)


Lesenswert?

JojoS schrieb:
> aber einfacher als ein Telefonbuch dickes Manual
> durch zu lesen sind die Tools schon.

Es reicht für den Anfang alle Kapitel wegzulassen die Funktionen 
beschreiben die man gar nicht nutzen will. Die sind nämlich allesamt per 
Default ausgeschaltet und kommen einem nicht in die Quere.

Man liest die algemeinen Kapitel am Anfang die das Produkt beschreiben 
und einen Überblick verschaffen, das sind vielleicht 100 Seiten (im 
Taschenbuchformat luftig gesetzt und mit Diagrammen angereichert, nicht 
im Telefonbuchformat), und vom Rest nur noch gezielt das was man 
braucht.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Sehe ich auch so, trotzdem erwartet man zB das Pins per default gpio 
sind aber nach Reset zB debug pins sind. Bin ich vor Jahren beim mega32 
drauf reingefallen und das gibts bei den ARM heute noch genauso. Gut 
wenn man es vorher gelesen hat, aber in welchem Kapitel fängt der 
blutige Angänger an?

von Bernd K. (prof7bit)


Lesenswert?

Johannes S. schrieb:
> Sehe ich auch so, trotzdem erwartet man zB das Pins per default gpio
> sind aber nach Reset zB debug pins sind.

Beim Kinetis E (über den ich mich oben mit WS stritt) ist das genau so:
1
After reset, the shared peripheral functions are disabled so that the pins
2
are controlled by the parallel I/O except PTA4, PTA5, PTB4 and PTC4 that are
3
default to SWD_DIO, SWD_CLK, NMI and RESET function. All of the parallel I/O
4
are configured as high- impedance (Hi-Z).

> Bin ich vor Jahren beim mega32
> drauf reingefallen und das gibts bei den ARM heute noch genauso.

Worauf genau bist Du reingefallen?

> Gut
> wenn man es vorher gelesen hat, aber in welchem Kapitel fängt der
> blutige Angänger an?

Bei Kapitel 1, bis der allgemeine Teil vorbei ist, der ganze Rest ist 
Nachschlagewerk.

von Johannes S. (Gast)


Lesenswert?

Bernd K. schrieb:
> Worauf genau bist Du reingefallen?

Der berühmte Port C bei dem einige Bits nicht funktionierten (weil sie 
per default Jtag sind). Das war früher wöchentliches Thema wie 'LED ohne 
Wiederstand' und 'mein 7805 glüht'.
Aber auch da wurde sie hier schon geholfen.

von Bernd K. (prof7bit)


Lesenswert?

Johannes S. schrieb:
> Der berühmte Port C bei dem einige Bits nicht funktionierten (weil sie
> per default Jtag sind).

Ja, für solche Sachen kann man das Manual immer gut gebrauchen. Es gibt 
halt leider noch keine andere Möglichkeit wie man das Wissen schneller 
ins Gehirn uploaden kann. Ich würd mir statt nem riesigen Datenblatt 
auch lieber den zugehörigen Braindump besorgen und dann 5 Sekunden lang 
den Stick ins Ohr stecken ums zu laden, aber das geht leider noch nicht.

von oleg (Gast)


Lesenswert?

Gut, ich habe mitgelesen (jeden einzelnen Beitrag) und bin zu dem 
Schluss gekommen es mit dem ARM auf mich zu nehmen (STM32F0Discovery). 
Hauptaugenmerk wird aber zuerst das AVR Tutorial mit einem AVR sein. In 
den Cortex werde ich mich dann parallel einarbeiten, ganz zwanglos und 
ohne Stress :-)

Danke einem jeden einzelnen von euch, eure Meinungen waren sehr 
hilfreich für mich.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

oleg schrieb:
> Danke einem jeden einzelnen von euch, eure Meinungen waren sehr
> hilfreich für mich.

Wir haben zu danken ... Es ist normalerweise die Regel, dass Gäste - 
nachdem die eine Diskussion angestoßen haben - nie wieder die Antworten 
lesen ... Gut, dass das alles nicht umsonst war xD

von Marco H. (damarco)


Lesenswert?

Das mit den Parallel einarbeiten würde ich lassen. Die Unterschiede sind 
einfach zu groß. Am besten erst mal den AVR verstehen dann zum ARM 
übergehen.  Ein ARM ist einfach zu komplex um als Anfänger das 
Registerwerk zu verstehen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Marco H. schrieb:
> das Registerwerk zu verstehen

Das „Registerwerk“ ist ja nun eher nicht das Problem, das ist kaum
schwieriger zu verstehen als das beim AVR (und überdies völlig durch
den C-Compiler versteckt).

Schwieriger ist da eher das „Drumrum“ zur CPU, also die Erzeugung der
diversen Takte, der Interruptcontroller und dergleichen.  Einen Teil
dieser zusätzlichen Komplexität findet man auf der AVR-Seite allerdings
auch bereits bei den Xmegas vor, auch dort ist der Einstieg ein
bisschen komplexer als bei den Standard-AVRs.

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.