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
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.
Ich bin zu langsam beim Schreiben ;-)
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?
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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.