Forum: Mikrocontroller und Digitale Elektronik Assembler code für ATTiny85 modifizieren und in .hex kompilieren


von bob (Gast)


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.

: Verschoben durch User
von bob (Gast)


Lesenswert?

Verzeihung, es handelt sich um folgendes Projekt:

https://github.com/mitxela/MidiMonotron

von tommy (Gast)


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.

von tommy (Gast)


Lesenswert?

Ich bin zu langsam beim Schreiben ;-)

von bob (Gast)


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.

von pegel (Gast)


Lesenswert?

Die asm Datei kann mit AVR Studio 4 übersetzt werden.

von blablabla (Gast)


Angehängte Dateien:

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.

von blablabla (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch das bearbeitete asm

von bob (Gast)


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?

von pegel (Gast)


Lesenswert?

1. Lade avrasm2:
http://www.vfx.hu/avr/download/avrasm2.zip

2. entpacke die Datei.

3. Packe deine midiCV.asm in das Verzeichnis das die avrasm2.exe 
enthält.

4. bearbeite deine midiCV.asm

5. erstelle hex Datei:
avrasm2.exe -fI midiCV.asm

6. Fertig.

von bob (Gast)


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.

von bob (Gast)


Lesenswert?

AVR Studio 4*

von pegel (Gast)


Lesenswert?

Dazu müsste sich jemand in das gesamte Programm rein denken.
Hast du bemerkt, dass unten auf der Seite

https://mitxela.com/projects/midi_monotron

ein link zu einem eigenen Forum ist?

von bob (Gast)


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!

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
Noch kein Account? Hier anmelden.