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
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
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:(
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).
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?
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
Nabend, nehme den von Kaj als letzteren Link angegebenen. C/C++ ist was anderes wie Baskom. MfG
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
Sauger schrieb: > C/C++ ist was anderes wie Baskom. Und C ist was anderes als C++. Warum also "C/C++"?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.