Hi,
mein letzter Post ist ja schon etwas her aber das Projekt ist schon einige Schritte weiter gekommen.
Mittlerweile bin ich fertig mit den Tests der Rotationsencoder und habe mich im Verlauf der Tests entschlossen jeder Achse einen autarken Achsencoder mit eigenem µC zu spendieren (ATtiny26).
Das ist nötig, weil mir die Performance des ATMEGA64 sonst für die UI(User Interface) Anzeige und den NC-Pfadintegrator nicht reicht.
Die Anbindung der einzelnen externen Encoder sieht so aus:
Code:
Schematics for three slave devices:
-----------------------------------
M /PA0 o--*
a D |PA1 o--|
s A |PA2 o--|
t T |PA3 o--*==========*=========o PA0..PA6 SLAVE1.Data
e A |PA4 o--| \========o PA0..PA6 SLAVE2.Data
r |PA5 o--| \=======o PA0..PA6 SLAVE3.Data
\PA6 o--*
W /PB0 o-----------------------o PA7 SLAVE1.WR
R |PB1 o-----------------------o PA7 SLAVE2.WR
\PB2 o-----------------------o PA7 SLAVE3.WR
R /PB3 o-----------------------o PB6 SLAVE1.RDY
D |PB4 o-----------------------o PB6 SLAVE2.RDY
Y \PB5 o-----------------------o PB6 SLAVE3.RDY
also ein 9 bit breiter Datenbus der mit einem Statetransition Protokoll Timingunabhängig die Daten auslesen kann.
Das Protokoll ist folgendermassen implementiert:
Code:
µC(Slave) DIR µC(Master)
-----------------------------------
RDY -> Q: Is slave ready?
<- DATA
<- WR
___
RDY ->
__
<- WR
DATA ->
RDY -> Q: Is slave ready?
DTE µC(Slave)
DCE µC(Slave)
RDY ready signal from DCE to DTE
WR write signal from DTE to DCE
DATA 7 bit data lines DTE <-> DCE
Ablauf zum auslesen der Position und Geschwindigkeit IST-Werte:
1) Erstellen eines Positions/Geschwindigkeit Snapshots im Multicastbetrieb (alle Achsen gleichzeitig)
2) Datenbus auf Tristate stellen (wiederum Multicast)
3) Geschwindigkeit/Speed Tupels aller Achsen nacheinander auslesen
Zur Anzeige benutze ich einen VT525 Terminal den ich als Softwareemulation gechrieben habe. Mit dem Terminal wird via UART kommuniziert und das UI aufgebaut. Im Terminal wird ein Menu (blauer Balken unten) eingeblendet um die verschiedenen Funktionen zu aktivieren.
Momentan bin ich damit beschäftigt den externen Encoder (ATtiny26) mit dem Master µC (ATMEGA64) zu verbinden und in Testcases die Stabilität der Datenkommunikation zu ermitteln und evtl. zu verbessern.
Hier mal ein paar Screenshots vom Terminal UI wie der ATMEGA ihn aufbaut.
Bild hier
Bild hier
Naja, jetzt bau ich gerade unter dem Menupunkt TESTS einen Versuch ein um die Daten des externen Encoders im 4ms Intervall auszulesen und dann auf dem UI anzuzeigen, so dass ich sehen kann ob das fehlerlos funktioniert.
Gruss,
O.
Lesezeichen