Einzelnen Beitrag anzeigen

markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#41

Re: Ablauf für Fräsmaschine programmieren

  Alt 4. Okt 2008, 10:44
Meine Platinen sind nach der Fädel-Methode entstanden Alles Lochraster, gequetscht auf eine Größe von 7*5cm. Jede Platine hat einen zehnpoligen Buchsenstecker, der nahezu alle Funkionen des L287 herausführt, plus einen Satz Jumper, mit denen man das meiste vorkonfigurieren kann (und so Pins spart).
Ich habe dann noch eine großzügig bemessene Adapterplatine, die die einzelnen Module übereinander anordnet und nur die Leitungen für Takt, Richtung und Stromversorgung des Logikteils herausführt.
Bei Interesse kann ich später mal "Pigs" machen.

Zu der Sache mit Threads: Wie schon erwähnt, ein AVR kann eigentlich kein Multithreading. Die Implementationen die es so gibt, tricksen ein wenig.
Sie nehmen sich einen Timer als Interruptquelle und jedes Mal, wenn der Interrupt auftritt, wird die aktuelle Funktion unterprochen. Normalerweise kehrt der AVR nach einem Interrupt wieder zur ursprünglichen Funktion zurück. Wenn man die Rücksprungadresse jetzt aber auf den letzten Zustand des zweiten Threads umbiegt, läuft plötzlich dieser!
Tatsächlich wird aber immer nur zwischen den verschiedenen Funktionen hin und her gewechselt ... und oh Überraschung: Das kann ich auch, sogar ohne Interrupt. Dafür müssen command_decode und der gcode_preprocessor nur so aufgebaut sein, dass sie freiwillig nach einem Schritt die Kontrolle wieder zurückgeben.
=> Sie müssen ihren aktuellen Zustand im Speicher hinterlegen und beim nächsten Aufruf wiederherstellen.

Da du nicht weißt, wie die "Threads" getaktet sind, kannst du diese eher schlecht für das RS232 Senden/Empfangen verwenden. Vor allem produzierst du dabei eine unnötige Prozessorlast, die du gut an anderen Stellen brauchen könntest.
Ein Interrupt dagegen "kommt" nur, wenn er gebraucht wird. Er erledigt seine Arbeit schnell und schmerzlos und verschwindet danach in der Versenkung.

mfG
Markus
Markus
  Mit Zitat antworten Zitat