- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 75

Thema: Mehrere RC Signale einlesen und mehrere Servos ausgeben

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #16
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von for_ro Beitrag anzeigen
    Du brauchst also keine Vorkehrungen zu treffen, ob der aktuelle Wert größer als der vorherige ist
    If Empfangskanal_temp_aus(1) > Empfangskanal_temp_ein(1) Then ' Wert nur gültig wenn kein Timerüberlauf
    Ob searcher das in ASM auch so umgesetzt hat, kann ich leider nicht beurteilen.
    Hallo, die ASM Teile sollen eine 1:1 Umsetzung der entsprechenden Bascom ISRs sein; also keine Gültigkeitsüberprüfung. Falls der Timer überläuft würde das Ergebnis der Subtraktion negativ sein. Die Impulslaenge Variable ist vom Typ Word mit 16Bit wie auch TCNT1 16Bit, kann keine negativen Zahlen enthalten, "läuft mit über" und enthält dann den gewollten Abstand von Rc_signal_start und aktuellem Timerstand. Soll auch so in der ASM funktionieren.

    @radbruch: Hab noch keine Zeit gefunden, mich in Deine Version reinzudenken.

    Die ASM Teile könnten noch etwas optimiert werden, wenn die Push und Pop nur da stehen, wo sie wirklich gebraucht werden. Falls PIN high ist, spart man an der Stelle fast nochmal ca 1µs.

    Mit der "Servoausgabe ISR" hab ich mich auch noch nicht beschäftigt

    Gerade überlege ich, ob man nicht ein Polling in einer einzigen ISR zum Pulsmessen durchführen könnte.
    Also irgendeiner der drei Interrupts tritt auf und in der einzigen ISR, die allen drei Interrupts zugeordnet ist werden dann alle drei Eingänge auf ihren Zustand gepollt und über Flagsteuerung Falschberechnungen verhindert werden. Keine Ahnung, ob das schneller werden könnte ...

    Gruß
    Searcher
    Code:
    Rc_eingang_1:
     $asm
       sbis pinb , 1                        'Skip next Instr if PINBx = 1
       rjmp pulslaenge1                     'Spring zur Berechnung von Impulslaenge
        push r17                             'Register auf Stack sichern
       in r17 , tcnt1l                      'Timer1 low Byte holen
       sts {Rc_signal_1_start} , r17        'Speichere Timer1 low Byte nach Rc_signal low Byte
       in r17 , tcnt1h                      'Timer1 high Byte holen
       sts {Rc_signal_1_start} + 1 , r17    'Speichere Timer1 high Byte nach Rc_signal high Byte
       pop r17                              'Register vom Stack zurückholen
       rjmp ende1                           'Springe zum Ende
      Pulslaenge1:
       push r16                             'Register auf Stack sichern
       in r16,sreg                          'Statusregister holen und halten
       push r17                             'Register auf Stack sichern
       push r18                             'Register auf Stack sichern
       in r17 , tcnt1l                      'Timer1 low Byte holen
       lds r18 , {Rc_signal_1_start}        'Hole Rc_signal low Byte
       Sub R17 , R18                        'Subtrahiere Rc_signal low Byte von Timer1 low Byte
       sts {Impulslaenge_1} , r17           'Speichere Resultat low Byte nach Impulslaenge low Byte
       in r17 , tcnt1h                      'Timer1 high Byte holen
       lds r18 , {Rc_signal_1_start} + 1    'Hole Rc_signal high Byte
       sbc r17 , r18                        'Subtrahiere Rc_signal high Byte von Timer1 high Byte
       sts {Impulslaenge_1} + 1 , r17       'Speichere Resultat high Byte nach Impulslaenge high Byte
       pop r18                              'Register vom Stack zurückholen
       pop r17                              'Register vom Stack zurückholen
       Out Sreg , R16                       'Statusregister zurückspeichern
       pop r16                              'Register vom Stack zurückholen
      Ende1:
     $end Asm
    Return
    Geändert von Searcher (22.12.2013 um 12:09 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Mehrere analoge Werte über ein ADC einlesen möglich?
    Von HeXPloreR im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 07.08.2012, 17:18
  2. Schaltkreis für mehrere Servos
    Von Sebbokalypse im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 12.11.2009, 18:46
  3. Mehrere Signale umschalten
    Von flexxo im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 25.02.2007, 13:56
  4. Antworten: 9
    Letzter Beitrag: 02.04.2006, 17:53
  5. Mehrere Signale über einen Interrupt erkennen
    Von Minifriese im Forum Elektronik
    Antworten: 22
    Letzter Beitrag: 04.06.2004, 08:31

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests