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!?!!
Sollte es sie nicht finden, bekommst du eine Fehlermeldung.
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
Ach ja: der ATmega88 hat gar keinen ADC. Schon bei der Hardwareprüfung duchgefallen ... 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.pdf gerd 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
Oliver schrieb: > hat der .... einen ADC, wie alle anderen MEgas > auch. Nein, mindestens der Atmega32U2 hat keinen. wendelsberg
Bei Mega88 muss lds&sts nutzen statt in&out Edit: nicht immer, aber oft
:
Bearbeitet durch User
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
:
Bearbeitet durch User
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.