Hallo,
ich möchte gerne dieses Projekt hier mit Atmega8 aufbauen:
http://www.avr-asm-tutorial.net/avr_de/rechteckgen/rectgen_m8.html
Hier der gezippte Assembler-Quellcode:
www.avr-asm-tutorial.net/avr_de/rechteckgen/rectgen_src.zip
Ist es möglich, den Quellcode mit dem AVR-Studio4 zu compilieren und
wenn ja, wie muss man vorgehen?
Der Quellcode besteht aus zwei INC-Dateien und einer ASM-Datei.
Nehme an, dass man ein neues ASM-Projekt im AVR-Studio starten muss und
dass der Inhalt der ASM-Datei ins Texteditor-Fenster gehört.
Dann muss man noch "irgendwie" die beiden INC-Dateien einbinden?!?
Liege ich da so weit schon mal richtig?
Viele Grüße
Holm schrieb:> Dann muss man noch "irgendwie" die beiden INC-Dateien einbinden?!?
Dann lies dir doch einfach einmal das ASM File durch, nur lesen, ganz
verstehen musst du es nicht einmal. Bestimmt fallen dir dann die
"include" Anweisungen auf.
Georg G. schrieb:> Bestimmt fallen dir dann die> "include" Anweisungen auf.
Dann leite ich daraus ab, dass es reicht, die beiden INC-Dateien im
Projektordner unterzubringen, wo auch die ASM-Datei abgespeichert ist
und dass das AVR-Studio sie dort auch ohne weitere Hinweise findet!?!!
Hi
>Dann leite ich daraus ab, dass es reicht, die beiden INC-Dateien im>Projektordner unterzubringen, wo auch die ASM-Datei abgespeichert ist>und dass das AVR-Studio sie dort auch ohne weitere Hinweise findet!?!!
Wenn du den Assembler2 des 4er Studios benutzt, bracht sich die
m8def.inc nicht im Projektverzeichnis befinden. Die wird automatisch
gefunden.
MfG Spess
spess53 schrieb:> Wenn du den Assembler2 des 4er Studios benutzt, bracht sich die> m8def.inc nicht im Projektverzeichnis befinden. Die wird automatisch> gefunden.
Danke für die Info!
Assembler2 sagt mir auf Anhieb nichts.
Wie, und das AVR Studio 4 sucht notfalls den ganzen Rechner nach der
Datei m8def.inc ab???
Hi
>Assembler2 sagt mir auf Anhieb nichts.
Siehe Anhang.
>Wie, und das AVR Studio 4 sucht notfalls den ganzen Rechner nach der>Datei m8def.inc ab???
Nein. Die xyzdef.inc-Dateien gehören zum AVR Studio und befinden sich im
AVR Studio Verzeichnis unter AVRASSEMBLER2\APPNOTES.
MfG Spess
Du darfst ruhig in die Include-Anweisung deinen Lieblingspfad einbauen.
Normal ist aber, das aktuelle Verzeichnis oder ein in der Umgebung
(Environment auf Auswärts) definierter Pfad.
Hallo.
Der asm-Quellcode ruft drei Include-Dateien auf:
- die Typdefinition m8def.inc (die findet sich im oben genannten
Verzeichnis des Studios, den Pfad weiß das Studio von selber),
- eine Frequenztabelle mit den Teilerwerten,
- die LCD-Routinen.
Die beiden letzteren sollten im gleichen Verzeichnis wie die asm-Datei
liegen, dann werden sie ohne Weiteres vom Assembler gefunden.
Liegen sie da nicht, sondern woanders, dann kann man den ganzen Pfad
dahin in die .INCLUDE-Angabe mit aufnehmen, also etwa so:
.INCLUDE "C:\Mein\Lieblingsfad\Nach\Irgendwo\MeinLieblingsTeil.inc"
Von irgendwelchen anderen Methoden kann man nur abraten, das ist zwar
seit seligen DOS-Zeiten so üblich, aber nicht so arg transparent.
mfg
gerd
Hi
>Liegen sie da nicht, sondern woanders, dann kann man den ganzen Pfad>dahin in die .INCLUDE-Angabe mit aufnehmen, also etwa so:
Im AVR Assembler2 lässt sich unter Project->Assembler
Options->Additional include path ein Verzeichnis angeben, das ebenfalls
automatisch abgesucht wird.
MfG Spess
Danke für die vielen Antworten!
Könnte man eurer Einschätzung nach eigentlich auch einen Atmega88 für
das Projekt benutzen, wenn man dies dem Compiler mit der entsprechenden
INCLUDE-Datei mitteil?
Oder müsste dann der Programm-Code an manchen Stellen entsprechend
angepasst werden?
(Habe noch einige Atmega88 vorrätig, den Atmega8 müsste ich extra
bestellen)
Das Problem lässt ich selbstverständlich nur und auschliesslich mit
einem AtMega8 lösen ;)
Natürlich kannst du dafür auch einen 88er nehmen. Ja, du musstd as
Programm anpassen, aber das ist für jemanden, der den 88er schon kennt,
kein Problem.
Oliver
... Umschreiben dürfte kein Problem sein ...
Vorsicht mit solchen einfachen Ratschlägen. Schon ein Blick auf die
Interrupt-Vektortabelle von ATmega8 und 88 zeigt, dass da so gut wie nix
übereinstimmt ausser INT0 und INT1. Da im Rechteckgenerator zwei
Interrupts benutzt werden, ist mit einfachem Austauschen der def.inc
Sense.
Tauscht man einen gegen einen anderen,
- muss die Hardware und noch genauer: deren benutzte Funktionen
übereinstimmen,
- die Ints und Vektortabelle überprüft/angepasst werden,
- der Takt übereinstimmen oder übereinstimmend gemacht werden,
- bei einigen sind auch noch noch einzelne Symbole mit anderen Namen
versehen.
Mit dem Satz "hatte ich noch so rumliegen" fangen oft arg lange
Debugging-Sitzungen an. Dagegen dürfte so ein Bestellvorgang bei einem
Versender wesentlich einfacher sein und weniger Fallen aufweisen.
mfg
gerd
gerd schrieb:> Vorsicht mit solchen einfachen Ratschlägen. Schon ein Blick auf die> Interrupt-Vektortabelle von ATmega8 und 88 zeigt,
daß es dort Unterschiede gibt, durch die man das Programm anpassen muß
Die Register heissen auch anders, usw.
Na und?
Das ist kein Hexenwerk, und in ein paar Minuten erledigt. Das wichtigste
dabei ist, die Datenblätter zu Rate zu ziehen.
Dazu schreibt Atmel dann sogar alles wissenswerte in ein Dokument:
http://www.atmel.com/images/doc2553.pdfgerd schrieb:> Ach ja: der ATmega88 hat gar keinen ADC. Schon bei der Hardwareprüfung> duchgefallen ...
Blafusel...
Wie bei allem in diesem Bereich gilt Dieter Nuhr und RTFM.
Selbstverständlich hat der Mega88 einen ADC, wie alle anderen MEgas
auch.
Oliver
Wer mit der Frage kommt, wie er von meiner Webseite heruntergeladenen
fertigen Quellcode assemblieren kann, dürfte kaum zu der Sorte Mensch
gehören, die versiert Interrupttabellen umstellen und schon alle
Fallstricke der AVR-Typen kennen.
gerd
Na ja, mancher wächst mit seinen Aufgaben.
Der Mega88 ist zum Mega8 funktionell abwärtskompatibel und auch
pinkompatibel.
Einfach Abschnitt für Abschnitt das Atmel-Dokument durchgehen, und die
nötigen Änderungen anwenden:
http://www.atmel.com/images/doc2553.pdf
Zwischendrinn das Programm mal wieder durch den Assemlber schicken, und
auch dessen Fehlermeldungen nutzen.
Die Register heissen im Mega88 anders, die folgen dem neueren
Atmel-Namensschema mit Modulnummer im Namen (z.B. UDR0 statt UDR).
Ähnlich sieht es bei den Bitnamen aus. Die Funktionalität ist aber
meistens 1:1 die gleiche, wenn nicht (z.B. bei der USART), steht es im
Dokument.
Mittles des o.a. Atmel-Dokuments, den Datenblättern, und einem guten
Editor per "suchen/ersetzen" lässt sich die umbenannten Register schnell
erledigen.
Etwas Aufmerksamkeit erfordern "umgelegte" Bits in den Controlregistern.
Aber auch da hilft die Suchfunktion im Editor, keine zu übersehen.
Eine neue Interrupt-Vectortabelle anlegen ist ja nun auch kein Problem,
die kopiert man sich aus dem Datenblatt.
Am Ende noch die Fuses für den 88er raussuchen, fertig.
Das ganze ist ja eher eine Fleißarbeit, und sollte keine halbe Stunde
dauern.
Oliver