Forum: Mikrocontroller und Digitale Elektronik Absolute ARM Basics


von Beginner (Gast)


Lesenswert?

Hi!

Ich suche ein Buch, Tutorial oder eine andere Einführung, die mir die 
absoluten Basics im Umgang mit einem ARM7 (vorzugsweise an einem ATMEL) 
erklärt. Mir geht es dabei nicht um das Programmieren, das beherrsche 
ich, sondern wirklich nur um die Eigenheiten des Controllers, wie die 
Pins angesteuert werden, SPI, etc. Wichtig wäre mir dabei, dass nicht 
einfach ein Block Code mit 'nem Kommentar da steht, sondern das wirklich 
genau erklärt wird, was da passiert. Ich will danach verstehen, wie das 
Ganze funktioniert und nicht nur den Code kopieren. Entwicklungsumgebung 
ist auch schon vorhanden.

Gelesen habe ich schon ein paar Tutorials (und natürlich das Datenblatt 
zu meinem Controller), aber das war alles nicht das, was mir das nötige 
Wissen vermittelt um selbst etwas zu starten.

http://www.mikrocontroller.net/articles/ARM-elf-GCC-Tutorial
http://www.embedded.com/design/opensource/200000632?_requestid=75269
...

von Robert T. (robertteufel)


Lesenswert?

Das wird nicht einfach. Es gibt nur eine Firma, die ein Interesse daran 
hat den Chip so genau wie moeglich zu beschreiben und das ist der 
Hersteller, in deinem Fall Atmel. Wenn das Datenblatt (oder Programmers 
Manual), wie es auch immer heissen mag, in den 500-1000 Seiten die Info 
nicht hat, die du suchst, dann kann nur noch Produkttraining des 
Herstellers helfen. Oder natuerlich gezielte Fragen koennen evtl. auch 
hier beantwortet werden. Deine Frage lautet, kann mir jemand ein Buch 
empfehlen, das auf Transistor-Ebene beschreibt, wie diese mehr als 1 Mio 
Transistorfunktionen zusammengeschaltet sind?

Bitte nimm mir das nicht uebel, hab frueher selbst Users Manual 
geschrieben und die sind nie ausfuehrlich genug aber immer zu lang ;-)

Ach ja, hab was vergessen. Deine Frage ist etwas merkwuerdig gestellt. 
Eigentlich moechtest du nicht wissen wie ein ARM (das ist der Core mit 
dem ASM Befehlssatz) funktioniert, sondern wie ein bestimmter Chip 
funktioniert und den hast du noch nicht mal benannt. Atmel hat > 50 ARM 
basierende Chips.

Gruss, Robert

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Wenn Du schon Ahnung hast, dann ist es ganz einfach:

1.) Die CPU hat beist einen umfangreichen Clock-Generator mit PLL und 
anderen Qlock-Quellen (Intern, Extern, 32KHz Extern usw.) Die muss man 
zu anfang einstellen.

2.) Alle Pherieperie-Teileinheiten haben extra Clock, den man aktivieren 
muss (die haben meist so viel Pheriperie drin, da spart man doch einige 
mA Strom). Dieser Extra Clock kann anderes parametriert werden als wie 
der CPU Clock (andere Taktrate, siehe Datenbaltt über größt mögliche 
Taktrate dieser Pheriperieeinheit).

3.) Alle IO_Port sind umfangreich in der Parametrierung, (Eingang mit 
Pull-Up/Down, Analogeingang, Ausgang, Ausgangs Frequenz usw.)

Jetzt wo Du das weißt, sollte es leicht fallen etwas mit einem 
ARM7-Controller anfangen zu können.

PS: Besser einen Cortex-M3 nehmen, denn der Cortex hat gleich einen 
Systemtimer integriert. (z.B. für ms Takt)

von daniel (Gast)


Lesenswert?

http://www.elektor.de/products/books/english/c-programming-for-embedded-microcontrollers.934392.lynkx

Hat mir auch geholfen. Ist zwar in englisch aber trotzdem gut lesbar.

Gruß Daniel

von Beginner (Gast)


Lesenswert?

Es geht ganz konkret um den AT91SAM7X256. Dafür existieren ja schon ein 
paar Beispiele im Internet, aber die fangen leider nicht bei Null an.
Wenn ich jetzt mein eigenes Programm schreiben will, verstehe ich schon 
nicht, wie ich vernünftig die Hardware initialisiere.
1
/* Enables the PIO to control the corresponding pin
2
 * (disables peripheral control of the pin). */
3
AT91C_BASE_PIOB->PIO_PER = LED_MASK; // Set in PIO mode
4
AT91C_BASE_PIOB->PIO_OER = LED_MASK; // Configure in Output
5
6
/* Enable the peripheral clock. */
7
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;
8
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOB;
9
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_EMAC;

Die Kommentare hierbei sind zu dürftig, als das ich jetzt wüsste, wie 
ich das bei mir anpassen müsste und das Datenblatt des Controllers setzt 
da auch schon ein gewisses Grundwissen voraus, sodass ich auch nach 
mehrmaliger Lektüre desselben nicht weiter weiß.

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.