Forum: Mikrocontroller und Digitale Elektronik Datentelgramme auf 8 Leitungen auswerten; ATMEGA 644


von Wolfran (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,
ich habe folgendes Problem:
Über einen ATMEGA (fast egal welcher - am liebsten ATMEGA644)möchte ich 
8-16 Temperatursensoren anschliessen und zwar TSIC Sensoren TSIC 306 
o.ä.

Diese liefern fix und fertig kalbriert die Temperatur, und zwar alle 
100ms als 2 Byte Datentelegram von ca. 2.3ms Länge, also mit 10Hz.

Einen einzelnen Sensor einlesen im Hauptprogram ist ja trivial, das 
funktioniert auch problemlos mit warten auf fallende Flanke und dann 
jeweils die 20 oder 40us auf nächstes Bit warten.
Aber bei vielen Sensoren kann ich ja nicht jeden einzeln abwarten !?
Jetzt zu meinem Problem:

1. Zum einlesen wollte ich an sich Interrupts verwenden, aber durch die 
sehr kurzen Bizeiten, sind das nur wenige 10us pro Interrupt. Zum 
"samplen" der Bitfolgen reicht dann die Zeit nicht, zumindest macht der 
uC dann nix anderes mehr.
oder
2. Alle Eingänge über OR-Gatter an einen Interupteingang z.B. ICP oder 
int0 hängen und dann nachsehen welcher Sensor was gesendet hat, aber 
auch dann die muss ich ja schnell "samplen". (nein ich meine NICHT AD 
Wandeln, sondern 1 und 0 erfassen ;-))

Vielleicht hat ja jemand eine Idee, oder sagt mir das ich blöd bin.

von Matthias S. (mat-sche)


Lesenswert?

Moin!

hätte da jetzt nur die eine Idee:den Port Change Interrupt der 
einzellnen Ports nutzen. Bei diesen Interrupts wird immer nur ein 
Interrupt gesetzt, von welchem Pin musst Du dann selbst durch Software 
herausfinden. Schau mal ins Datenblatt.

MAT

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Warum eigentlich ein Interrupt?
Wie wärs mit einem entsprechend getakteten Timer, der ständig die Bytes 
von einem Port (=8 Leitungen parallel) einliest und über entsprechende 
Variablen mit dem Hauptprogramm gekoppelt ist.

von Wolfran (Gast)


Lesenswert?

Manfred S. schrieb:
> getakteten Timer, der ständig

Nun ständig heisst dann alle 5-10us - um einigermassen sicher die 
Portbits zu lesen. Dann hab ich aber noch NIX verwaltet zugeordnet bits 
hin un hergeschoben etc. Ich fürchte dann ist der Prozessor "zu"

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Wolfran schrieb:
> Manfred S. schrieb:
>> getakteten Timer, der ständig
>
> Nun ständig heisst dann alle 5-10us - um einigermassen sicher die
> Portbits zu lesen. Dann hab ich aber noch NIX verwaltet zugeordnet bits
> hin un hergeschoben etc. Ich fürchte dann ist der Prozessor "zu"

Dann könntest du eventuell 2 Prozessoren verwenden, einer liest die 
ganzen Temperatursensoren ein, bildet ein Datenpaket, das er dann an den 
2. Prozessor sendet..

von ... (Gast)


Lesenswert?

Wolfran schrieb:
> Aber bei vielen Sensoren kann ich ja nicht jeden einzeln abwarten !?

... und schon entpuppt sich das "einfach integrierbar" aus dem 
Datenblatt als Makulatur

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
Noch kein Account? Hier anmelden.