Forum: Mikrocontroller und Digitale Elektronik xxxdef.inc dateien


von Lukas (Gast)


Lesenswert?

Hallo!

Ich fange gearade an mich mit dem thema Microcontroller zu
beschäfftigen und habe mir das tutorial von mikrocontroller.net
vorgenommen und habe dazu eine Frage:

Wenn man einen sourcecode schreibt, muss man ja immer als erstes eine
.inc datrei einbinden, damit bekannt ist, was mit pb0, pb1 ... gemeint
ist. Woher bekomme ich diese .inf dateien? Ich wollte den AT Mega
48-20PU verwenden, weil die mega serie nicht so leicht zu schrotten
ist, und weil dieser recht günstig ist.

Achja, nochwas, wenn AVR-Studio nur den ATmega48 drinne hat, kann ich
dann auch den atmega 48-20 PU verwenden?

vielen dank für die hilfe?

von Ronny (Gast)


Lesenswert?

Die .inc Dateien liegen dem AVR-Studio bei,im Unterverzeichnis AppNotes
des jeweiligen Assemblers (AvrAssembler1 oderAvrAssembler2).Um den
genauen Pfad musst du dich nicht kümmern,den findet der Assembler
selber wenn alles richtig installiert ist.

Wenn du ein C-Compiler Plugin drin hast,liegen die includes (*.h) meist
in einem Unterverzeichnis \Include des Compilers.

Soweit ich weis,unterstützt das AVRStudio so ziemlich alle gängigen
AVRs,nich nur den Atmega48.Wichtig is nur,das du kompatible
Programmier-Hardware hast.Gruss,

Ronny

von Michael U. (Gast)


Lesenswert?

Hallo,

ein Blick in die Datenblätter (bei www.atmel.com zu finden) zeigt, daß
es nur einen ATmega48 gibt.
Alle Erweiterungen der Bezeichnungen sind nur Kennzeichen für
Spannungsbereich, Taktfrequenz usw.
Register, I/O, Flash, Ram, EEPROM usw sind bei gleicher
Grundbezeichnung also identisch, damit also auch die include-Files.

Gruß aus Berlin
Michael

von Lukas (Gast)


Lesenswert?

ok, vielen Dank ersteinmal!

Die m48def.inf habe ich gefunden.

eine in \AvrAssembler2\Appnotes
und eine in \AvrAssembler\Appnotes

welche muss ich nehmen?

Ich habe die m48def.inf einfach in den ordner kopiert, in dem ich auch
die .asm datei und so gespeichert habe, trotzdem sagt er, das er die
datei nicht fnden würde. Habe ich etwas falsch gemacht?

Danke für die hilfe!

von Ronny (Gast)


Lesenswert?

Kopieren musst du nix,den richtigen Dateinamen angeben reicht schon,wenn
alles richtig installiert ist ;)

m48def.INC (nicht inf)

Der Assembler der grad aktiv ist (sollte Version2 sein) findet dann
automatisch das richtige File.Wenn du das File ins Projektverzeichnis
kopierst handelst du dir maximal Probleme ein,wenn irgendwann ein
Update vom AVR-Studio das File aktualisiert.Dann würde nämlich unter
Umständen weiter das alte verwendet werden.

Poste doch einfach mal die Zeilen,in denen du die Dateien includest

von Lukas (Gast)


Angehängte Dateien:

Lesenswert?

ok, nun funtzt es! im dateianhang mal der code!

Ich habe mal das prog simuliert, aber es hat nicht so gefuntzt , wie es
soll. müsste nicht DDRB nun 0xFF sein?

gruß Lukas

von johnny.m (Gast)


Lesenswert?

Warum denn? an DDRB ändert sich doch nichts! Wenn Du 'PORTB' anstelle
von 'DDRB' meintest: An PIND herrscht undefiniertes Potential, da Du
die Pull-Ups nicht aktiviert hast. So wie es aussieht interpretiert der
Simulator das als '0'. In der Realität dürfte da was undefiniertes
rauskommen. Wenn Du Taster einlesen willst, grundsätzlich die Pull-Ups
aktivieren (und die Taster natürlich Low-Side anschließen, sonst kommt
gar nix raus).

Gruß

Johnny

von Lukas (Gast)


Lesenswert?

moment, also DDRB gibt ja an, welcher pin von port B ein einagns Pin
oder ein Ausgangspin ist. In der zwiten zeile steht ja das hier:

ldi r16, 0xFF
out DDRB, r16

also müsste das value von DDRB, welches ich ja bei der simulation bei
"IO ATMega48\PortB" nachschauen kann, 0xFF sein. Dort steht aber
0X00

das heißt, das der Komplette Port B als seigang geschaltet ist, oder
habe ich da etwas falsch verstanden?

von johnny.m (Gast)


Lesenswert?

Nach abarbeiten der Anweisung müsste da auch 0xFF stehen. Da das trivial
ist, hatte ich Deine Fragestellung nicht richtig verstanden. Ich bin
davon ausgegangen, dass sie sich auf das bezog, was weiter unten steht
(einlesen von PIND usw.).

von Lukas (Gast)


Lesenswert?

Und warum ist DDRBdenn nicht 0xFF?

Wenn es 0xFF wäre, und ich nun das value von pinD durch aktiviren der
checkboxen 0xFF wird, sollte das value von port B  dann doch auch 0xFF
werden, oder?

von johnny.m (Gast)


Lesenswert?

Also ich habe es grad mal ausprobiert und es funktioniert tadellos.
Sobald die Anweisung abgearbeitet ist, sind alle Felder in DDRB
schwarz.

von Karl heinz B. (kbucheg)


Lesenswert?

> Und warum ist DDRBdenn nicht 0xFF?

Wie simulierst Du?

Wenn du das Programm im Simulator einfach nur laufen
lässt, wird die Anzeige vom Simulator nicht mitgezogen.

Du musst das Programm mit Einzelschritten durchsteppen
(F10 macht das) oder mittels 'Auto-Trace' laufen lassen,
nur dann stimmt die Anzeige.

von Lukas (Gast)


Lesenswert?

aaaah, ich habe mit step into (F11) gearbeitet, also vielen dank!

sollte ich denn pull-Up trotzdem verwenden? Wie aktiviere ich das denn?

von johnny.m (Gast)


Lesenswert?

Schau bitte mal ins Datenblatt und / oder ins Tutorial auf dieser Seite.
Da steht eigentlich alles, was man beim Anschluss von Tastern usw.
beachten muss. Das ist echtes Grundlagenwissen...

von Karl heinz B. (kbucheg)


Lesenswert?

Step Into sollte allerdings auch gehen.
Der Unterschied zwischen F10 und F11 ist nur der,
dass der Simulator bei einem 'CALL'-Befehl (Unterprogramm-
Aufruf) bei einem Step-Into in das Unterprogramm hineinsteppt,
während er bei einem normalen Step as UP komplett ausführt
und sich wieder meldet, wenn das UP zurückkehrt.

Pull-Up bei den In-Ports ist immer gut. Den aktivierst
du indem du an den Input Port eine Ausgabe machst. Jedes
1-Bit, dass du ausgibst aktiviert den entsprechenden Pull-up.

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.