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.
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.
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.
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.
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?
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.
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?
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!