Assembler code für ATTiny85 modifizieren und in .hex kompilieren

Gast #5386244
Lesenswert?

Hallo,

ich würde gerne einen Assembler-Code, der für einen ATTiny85
geschrieben wurde, modifizieren und ins .hex-Format kompilieren.

Es handelt sich um ein Programm, das digitale MIDI Steuerdaten
in ein PWM-Signal umwandelt, das an Pin PB1 ausgegeben wird.

Das Problem ist, dass das Signal wieder auf den niedrigsten Wert
zurückspringt, wenn die Taste losgelassen wird.

Ich schätze, das passiert durch "rcall setNote" in Zeile 207,
in der NoteOffMove Subroutine.

Von Assembler, bzw. Programmiersprachen an sich hab ich so gut wie
überhaupt keine Ahnung und auch nicht die entsprechenden Tools
zum Kompilieren.

Wäre sehr dankbar, wenn mir jemand von euch helfen könnte.

mfG.
Gast #5386251
Lesenswert?

Erstens:
Du hast im falschen Unter-Forum gepostet.
Hier sollten nur fertige Projekte und Codes gepostet werden.

Wenn ein Moderator diesen Post verschiebt, dann findest Du
ihn wahrscheinlich in "µC & Elektronik" wieder.

Zweitens:
Zeig mal Deinen Quelltext. Wenn der sehr lang ist, dann
als Datei-Anhang.
Gast #5386267
Lesenswert?

Das Projekt ist soweit auch fertig. Es fehlt nur eine winzige Änderung,
um es auf meinen persönlichen Bedarf zuzuschneiden.

Die Arpeggiatorfunktion würde ich auch sehr gern abschalten,
dazu würde ich einfach die setNote-Zeile (60) ebenfalls entfernen.

Bräuchte nur die Bestätigung, dass das dann auch so einfach funktioniert
und dass mir vielleicht jemand dann die bearbeitete .asm-Datei
in eine .hex-Datei umwandeln würde. Das wäre echt cool.
Gast #5386298
Lesenswert?

Hab mal Zeile 60 und 207 auskommentiert und kompiliert.
AAABER: Nur weil ich das Projekt interessant finde. Ich finde nämlich 
auch, man sollte es wenigstens versuchen selbst zu übersetzen. Also für 
weitere Hilfe reichen die ersten zwei Kapitel des AVR-Tutorial.
Angehängte Dateien:
Gast #5386536
Lesenswert?

Hey danke! Hab's mit dem neuen Hexfile probiert, allerdings bleibt jetzt 
das GATE-Signal auch auf HIGH, da muss ich wohl noch an anderen Stellen 
im Code herumprobieren.

Könntest du mir einen Hinweis geben, wie du die Datei kompiliert hast?
Ich brauch das wirklich nur für dieses eine Projekt, weil ich mich 
ansonsten überhaupt nicht mit Mikrocontrollern beschäftige. Und mir 
fehlen ehrlich gesagt auch die Nerven dazu. WinAVR hab ich bereits da. 
Gibt es da nicht eine einfache Befehlszeile?
Gast #5387273
Lesenswert?

Hallo,

inzwischen hab ich sechs Stunden zugebracht, den Code trial&error-mäßig
in Atmel Studio 4 (damit ging das Kompilieren super) zu bearbeiten. Mir 
raucht jetzt echt der Kopf.

Den Arpeggiator hab ich gleich ganz entfernt. Das war leicht.

Das CV-Problem jedoch leider nicht. Nach Stunden erfolgloen Abklapperns
der Befehle konnte ich zumindest die Funktion des CV-Outs so 
hinbekommen,
wie ich es wollte, indem ich in der letzten Sub "outputOff" drei Zeilen
 wiefolgt auskommentiert hab:
1
outputOff:
2
   clr r16
3
;   out OCR1A,r16
4

5
   cbi PORTB,3
6
   cbi PORTB,0
7
 ;  ldi r16, 0b00011011
8
 ;  out DDRB,r16
9

10
   ret

Allerdings funktionierte dann das GATE nicht mehr richtig.
Weiß vielleicht jemand von euch, was man da machen kann?

mfG.
Gast #5387493
Lesenswert?

Lösung gefunden! <3

    Die Zeile out OCR1A,r16 muss tatsächlich entfernt werden.
    Ebenso wie die beiden letzen Zeilen der outputOff-Routine.

    Um das Gate-Problem zu lösen, müssen die Zeilen

    in r16,OCR1A
    cp r16,r19
    breq setNoteEnd

    in der SetNote-Subroutine entfernt werden.
    Die Hilfe hab ich in einer Facebookgruppe bekommen.


    Sobald ich das CV Interface auf einem brauchbaren Level habe,
    poste ich den optimierten Code, den überarbeiteten Schaltplan 
(output buffer und Gedöns).
    Vorher frag ich aber nochmal den Urheber, ob das für ihn so okay 
ist.

    Jetzt mach ich drei Kreuze. <3

    wünsche euch noch eine gute Nacht!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren