Forum: Compiler & IDEs Einsteigerfrage Atmel Studio


von Valentin S. (lochrasterer)


Lesenswert?

Hallo Leute

Ich bin einsteiger in Atmel Studio und wollte grad mal was ausprobieren. 
Nun habe ich aber ein Problem:
Wie kann ich die Headerdatei <avr/io> anzeigen, um zu wissen, wie die 
Ports heißen?

Valentin

von Kaj (Gast)


Lesenswert?

Die Ports heißen, wie sie eben heißen: PORTA, PORTB, PORTC, PORTD usw...
Welche Ports dein Controller hat, und wie die heißen, findest du im 
Datenblatt.
Aber um deine Frage zu beantworten:
in deiner Quellcodedatei hast du ein
1
#include <avr/io.h>
Da machst du einfach einen rechtsklick auf "io.h" und gehst du auf "goto 
implementation", ist der erste punkt in dem dann erscheinenden Menü.
Aber da brauchst du gar nicht rein gucken! Datenblatt lesen und die 
Codebeispiele im Datenblatt anschauen reicht vollkommen, da ist alles 
wunderbar erklärt.

Grüße

von Valentin S. (lochrasterer)


Lesenswert?

ich weiß natürlich wie sie heißen aber ich muss im header nachschaunen, 
wie das heißt mit ddrb oder so was.
wenn ich auf "goto implementation" klicke passiert aber nichts:(

von Kaj (Gast)


Lesenswert?

Valentin S. schrieb:
> ich muss im header nachschaunen,
> wie das heißt mit ddrb oder so was
Nein musst du nicht, denn auch das steht im Datenblatt, unter
"I/O-Ports --> Ports as General Digital I/O --> Configure the Pin"
Zu jedem PORT gibt es auch ein Richtungsregister: DDR
PORTA --> DDRA, PORTB --> DDRB, PORTC --> DDRC...

Alles was ich bisher mit Atmel-Controllern gemacht habe (SPI, USART, 
Timer, Ext. Interrupts, LED-Cube, u.ä.) ging Wunderbar ohne in die 
Header zu schauen, weil alles mit Code-Beispielen im datenblatt steht.


Valentin S. schrieb:
> wenn ich auf "goto implementation" klicke passiert aber nichts:(
Ja, kenn ich, kann dir aber auch nicht sagen wodrann es liegt, bei mir 
gehts irgendwie immer nach ner weile :-/

Grüße


Auszug aus Datenblatt:
Configuring the Pin
Each port pin consists of three register bits: DDxn, PORTxn, and PINxn. 
As shown in ”Register
description”, the DDxn bits are accessed at the DDRx I/O address, the 
PORTxn bits
at the PORTx I/O address, and the PINxn bits at the PINx I/O address.
The DDxn bit in the DDRx Register selects the direction of this pin. If 
DDxn is written logic one,
Pxn is configured as an output pin. If DDxn is written logic zero, Pxn 
is configured as an input
pin.
If PORTxn is written logic one when the pin is configured as an input 
pin, the pull-up resistor is
activated. To switch the pull-up resistor off, PORTxn has to be written 
logic zero or the pin has to
be configured as an output pin. The port pins are tri-stated when reset 
condition becomes active,
even if no clocks are running.
If PORTxn is written logic one when the pin is configured as an output 
pin, the port pin is driven
high (one). If PORTxn is written logic zero when the pin is configured 
as an output pin, the port
pin is driven low (zero).

von Valentin S. (lochrasterer)


Lesenswert?

ok vielen dank, kaj
wenn ich DDRB verwende, brauch ich aber kein header oder?
und Wenn ich Pin B.0 ansteuern will muss ich dann DDRB.0 sreiben?

von Kaj (Gast)


Lesenswert?

Valentin S. schrieb:
> wenn ich DDRB verwende, brauch ich aber kein header oder?
Doch, includieren musst den schon (also: #include <avr/io.h>), weil der 
Compiler mit dem Bezeichner sonst nichts anfangen kann.

Valentin S. schrieb:
> Wenn ich Pin B.0 ansteuern will muss ich dann DDRB.0 sreiben?
Nein. Mit DDRB sagst du nur welche Pins vom Port B Ein- und Ausgang 
sind.
Wenn du Die Richtung z.B. als ausgang festgelegt hast, und den Pins 
einen Wert zuweisen willst, dann machst du das z.B. mit: PORTB = 0xFF;
Damit werden alle Pins des Port B auf 1 gesetzt.

Du scheinst wirklich noch sehr am Anfang zu stehen, deswegen bin ich mal 
sofrei, Dich an dieses Tutorial weiter zu leiten:
http://www.mikrocontroller.net/articles/AVR-Tutorial

Falls du ein Buch suchst/kaufen möchtest kann ich dir folgendes 
empfehlen:
http://www.amazon.de/Mikrocomputertechnik-Controllern-Atmel-AVR-RISC-Familie-Programmierung/dp/3486589881/ref=sr_1_1?ie=UTF8&qid=1386358162&sr=8-1&keywords=Atmel+AVR

Grüße

von Sauger (Gast)


Lesenswert?

Nabend,

nehme den von Kaj als letzteren Link angegebenen.
C/C++ ist was anderes wie Baskom.

MfG

von Kaj (Gast)


Lesenswert?

Hmm, ja, da wir von AtmelStudio gesprochen haben, bin ich automatisch 
von C/C++ ausgegangen. Von Bascom hab ich keine Ahnung, weiß also auch 
nicht wie da Pins usw. abgesprochen werden.
Aber im Datenblatt sind gute Beispiele wie man es in C macht. Und das 
Buch beschränkt sich vom Code her auch auf Assembler und C.

Grüße

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


Lesenswert?

Sauger schrieb:
> C/C++ ist was anderes wie Baskom.

Und C ist was anderes als C++.  Warum also "C/C++"?

von Sauger (Gast)


Lesenswert?

Mahlzeit,

Jörg Wunsch schrieb:
> Sauger schrieb:
>> C/C++ ist was anderes wie Baskom.
>
> Und C ist was anderes als C++.  Warum also "C/C++"?

scheint (umgänglicher) Sprachgebrauch zu sein. Könnte daran liegen das 
sie Geschwister sind.

MfG

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.