Datenübertragung zwischen zwei uC

OP #1273616
Lesenswert?

Hi zusammen, folgender Aufbau:

Ich übertrage einen Array auf einen ATMega128, der Array besteht aus 
10Bytes, wobei die Information darin eine Funktion ist, also quasi 5 
Wertepaare.
Diese habe ich im Mega über Mathlab in eine Funktion geschrieben. Die 
Funktion ist wie folgt: auf der X Achse die Zeit auf der Y Achse eine 
Spannung, dass soll eine Stufenfunktion sein:
Halte eine Sekunde 0.3V, dannach halte mir bis zur zweiten Sekunde 0.6V, 
wenn das fertig ist auf 0.9V erhöhen für eine Sekunde usw....

Jetzt soll mir der 128 auf meinen Mega8 eben diese Spannung übertragen 
und sie halten. Also in Comicsprache:
Hey Mega8 halte nimm Sekundelang die Spannung von 0.3V auf.

Das ist ja so kein Problem, aber der Haken kommt jetzt.
Diesen Spannungswert brauche ich als Sollwert für eine Regelung. Meine 
Regelschleife braucht genau 9,8ms, weswegen ich den 8er auf 17,8ms pro 
Durchlauf takten musste. Der Mega 128 schickt mit 2kH.
Ich habe versucht dem Mega 8 alles über ein PWM mitzuteilen. Zuerst habe 
ich einen Tiefpassfilter genommen. Der ist aber zu langsam, sprich ich 
bekomme nicht in regelmäßigen Abständen meinen Sollwert raus, zumal man 
beim PWM ja auch einen Mittelwert bildet. Dann habe ich den 
Tiefpassfilter "einfach" schneller gemacht indem ich an tau=r*c 
rumgeschraubt habe. Ist aber nicht gut, weil das Signal dann schlechter 
geglättet wird.
Wie kann ich denn ggf einen Softwarefilter bauen, der zum einen mit den 
Taktzeiten zurechtkommt und zum anderen schneller reagiert als mein 
Hardwarefilter?

Danke
Gast #1273835
Lesenswert?

Du willst das nicht ernsthaft mit Matlab programmieren? (MathLab kenne 
ich jedenfalls nicht).

Matlab ist gut geeignet, Algorithmen für Signalverarbeitung zu 
entwickeln.
Hardwarenahe Controllerprogrammierung lässt sich mit einer "richtigen" 
Entwicklungsumgebung leichter und effizienter realisieren.
OP #1277154
Lesenswert?

Hallo,
also ich schicke mir jetzt die Daten über die serielle Schnittstelle.
Ich lasse mir jetzt immer eine Sekunde lang im ASCII Code Daten 
schicken. Dann wechselt der Wert.

Aber egal ob ich empfange mit Interrupt oder ohne, oder ob ich gar die 
Schnittstelle initialisiere, ich erhalte andauernd die Werte.
Ich will eigentlich 1 Byte empfangen Interrupt setzten, Byte 
verarbeiten, Interrupt aufheben und weiter gehts.
Ich habe jetzt mal zum testen die gesamte main Schleife leer gelessen, 
ich rufe ja nichtmal initUart(); auf und ich bekomme trotzdem im 
Testfenster alles vollgeschrieben.
Ist wohl ehr ein Hardwareproblem, selbst wenn ich alles lösche empfange 
ich weiter. Oder kann mir dazu jemand was nützliches sagen???
Kann natürlich auch sein das ich ein Shakehands zwischen den beiden 
Controllern machen muss.
Danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren