Clock In Sequenzer

Hallo,


ich habe einen 8Step Sequenzer gebaut, u.a. mit einem Microcontroller (PIC) und ein paar Bauteilen. Leider stehe ich jetzt auf dem Schlauch, da ich nicht weiß, wie man die Clock In realisiert.

Ich glaube, dass ich die Timer von meinem Microcontroller überschreiben muss, leider weiß ich nicht ganz wie das funktioniert, oder ob das überhaupt der richtige Weg ist.

Ich erwarte keine genaue Anleitung, aber vielleicht hat hier ja schonmal jemand ein ähnliches Problem gehabt und kann seine Erfahrung teilen, oder jemand hat eine Idee.

beste Grüße
totem
 
Hallo,
üblicherweise haben Sequencer "Modes" wie interne Clock, extere Clock oder Step by Step, wenn der Pic so läuft wird er einen Timer nutzen um die Steps gleichmäßig zu schieben, wenn du nun auf Extern schalten willst (in Programm) spielt der Timer keine Rolle mehr, die Routine wertet nur noch den Port auf steigende oder fallende Flanke des Tacktsignals aus, das kann der Pic, je nach größe, über einen Interrupt machen oder du pollst den Port in der Hauptschleife und springst bei True in die Schieberoutine.
Codebeispiele falls benötigt:

;-------
;Pollen in Main, bei Clock auf 1 den Sequencer einen Schritt weiter schieben:

;Den PortA,0 in der Initialisierung (von dir) auf Eingang setzen

init
movlw b'00000001' ;bit 0 = Eingang, alle anderen Ausgang, das musst du aber alles an deinen Programmcode anpassen, je nach Belegung
movwf TRISA,0



main ; Hauptschleife start

;Erst warten bis Clock auf 0

btfss PortA,0,0 ;Port A, bit 0 - also das Erste, springt wenn Clock auf 1 ist
bra reset_bit ;auf die 1 warten

; Ein Flag setzen, Register deiner Wahl zB. 0x20,0 Register 20 bit 0 also das Erste, damit nicht bei jedem 1ser Durchlauf geschoben wird
btfsc 0x20,0 ;wichtig! Wird gesetzt mit "bsf 0x20,0" in der Routine "schiebe"
bra warten

btfsc PortA,0,0 ;Port A, bit 0 - also das Erste, springt wenn Clock auf 0 geht
bra schiebe ;Routine zum weiterschieben, ist ja schon vorhanden
bra warten

reset_bit
bcf 0x20,0 ;Flag zurücksetzen damit auf die nächste 1 gewartet werden kann

warten

nop
nop
.
.dein code.....

goto main


schiebe ;Clock ist auf 1 gegangen also nächster schritt im Seq.

bsf 0x20,0 ;Flag setzen !!!!!
.
. dein code...
.
.
goto main ;dort auf die nächste Clock warten

;--------

puh doch nicht mal so eben geschrieben, aber machbar ;-)

schiebe heißt bei dir anders das musst du alles anpassen, der Befehl bra kann nur 256 Adressen, sonst goto nutzen.

Für mehr Infos brauche ich aber den Code und die Schaltung.

Gruß
JuBi
 
jetzt ist meine aufwendige Textformatierung im Code weg, Tabs kann der Texteditor ja nicht, dafür hat er die Leerzeichen entwendet um das ganze wieder schwer lesbar zu machen :selfhammer: Ich weiß es nicht
 
Hi JuBi,
danke für die ausführliche Antwort:) ich werde gleich mal rumprobieren!!!

Wenn es klappt, verlinke ich mal meine seite, dort ist alles beschrieben, aber die ist noch nicht ganz fertig;-)

beste grüße
totem
 
Hi JuBi,
danke für die ausführliche Antwort:) ich werde gleich mal rumprobieren!!!

Wenn es klappt, verlinke ich mal meine seite, dort ist alles beschrieben, aber die ist noch nicht ganz fertig;-)

beste grüße
totem

Hi, viel Erfolg dabei, poste deine Site auf jeden Fall, ich schaue mir sowas gerne an ;-) sammle auch seit Jahren Pic-code um einen Quatizer zu realisieren, leider hab ich schon so viele Quatizer-Module (von Moon) das die Notwendigkeit zum DIY sehr gering ist, aber falls es jemand interessiert, hab letztens ein Präzisions Addierer mit B&B INA Instrumentenverstärker gebaut.

Gruß
JuBi
 


News

Zurück
Oben