Ich habe ein Assembler-Programm für einen ATtiny13 das auch super
funktioniert. Das Programm bindet eine Datei "ringtones.inc" ein. Diese
Datei enthält Klingeltöne im Nokia RTTTL Format, allerdings passen in
der ATtiny13 nur 2 Klingeltöne rein. Ich habe deshalb versucht, das
Programm auf den ATtiny45 zu portieren. Allerdings scheint es nicht
damit getan zu sein, in Zeile 2 die Definition anzupassen. Kann mal
jemand von euch drübergucken und mir sagen, was ich sonst noch ändern
muss? Ich habe von Assembler keine Ahnung.
Ergänzung:
Ich bekomme von Microchip Studio 3 Fehlermeldungen geliefert:
Hallo,
die nachfolgend hinzu gefügte Fehlermeldung zeigt unbekannte
Registernamen an.
Man nimmt sich also beide Datenblätter.pdf beider µCs her, schaut in die
Registertabelle und prüft, ob der "neue" µC etwa ähnliche Registernamen
hat und wenn ja, ändert man diese im Quelltext auf die neuen Namen ab.
Zusätzlich muß die Interrupttabelle angepaßt werden auf den "neuen" µC.
beispielsweise sieht diese beim At13 so aus:
If the program never enables an interrupt source, the Interrupt Vectors
are not used, and
regular program code can be placed at these locations. The most typical
and general
program setup for the Reset and Interrupt Vector Addresses in ATtiny13
is:
1
Address Labels Code Comments
2
0x0000 rjmp RESET ; Reset Handler
3
0x0001 rjmp EXT_INT0 ; IRQ0 Handler
4
0x0002 rjmp PCINT0 ; PCINT0 Handler
5
0x0003 rjmp TIM0_OVF ; Timer0 Overflow Handler
6
0x0004 rjmp EE_RDY ; EEPROM Ready Handler
7
0x0005 rjmp ANA_COMP ; Analog Comparator Handler
8
0x0006 rjmp TIM0_COMPA ; Timer0 CompareA Handler
9
0x0007 rjmp TIM0_COMPB ; Timer0 CompareB Handler
10
0x0008 rjmp WATCHDOG ; Watchdog Interrupt Handler
11
0x0009 rjmp ADC ; ADC Conversion Handler
12
;
13
0x000A RESET: ldi r16, low(RAMEND); Main program start
________________________________________________
Diese also ersetzen durch diejenige des "neuen" µCs. Ich bin allerdings
seit Jahren aus diesen Theman raus und mir ist die Zeit zu knapp. Viel
Erfolg.
mfg
[Mod: code-Tags eingefügt]
H. H. schrieb:> Hans S. schrieb:>> EEAR>> TIMSK0>> Die heißen dann EEARL bzw TIMSK.
Danke, damit läuft das Build nun ohne Fehlermeldung durch. Allerdings
funktioniert das Programm noch nicht. Es sieht so aus, als ob es nicht
gestartet würde. In main.asm sind nun folgende Zeilen grün markiert:
1
.INCLUDE "TN45def.inc"
2
...
3
OUT TIMSK,R16
4
...
5
unter READROM:
6
OUT EEARL,R16
7
...
8
unter WRITEROM:
9
OUT EEARL,R16
10
...
11
rjmp start
Also die Zeilen, die ich geändert habe und die letzte (rjmp start).Was
bedeutet die grüne Markierung? Muss ich die letzte Zeile mit der start
Anweisung auch noch ändern?
[Mod: code-Tags eingefügt]
Ganz so einfach wird es nicht werden; z.B. ist die Frequenz des
'Calibrated Internal Oscillator' verschieden.
Nur aus allgemeinem Interesse: wie sieht dieses 'ringtones.inc' aus?
Hans S. schrieb:> Allerdings> funktioniert das Programm noch nicht.
Meine Idee:
das Include file "ringtones.inc" einmal direkt ausformuliert eingeben.
Die Reihenfolge, wie Programmschnipsel eingegeben werden müssen, ist
auch wichtig. Und, steht das File auch auf derselben Directory, damit
der Programmer das auch findet?
Zum Beispiel klappt bei mir "lcdroutines.inc" nicht. Ich muss die
LCD-Routinen ausformulieren, Befehl für Befehl. Dann gehts.
ciao
gustav
S. L. schrieb:> Ganz so einfach wird es nicht werden; z.B. ist die Frequenz des> 'Calibrated Internal Oscillator' verschieden.>> Nur aus allgemeinem Interesse: wie sieht dieses 'ringtones.inc' aus?
So:
Karl B. schrieb:> Hans S. schrieb:>> Allerdings>> funktioniert das Programm noch nicht.> Meine Idee:> ...> Und, steht das File auch auf derselben Directory, damit> der Programmer das auch findet?
Ja, ist im selben Verzeichnis wie main.asm und wenn ich das Programm für
den tiny13 kompiliere wird es ohne Fehlermeldung eingebunden.
H. H. schrieb:> Welche Fuses sind denn gesetzt?
Nur die, die standardmäßig bei den µCs gesetzt sind.
Ext 0xFF
HIGH 0xD7
LOW 0xE2
beim tiny45
und
HIGH 0xFF
LOW 0x2A
beim tiny13
Habe Prog kurz ins Studio 4 kopiert:
C:\Users\admin\Documents\Tone_x.asm(279): error: Undefined symbol:
OCTAVE6
Die Teile vom ringtone sind noch nicht drin.
und epromsegment fehlt noch.
Sonst keine Fehlermeldungen
Und EEAR Durch EAARL ersetzt Danke Hinz!
ciao
gustav
Hans S. schrieb:> LOW 0xE2> beim tiny45
Prozessor läuft mit 8MHz.
> LOW 0x2A> beim tiny13
Und der mit 1,2MHz.
Und man wird die Interrupts anpassen müssen.
Karl B. schrieb:> Habe Prog kurz ins Studio 4 kopiert:> C:\Users\admin\Documents\Tone_x.asm(279): error: Undefined symbol:> OCTAVE6>> Die Teile vom ringtone sind noch nicht drin.> und epromsegment fehlt noch.> Sonst keine Fehlermeldungen> Und EEAR Durch EAARL ersetzt Danke Hinz!>> ciao> gustav
Fehlermeldungen hatte ich ja auch nicht und das mit der OCTAVE6 wird
erledigt sein wenn die ringtone drin ist. Trotzdem funktioniert es
nicht. Ich frage mich auch, ob EEARL wirklich richtig ist. Nach
Datenblatt tiny13 gibt es das da nämlich auch.
Hans S. schrieb:> Ich frage mich auch, ob EEARL wirklich richtig ist. Nach> Datenblatt tiny13 gibt es das da nämlich auch.
25.9 Rev. 2535B-01/04:
14. Changed instances of EEAR to EEARL.
H. H. schrieb:> Hans S. schrieb:>> Ich frage mich auch, ob EEARL wirklich richtig ist. Nach>> Datenblatt tiny13 gibt es das da nämlich auch.>> 25.9 Rev. 2535B-01/04:> 14. Changed instances of EEAR to EEARL.
Gefunden! Heißt das, dass ich einen alten ATtiny13 habe? Oder würde der
auch mit EEARL funktionieren?
H. H. schrieb:> Hans S. schrieb:>> Heißt das, dass ich einen alten ATtiny13 habe?>> Nein, nur stammt dein Programm aus älteren Tagen.
Ja, das stimmt! Genauer gesagt: aus 2009
Aber heißt das, dass ich das auf den tiny13 auch mit EEARL flashen
könnte? Das würde bedeuten, dass Studio7 beide Anweisungen verarbeiten
könnte.
Ich bitte die Beteiligten, Code auch in [ code ] .... [ /code ] (ohne
Leerzeichen in den Tags) einzupassen. Auf Mobilgeräten mit
Proportionalfont wird sonst alles in eine Zeile geklatscht und damit
unlesbar.
Ich habe die obigen Beiträge angepasst.
Danke.
Frank M. schrieb:> Ich bitte die Beteiligten, Code auch in [ code ] .... [ /code ] (ohne> Leerzeichen in den Tags) einzupassen. Auf Mobilgeräten mit> Proportionalfont wird sonst alles in eine Zeile geklatscht und damit> unlesbar.>> Ich habe die obigen Beiträge angepasst.>> Danke.
Danke, ich hatte nicht gefunden, wie das geht.
H. H. schrieb:> Hans S. schrieb:>> LOW 0xE2>> beim tiny45>> Prozessor läuft mit 8MHz.>>>> LOW 0x2A>> beim tiny13>> Und der mit 1,2MHz.>>> Und man wird die Interrupts anpassen müssen.
Wie müssen denn die Interrupts angepasst werden? Die ringtones.inc kann
ich mit der richtigen Oszillatorfrequenz im converter-utility erzeugen.
Beim tiny45 habe ich testweise auch mal LOW 0x2A geflasht mit dem
"Erfolg", dass ich nicht mehr auf ihn zugreifen konnte und ich ihn über
HV Programmierung zurücksetzen musste.
Hans S. schrieb:> den tiny13 auch mit EEARL flashen
Der merkt doch gar nichts davon. Der Unterschied ist lediglich die
Schreibweise in der TN13def.inc.
H. H. schrieb:> Hans S. schrieb:>> Beim tiny45 habe ich testweise auch mal LOW 0x2A geflasht>> Nur das CLKDIV8 einschalten.
Das ist eingeschaltet:
LOW.CKDIV8 hat ein Häkchen
Hans S. schrieb:>> Nur das CLKDIV8 einschalten.> Das ist eingeschaltet:> LOW.CKDIV8 hat ein Häkchen
Dann stimmt aber das hier nicht:
Hans S. schrieb:> LOW 0xE2> beim tiny45
H. H. schrieb:> Dann stimmt aber das hier nicht:>> Hans S. schrieb:>> LOW 0xE2>> beim tiny45
Du hast recht, das stimmt nicht, ist LOW 0x62 (Ablesefehler)
S. L. schrieb:> Versuchen Sie einmal dies hier - ein Versuch wär's wert ...>> PS:> Zu Beginn 'TN85def.inc' durch 'TN45def.inc' ersetzen.
Kompilieren läuft durch ohne Fehler aber es funktioniert leider auch
nicht.
Was ausgesprochen merkwürdig ist, denn es wird 'ringtones.inc'
eingebunden, und dort steht ".eseg" drin.
Was passiert, wenn Sie meine beiden Dateien übertragen?
S. L. schrieb:> Um Assemblier- oder ganz allgemein IDE-Fehler auszuschließen, hier meine> Dateien.
Mit den Dateien dudelt es bei mir auch. Ich möchte aber noch mehr
Ringtones einbinden, also müsste ich auch das mit dem Assemblieren hin
bekommen...
H. H. schrieb:> Hans S. schrieb:>> Die .eep Datei wird bei mir überhaupt nicht angelegt.>> Zeig deine Projektdatei (*.aps).
*.aps habe ich nicht sondern .asmproj
Nur um sicherzugehen: Sie hatten mein 'ncs.asm' in 'RTTTL.asm'
umbenannt?
Bekommen Sie keine Größen angezeigt, also für .cseg (flash) 3472 und
.eseg (EEPROM) 60?
Warnings mit "padding zero byte" bekomme ich auch, zwölf mal, das ist
ohne Belang.
S. L. schrieb:> Nur um sicherzugehen: Sie hatten mein 'ncs.asm' in 'RTTTL.asm'> umbenannt?>> Bekommen Sie keine Größen angezeigt, also für .cseg (flash) 3472 und> .eseg (EEPROM) 60?>> Warnings mit "padding zero byte" bekomme ich auch, zwölf mal, das ist> ohne Belang.
Ja, hatte ich umbenannt und ich bekomme keine Größen angezeigt.
Hans S. schrieb:> H. H. schrieb:>> Hans S. schrieb:>>> *.aps habe ich nicht sondern .asmproj>>>> Kenne ich nicht, muss jemand anders ran.>> Womit machst du das denn?AVR Studio 4.19
H. H. schrieb:> Hans S. schrieb:>> H. H. schrieb:>>> Hans S. schrieb:>>>> *.aps habe ich nicht sondern .asmproj>>>>>> Kenne ich nicht, muss jemand anders ran.>>>> Womit machst du das denn?>> AVR Studio 4.19
Werde ich mir mal ansehen.
Ich habe das Häkchen gefunden, das nötig war, um die .eep zu erzeugen.
Jetzt habe ich beide Dateien auf den tiny45 geflasht und nun dudelt es
munter drauflos!!!
Ich denke, dass mein Problem damit erledigt ist, ich bin rundum
zufrieden mit der Lösung. Ich möchte mich ganz herzlich bedanken für
eure tatkräftige Hilfe. Ich bin begeistert von der geballten Kompetenz,
die in diesem Forum versammelt ist und bin sicher, dass es ohne eure
Unterstützung nicht gelungen wäre, mein Vorhaben umzusetzen.
Wie es nun bei mir weitergeht: Ich habe schon kleine PCBs bei JLCPCB
geordert auf die zwei Taster und ein ATtiny45 im SOIC-Gehäuse mit der
erforderlichen Beschaltung sowie ein kleiner Buzzer kommen. Das Ding ist
so klein, dass man es sich sogar an einer Schnur um den Hals hängen
kann, ein wearable sozusagen. Damit werde ich dann an Enkel, Nichten und
Neffen verschenken, die dann damit ihre Eltern und LehrerInnen ärgern
können.
Noch einmal vielen Dank und Grüße in die Runde
Hans
Übrigens: Ich habe 33 Klingeltöne rein bekommen, vielleicht gehen aber
noch ein paar mehr, mal sehen.
Hans S. schrieb:> Übrigens: Ich habe 33 Klingeltöne rein bekommen, vielleicht gehen aber> noch ein paar mehr, mal sehen.
Auf jeden Fall, wenn du einen Tiny85 statt des Tiny45 nimmst...
Hans S. schrieb:> Übrigens: Ich habe 33 Klingeltöne rein bekommen, vielleicht gehen aber> noch ein paar mehr, mal sehen.
Hättest ja gleich einen Tiny85 nehmen können.
H. H. schrieb:> Hans S. schrieb:>> Übrigens: Ich habe 33 Klingeltöne rein bekommen, vielleicht gehen aber>> noch ein paar mehr, mal sehen.>> Hättest ja gleich einen Tiny85 nehmen können.
Ja natürlich. Aber zu viele Töne sollen es auch nicht sein. Nur waren
die zwei oder drei, die ich in den tiny13 rein bekommen habe zu wenig.
Hans S. schrieb:> Ich habe das Häkchen gefunden, das nötig war, um die .eep zu erzeugen.> Jetzt habe ich beide Dateien auf den tiny45 geflasht und nun dudelt es> munter drauflos!!!
Hi,
vielen Dank für Mühe. Nur, leider habe ich jetzt nicht ganz aufgepasst,
oder.. könntest Du nochmal das jetzt aktuelle ASM Programm mit dem
zugehörigen Zusatzprogramm für das EEprom posten?
Bei mir sieht die Flash-Maske so wie im Bild aus.
Das eep kommt also ins elf-Feld?
Danke!
ciao
gustav
Karl B. schrieb:> Das eep kommt also ins elf-Feld?
Natürlich nicht. ELF ist eine Kombination aus allen für die
Programmierung nötigen Dateien, EEP ist nur der Inhalt des EEPROM.
Karl B. schrieb:> Bei mir sieht die Flash-Maske so wie im Bild aus.> Das eep kommt also ins elf-Feld?
Darum ging es überhaupt nicht. Schon deshalb nicht, weil es bei
Assemblerprojekten mit der AVR-Toolchain überhaupt kein *.elf gibt. Da
gibt es ein *.hex und, wenn man das richtige Häkchen im GUI setzt
(Projekteigenschaften->Toolchain) zusätzlich auch noch ein *.eep.
Und auf diese beiden Dateien muß man dann in dem von dir gezeigten
Dialog verweisen, in den Groupboxen "Flash" (da gehört die *.hex hin)
bzw. "EEPROM" (da gehört die *.eep hin).
Hi
>Schon deshalb nicht, weil es bei>Assemblerprojekten mit der AVR-Toolchain überhaupt kein *.elf gibt.
Also ich habe jahrelang ELF-Files mit im AVR-Studio419 von
Assemblerprogrammen erstellt. Muss ich wohl etwas falsch gemacht haben.
MfG Spess