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?
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
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
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!
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
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
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
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?
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.).
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?
Also ich habe es grad mal ausprobiert und es funktioniert tadellos. Sobald die Anweisung abgearbeitet ist, sind alle Felder in DDRB schwarz.
> 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.
aaaah, ich habe mit step into (F11) gearbeitet, also vielen dank! sollte ich denn pull-Up trotzdem verwenden? Wie aktiviere ich das denn?
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.