Hallo
ich bin zur Zeit Assembler für die 8 Bit AVRs am erlernen.
Dafür gibt es zum Glück einige brauchbare Tutorials und Erklärungen
welche sich gut ergänzen.
Da aber meistens ein ATtiny 13 oder ATmega8, ATmega32 oder manch mal
auch der ATmega 328 verwendet werden sind die Tutorials und Erklärungen
fast durchgehend schon einige Jahre alt was rein von der
Assemblervermittlung aber kein Problem ist.
Aber die eingesetzten Programme für die einzelnen Schritte sind in
diesen Tutorials teilweise recht veraltet und mittlerweile unnötig
aufwendig in der Anwendung.
Zum Glück gibt es aber auch das Atmel Studio, auch schon wo diese
älteren Tutorials erstellt wurden - und Dank des AVRISP mkII und der
seit einigen Jahren "normalen" Rechnerleistung funktioniert das Programm
auch problemlos.
Nach dieser langen Vorrede meine "Frage"
Mindestens bis einschließlich Atmel Studio 4 war es notwendig im
eigentlichen Assemblerprogramm die include Datei des jeweiligen AVR
einzubinden, entsprechendes ist auch in "jeden" Tutorial erwähnt.
Aber mindestens seit Atmel Studio 7 ist das nicht mehr notwendig, es
darf sogar nicht im Assemblerprogramm eingebunden werden, was ich aber
erst durch (für mich anfangs) kryptische Fehlermeldungen und etwas Trail
und Error herausfinden musste.
In irgendeinen Tutorial bzw. Internetauftritt wurde das irgendwo so
"nebenbei" kurz erwähnt.
Meine Frage: Wo und wie bindet Atmel Studio 7 jetzt diese include Datei
automatisch ein, und kann man das einfach (Häckchen setzen, löschen)
abstellen, da natürlich die Assemblerdirektive .list bzw. .nolist nicht
mehr vernünftig zu gebrauchen ist und wenn .list "eingeschaltet" ist
natürlich immer auch die ganze include datei des jeweiligen Controllers
gesichert wird.
mfg
Assembel_Newboy
Ergänzung:
Da das Forum so ist wie es ist:
Bitte keine Grabenkämpfe bezüglich des Atmel Studios und dessen Version
oder warum 8Bit µC heute nicht mehr oder vielleicht doch sinnvoll sind,
welche Programmiersprache die einzig Wahre ist und vor allem nicht über
die art und weise wie ich lerne.
Leider muss man solch freche und bissige Ansagen hier machen, meine
Entschuldigung geht in voraus an die netten Forennutzer die auf
gestellts Fragen antworten, freundlich (!) auf Fehler oder fehlende
Informationen hinweisen bzw. Anschlussfragen stellen.
Danke
Assembel_Newboy schrieb:> Wo und wie bindet Atmel Studio 7 jetzt diese include Datei> automatisch ein
Im Projekt wird doch der Controller angegeben.
Assembel_Newboy schrieb:> Aber mindestens seit Atmel Studio 7 ist das nicht mehr notwendig, es> darf sogar nicht im Assemblerprogramm eingebunden werden, was ich aber> erst durch (für mich anfangs) kryptische Fehlermeldungen und etwas Trail> und Error herausfinden musste.
Nicht unbedingt. Im Falle des Falles einfach auskommentieren.
Hallo
Danke, aber das war mir schon klar bzw. ich lösche einfach die .include
Direktive im Assemblerprogramm.
Ich würde aber trotzdem gerne wissen wo und wie jetzt das Studio die
*.include einbindet (klar wenn ich beim Projekt erstellen den Controller
wähle) aber irgendwas muss ja im Hintergrund gesehen was zumindest in
der Version 4 der Studios noch nicht der Fall war, wo kann ich das sehen
bzw. wo "versteckt" das Studio diese Direktive den irgendwo muss ja
trotzdem die richtige include Datei beim Build ausgewählt sein
(ansonsten würden ja nicht die Fehlermeldungen kommen wenn diese doppelt
eingebunden wird).
Und das "Problem" (ja mit copy und paste und löschen der störenden
include in irgendeinen Texteditor geht das irgendwie aber schön ist
anders vor allem weil das Studio eigentlich alles bietet) mit der .list
bzw. .nolist direktive bleibt ja.
Trotzdem Danke
Assembel_Newboy
Wenn du ein neues Projekt erstellt klickst du dich doch durch, also
welcher µC, welcher Ordner, Projektname...
ich würde es aber auch im Programm reinschreiben und ; voransetzten,
damit man den Quelltext ggf. auch mit einem älterem AVR-Studio
übersetzen kann.
Assembel_Newboy schrieb:> und etwas Trail und Error
------------^^^^^^----------
Trail: Spur, Pfad, Weg, Fährte, Schwanz
Welches soll man nehmen um das zu verstehen?
Stolpersteine schrieb:> Trail: Spur, Pfad, Weg, Fährte, SchwanzStolpersteine schrieb:> Häckchen --> kleine Hacke
Genau das unterscheidet halt einen Leser, der die Transferleistung von
Trail nach Trial und Häckchen nach Häkchen vollenden kann, von einem
Stolperstein. Derjenige, der es nicht schafft, muss halt weiter im
Dunkeln tappen und kann leider nichts zum Thema beitragen.
Thomas O. schrieb:> Wenn du ein neues Projekt erstellt klickst du dich doch durch, also> welcher µC, welcher Ordner, Projektname...
Hi,
und auf dem richtigen Laufwerkspfad des programmierenden PC.
Da gibt/gab es böse Überraschungen sonst.
Je nachdem, wo Atmel-Studio installiert wurde:
Einmal steht die Definitionsdatei auf
C:>Prog\...\AVRAssembler2\Appnotes
und einmal auf
C:>ProgX86\...\AVRAssembler\Appnotes
Beim Assemblieren kommt unten "no errors no warnings" da etwas
hochscrollen:
Da steht dann der momentan verwendete Pfad:
C:\Users\xxx\Documents\aaa.asm(101): Including file 'C:\Program Files
(x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\4434def.inc'
ciao
gustav
Ob Du nun dauernd ein (mir unbekanntes) Häkchen setzt oder mit einem
simplen Semikolon steuerst dürfte vom Aufwand her egal sein.
Meinem aktuellen Mega128 Studio7 Projekt ist es gerade egal ob der
Controller mit Include von "m128def.inc" dann quasi doppelt vorgegeben
wird oder nicht. Fehlermeldungen treten dabei nicht auf. Ich würde auf
jeden Fall aber mal auf die aktuelle Version 7.0.2389 bzw. im Device
Pack Manager updaten.
Hallo
Danke dafür das ihr euch alle so anstrengt, vor allem am Moderator für
den entsprechenden Kommentar (was muss man eigentlich noch alles
erwähnen?- Siehe meinen zweiten Post - um gewisse "hilfreichen"
Kommentare zu verhindern...).
Aber alles was ihr an sinnvollen Kommentaren und Hilfestellungen gegeben
habt ist mir eigentlich bekannt und erklärt leider nicht was ich gerne
verstehen und wissen möchte:
Vielleicht bringt es etwas wenn ich anders frage:
Wie und wo bindet (lädt, fügt zu...) das Studio in der Version7 bei der
Auswahl des gewünschten Controllers wie z.B. den ATtiny 13A die include
Datei den in das Projekt ein. Was und wie geschieht da zusätzlich im
Hintergrund was zumindest bis einschließlich der Version 4 nicht gemacht
wurde.
Irgendwo muss ja der die Assemblerdirektive .include ersetzt werden bzw.
"versteckt" hinterlegt sein
Aber wo den nun? - Spätestens beim assemblieren muss der eigentliche
Assembler doch mitgeteilt bekommen welches *.inc File er einbinden muss
- also muss diese Direktive (Eventuell dann streng genommen
Steuerbefehl, Verlinkung...) ja irgendwo "verbunden", also mit den
Quellcode verknüpft (zugeordnet?) sein?!
Ja alles nicht wirklich wichtig und für das erlernen der
Assemblersprache nicht wichtig, aber trotzdem möchte ich es wissen, vor
allem weil andere Assemblerprogramme (damit meine ich jetzt die
Programme welche den Assemblerquellcode in die Maschinensprache und den
*.hex code wandeln) die .include Direktive im Assemblerquellcode auf
jeden Fall benötigen.
Assembel_Newboy
Hallo
"Ich würde auf jeden Fall aber mal auf die aktuelle Version 7.0.2389
bzw. im Device Pack Manager updaten."
Das hört sich gut an und ich werde das mal machen.
Bei dir scheint es ja zu funktionieren.
Danke
Assembel_Newboy schrieb:> Bei dir scheint es ja zu funktionieren.
Ich kenne diese missverständlichen Fehlermeldungen durchaus auch aus der
Vergangenheit.
Assembel_Newboy schrieb:> Irgendwo muss ja der die Assemblerdirektive .include ersetzt werden bzw.> "versteckt" hinterlegt sein> Aber wo den nun?
Ich würde annehmen daß das Projektfile-gesteuert vom Programmcode selber
veranlasst wird. Also ohne Einflußmöglichkeit von außen. Aber wie Du
schon sagst
Assembel_Newboy schrieb:> alles nicht wirklich wichtig
Hallo
"Das hört sich gut an und ich werde das mal machen."
-Hat leider nicht gebracht, außer das das Studio auf den neusten Stand
ist...
Wobei das update eher eine Neuinstallation ist, zumindest vom
Zeitaufwand...
Wenn das bei jeden Programm so wäre - dann gute Nacht ;-)
Das Update war übrigens nur von 7.0.1417 auf 7.0.2389 - so gut das
Studio auch eigentlich ist - beim Upate müsste sich Atmel bzw. Microchip
bzw. dessen Dienstleister so langsam was einfallen lassen - das müsste
doch deutlich schneller und sparsamer gehen...
Ansonsten: Auskommentieren oder weg löschen ist halt die Lösung - dumm
nur wenn das in den überwiegend nun mal älteren Tutorials gar nicht
stehen kann und es wirklich aktuelle Einsteigertutorials in die
Assemblerprogrammierung für 8 Bit AVRs in deutscher Sprache irgendwie
nicht zu geben scheint...
Als vollkommener Neueinsteiger der noch nie einen µC Programmiert hat
geschweige den eine solch komplexe IDE genutzt hat (welche sich auch
sehr stark von Version zu Version geändert hat) ist dann leider erst mal
aufgeschmissen.
Hoffentlich lernt Google diesen Thread kennen und die Neueinsteiger mit
ähnlichen Problem wird hiermit ein wenig geholfen.
Noch besser wäre es natürlich wenn das irgendwie die Ersteller der
Deutschsprachigen, an Anfänger gerichteten Tutorials das mit bekommen
würden und entsprechende Hinweise einpflegen würden.
Danke für eure Hilfe und Hinweise - auch wenn es letztendlich nicht das
gebracht hat was ich gerne hätte...
Wie gesagt, wenn du unter Atmel Studio 7 ein neues Assembler-Projekt
anlegst, wirst du nach Angabe von Projektnamen und Projektverzeichnis
gefragt, welches der Zielprozessor sein soll.
Atmel Studio hält diesen dann nicht in der Quelldatei, sondern in der
Projekt-Datei fest, genau genommen in der Datei *.componentinfo.xml mit
vollständigem absolutem Pfad für die zugehörige include-Datei (falls
dich das interessiert).
Das muss dich aber nicht weiter kümmern, denn du kannst das bei Bedarf
auch im Solution Explorer sehen (nämlich unter Dependencies) und die
zugehörige include-Datei (aber auch alle anderen, z. B. nach dem
erfolgreichen Assemblieren jene unter "Output Files") per Doppelklick
jeweils in ein eigenes Atmel-Studio-Fenster holen.
Wenn du irgend ein anderes Quellprogramm in das neu erstellte
main.asm-Fenster kopierst und dort eine include-Angabe für den
verwendeten Prozessor gemacht ist, die sich von jener im Solution
Explorer unterscheidet, sollest du sie löschen, da sie möglicherweise
nicht aktuell bzw. nicht im vorgegebenen Pfad von Atmel Studio 7 zu
finden ist.
Falls es derselbe include-Name (mit doppeltem Hochkomma) ist, kannst du
ihn für bessere Übersicht auch im main.asm stehen lassen.
Wenn du aber eine include-Datei für einen Zielprozessor angibst, der
nicht unter Dependencies aufgeführt aber gültig ist, erzeugt dieser
Konflikt beim Assemblieren eine lange Liste mit Fehlermeldungen. Dann
musst du diese include-Datei zwingend löschen oder auskommentieren.
Viel Spaß beim AVR-Assembler-Programmieren - ernsthaft!
Hi, es ist ein xml File noch nötig.
Die .inc alleine reicht nicht.
AVrasm object.xml
guck da mal rein. dann siehst Du es.
Framework ist das Zauberwort.
ciao
gustav