www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ich brauche mal eine Idee (digitaler Meßschieber)


Autor: holm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine Auslesemimik für die chinesischen Meßschieber:
<A HREF="http://www.shumatech.com/support/chinese_scales.ht...
Chinese Scales </A> unter Benutzung des avr-gcc zusammen mit einer 7
Seg Multiplexanzeige in einen ATTiny2313 gehäckselt. Die
Multiplexanzeige
benutzt 2 74HC164, die Daten werden über die USI (Mistding)
rausgeschoben. Die Lesemimik orientiert sich an dem PIC Code von
"Finger's Welt", gefällt mir aber überhaupt nicht.
Im Prinzip werden da ständig ein Pin gepollt (Clockpin) und dann mit
verbotenen Interrupts bei jeder L/H Transition die daten in einen
48 Byte Speicher eingelesen, wobei im Prinzip nur ein Bit jedes Byte
benutzt wird. Dieser Mist deswegen, weil der Clock 90Khz betragen
kann,
das sind gerade mal 11 µsek zwischen den zu sampelnden Datenbits.
der Tiny2313 läuft zwar mit 20Mhz, aber ich habe nicht das Gefühl,
das eine Pin-change ISR es schaffen würde, die Daten einzusortieren.

Hat hier Jemand eine Idee, wie man das am elegantesten bewerkstelligen
könnte? Ich hätte da ja auch noch vor, einen 2. Meßschieber dessen
Clock natürlich völlig asynchron zum ersten liegt auch noch auszulesen
und die Daten anzuzeigen. (X/Y an einer Drehbank).

Bin für Tipps dankbar,

Holm

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dir ist aber schon klar ,dass du wenn du den Meßschieber über die USI
(SPI Slave) einlesen würdest, wahrscheinlich mit 1 Mhz auskämst?

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke, dein Gefühl täuscht dich. Wenn du die ISR sparsam
programmierst (möglichst wenig Befehle), dann ist das kein Problem.
Wenn du sogar noch über den USI gehen kannst, also dich nicht mehr um
jedes einzelne Bit kümmern musst, dann entlastest du den Prozessor noch
einmal.

Autor: holm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Wolfram und Winfried,

Wie soll ich 2 unabhängige Meßschieber mit ein und der selben USI
einlesen, multiplexen? Das wird mir dann aber eher zu doof..
Zum jetzigen Zeitpunkt läuft wie schon geschrieben die Ausgabe im
SPI Master Modus über die Usi. Diese könnte man im Prinzip in der
Anzeigen ISR auf Master umprogrammieren und wenn die 16 Bit raus sind,
wieder zurück. Ich müßte dann aber für 2 Meßschieber jedesmal Clock und
Daten umschalten und die Dinger irgendwie alternierend einlesen, wobei
die auf die Dauer natürlich nicht mit der selben Taktfrequenz laufen
werden.

Gruß,

Holm

BTW: die USI ist ein Scheißding, da ist ja die SPI Highend dagegen..

Autor: holm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochwas:
Mein problem mit der Interruptlösung ist die Tatsache, daß ich während
der ISR im Prinzip eine 32 Bit Zahl bitweise schieben muß. Das sind 4
Byte,
das wird wohl zu lange dauern.
Es währe höchstens möglich, 3 einzelne Bytes zu behandeln und diese
dann außerhalb der ISR zusammenzusetzten. Das werde ich wohl mal
probieren.

Gruß,

Holm

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
20MHz sind 200 Zyklen bei 100kHz, das ist dicke zu schaffen.

Nimm einfach beide externen Interrupts auf die 1-0 Flanke für jeden
Meßschieber.

4 Bytes zu schieben dauert exakt 4 Zyklen.


Peter

