Datenübertragung zwischen zwei uC

OP #1273616
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
Du willst Werte per PWM übertragen?
Warum implementierst du nicht eine primitive digitale Übertragung?
Etwas in Richtung SPI wäre vermutlich das einfachste.
Gast
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.
Gast
mit einer "richtigen" umgebung wäre man vieleicht auch auf die idee 
gekommen hardwareschnittstellen zur kommunikation zu verwenden :P

als da wären : SPI , I²C(TWI) , UART ...

gibt ja genug
OP
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
Gast
Vielleicht klappt die Programmierung nicht richtig, und da läuft 
weiterhin das frühere Programm.
Mal die Meldungen vom avrdude o.ä. aufmerksam mitlesen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.