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:
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
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?
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.
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.
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 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.
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.
Was ausgesprochen merkwürdig ist, denn es wird 'ringtones.inc' eingebunden, und dort steht ".eseg" drin.
Was passiert, wenn Sie meine beiden Dateien übertragen?
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.
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!
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).