Autor: Ka Suh (kasuh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab sowas ähnliches mal gemacht, hat auch funktioniert:

Atmega 16 mit 4 MHZ getaktet (250ns/Takt). Das Einlesen der Daten uber 
Polling und schieben inkl. 3-fach-Sampling zur Glitch-Entfernung 
brauchte ca. 20 Takt-Zyklen.

Autor: Remo Hug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ka Suh

Dein Post ist zwar schon eine weile her aber
mich würde trotzdem deine Vorgehensweise interessieren, damit du
einlesen und 3-fach-Sampling in nur 20 Takten geschafft hast.
Ich meine die Daten vom Messchieber haben ja bereits 24-Bit.
Wenn ich jetzt für jedes Bit zum einlesen 1 Takt benötige, sind das
alleine ja schon mal 24 Takte und dass ohne 3-fach-Sampling.

Also ich bin kein Experte in diesem Gebiet. Ich wurstle mich lediglich 
so durch meine Hobbyprojekte. ;-)

Allso bitte sag es mir, wenn ich da irgendwo etwas falsch verstehe.

freundliche Grüsse
Remo

Autor: Thomas Forster (igel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Remo Hug schrieb:
> Allso bitte sag es mir, wenn ich da irgendwo etwas falsch verstehe.

Da ich das Thema ca. 8 Jahre nach Ka Suh, genauer letzten Monat, auch 
programmiert habe, mische ich mich mal ein:

Das Einlesen eines einzelnen Bits und Schieben in ein Register ist wohl 
mit den 20 Takten gemeint. Habe jetzt meinen asm-Code nicht hier, aber 
in diesem Bereich liegt meine Routine auch.

Autor: Remo Hug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas

Demnach geht das doch nicht so, wie Ka Suh das Geschrieben Hat.

Ka Suh schrieb:
>Das Einlesen der Daten uber Polling und schieben inkl. 3-fach-Sampling zur 
>Glitch-Entfernung brauchte ca. 20 Takt-Zyklen.

freundliche Grüsse
Remo

Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann melde ich mich auch noch mal... :-)

Man kann heute sagen, das man dazu nichts mehr sagen kann.
Ich habe mindestens 4 verschiedene Sorten Meßschieberelektroniken in der 
Hand gehabt, die auch ähnliche aber in Details unterschiedliche 
"Protokolle" benutzen. Teilweise betrifft das nur die Datenrate. Es gibt 
mittlerweile auch runde Meßuhren mit dieser Elektronik und Micro-USB 
Buchse dran, hatte mich beim probeweisen anstecken gewundert wieso das 
Kabel warm wird, naja, das was da drüber läuft hat mir USB nicht das 
Geringste zu tun, GND ist aber mit Minus und VCC mir Plus einer CR2032 
direkt verbunden. Ich habe das glücklicherweise noch vor der Sprengung 
gemerkt...

Es gibt Meßschieber da kann man mit der Off-Taste ausschalten, das 
Display geht auch aus, die Meßwerterfassung und das Senden von Daten 
betrifft das aber nicht :-)
Es gibt mittlerweile auch welche die sich nach einer Weile 
Nichtbenutzung schlafen legen, blöde wenn man das Ding an eine Drehbank 
schrauben will..
Und dann gibts welche bei denen das Display über einen mit 
Heiß-leit-kleber angepappten Flexleiter mit der Platine verbunden ist, 
wehe da kommt ein Tropfen Öl ran..

Gruß,

Holm

Autor: Thomas Forster (igel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Remo Hug schrieb:
> Demnach geht das doch nicht so, wie Ka Suh das Geschrieben Hat.

Das kann für einen, evtl. auch zwei Messschieber durchaus funktionieren. 
Bei 90kHz Clock-Frequenz und 4MHz des Atmega hat man ja 44 Takte Zeit. 
Die meiste Zeit senden die Messschieber ja versetzt zueinander.

Die neuen Atmegas haben ja alle Pin Change Interrupt, da kann man sich 
das Polling sparen und direkt auf die Flanke an Clock per IRQ reagieren.
Dreifach-Abtastung ist ja schön, aber ich habe trotz Einfach-Abtastung 
auch keine Probleme.

Undi wie Holm schreibt: Es existieren verschiedene Protokolle. Ein Oszi 
um festzustellen was aus dem Messschieber jeweils rauskommt ist 
unerlässlich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.