- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: GETRC5 über Int1 ???

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    14.09.2004
    Beiträge
    38

    GETRC5 über Int1 ???

    Anzeige

    LiFePo4 Akku selber bauen - Video
    hallo

    ich muß das GetRC5 über einen Interrupt auslösen - da ein polling mit GETRC5 zu lange dauert ...
    dafür habe ich folgendes programm genommen :


    $crystal = 10000000
    $regfile = "m8def.dat"
    $baud = 19200



    Config Pinc.0 = Output ' IR Sensor sitzt mit GND an Pinc.0
    Reset Portc.0 ' und mit +5V an Pinc.1
    Config Pinc.1 = Output ' und mit Sign. an Pinc.2
    Set Portc.1


    Config Pind.4 = Output ' kontroll LED
    Config Pind.5 = Output 'kontroll led

    Gruen Alias Portd.4
    Rot Alias Portd.5


    Config Rc5 = Pinc.2

    Config Pind.3 = Input 'int1 als Eingang

    Config Int1 = Falling



    On Int1 Int1_isr


    Enable Interrupts
    Enable Int1

    Dim A As Byte , C As Byte


    Print "Waiting for RC5..."


    Do
    Reset Rot
    Waitms 100
    Set Rot
    Waitms 1
    Print C
    Loop

    End


    Int1_isr:
    Disable Int1
    Getrc5(a , C)
    Enable Int1
    Return


    pinc.2 (RC5 Eingang) und Pind.3 (int1 Eingang habe ich mit einem drähtchen verbunden


    jedoch funkt. das ganze leider nicht ...
    nachdem der in die In1_isr gesprungen ist blinkt nichtmehr die rote kontroll led
    also der hängt sich irgendwie in der Int1_isr auf ....

    wer hat schonmal das ganze mit dem RC5 und interrupts gelöst ?


    Gruß Tobias

  2. #2
    Gast
    ich habe das mit fastavr-basic gelöst.
    --------------------------------------------------
    $Device= m16
    $Stack = 32
    $Clock = 8
    $Baud = 19200
    $RC5=PORTD.2

    Dim ir_adr As Byte, ir_Command As Byte

    Declare Interrupt Int0()

    Int0 Falling
    Enable Int0
    Enable Ovf0
    Enable Interrupts

    Do
    Wait 100
    Loop

    End

    Interrupt Int0(), Save 2
    Disable Int0
    Enable Interrupts
    RC5(ir_adr, ir_Command)
    Print ir_command
    Reset Int0
    Enable Int0
    End Interrupt
    -------------------------------------------

    mfg psf

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    14.09.2004
    Beiträge
    38
    tja sieht ja auch fast wie meine Code in Bascom aus ... nur leider funkt. es eben nicht ganz so wie bei Deinem fastavr-Basic

    na ja da werde ich halt noch ein bischen rumbasteln müssen !

    gruß Tobias

  4. #4
    Gast
    bascom nimmt für diese rc5-routine eine interrupt:
    Connect to input to PIND.2 for this example
    'The GETRC5 function uses TIMER0 and the TIMER0 interrupt.
    'The TIMER0 settings are restored however so only the interrupt can not
    'be used anymore for other tasks

    da liegt der haken bei bascom. kann dir nicht mehr weiterhelfen.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Aber Timer0 wird im Programm doch garnicht verwendet?!?

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    14.09.2004
    Beiträge
    38
    doch die das getrc5(...,...) nimmt intern den Timer0
    mh... dann also wieder einen 2. Controller der getrc5 --> RS232
    und im hauptcontroller einen Interrupt bei Rx

    na ja habe ich mir schon fast so gedacht ...

    aber es wäre totzdem schon wenn einer mal das Beispiel von der u.g. Version hätte !!!


    "GETRC5 supports extended RC5 code form version 1.11.6.9 thanks to Gert Boer who implemented the extended RC5..."

    gruß Tobias

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Ja, geht GETRC5 nimmt den Timer0 um die Pulslängen zu erkennen.
    Aber:
    $crystal = 10000000
    $regfile = "m8def.dat"
    $baud = 19200



    Config Pinc.0 = Output ' IR Sensor sitzt mit GND an Pinc.0
    Reset Portc.0 ' und mit +5V an Pinc.1
    Config Pinc.1 = Output ' und mit Sign. an Pinc.2
    Set Portc.1


    Config Pind.4 = Output ' kontroll LED
    Config Pind.5 = Output 'kontroll led

    Gruen Alias Portd.4
    Rot Alias Portd.5


    Config Rc5 = Pinc.2

    Config Pind.3 = Input 'int1 als Eingang

    Config Int1 = Falling



    On Int1 Int1_isr


    Enable Interrupts
    Enable Int1

    Dim A As Byte , C As Byte


    Print "Waiting for RC5..."


    Do
    Reset Rot
    Waitms 100
    Set Rot
    Waitms 1
    Print C
    Loop

    End


    Int1_isr:
    Disable Int1
    Getrc5(a , C)
    Enable Int1
    Return
    Wo ist hier von Timer0 die Rede? Niergendwo. Brauch ja auchnicht. Das erledigt GETRC5() ja von alleine.

    Warum sollte also INT1 gesperrt sein, wenn Timer0 angewendet wird???

    Ich verstehe nicht, warum Gast die Hilfe bezüglich GETRC5() zitiert in der von Timer0 die Rede ist, wenn INT1 verwendet werden soll.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    14.09.2004
    Beiträge
    38
    deshalb wäre es schön zu sehen wie das Getrc5 in Bascom arbeitet

    gehen tut das bestimmt irgendwie und wenn es auch assembler ist ...


    was ist gemeint das auch der interrupt von Tomer0 verwendet wird ?
    bei einem Überlauf ? im Fehlerfall ? also wenn kein RC5 signal da ist ?

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    INT1 wird überhaupt nicht verwendet für GETRC5()! Er ist frei. Du kannst damit machen was du willst. Von daher ist es egal das GETRC5() den Timer0 braucht. Timer0 und INT1 haben nicht miteinander zu tun.

    Davon rede ich doch die ganze Zeit.

    Zitat Zitat von Gast
    'The GETRC5 function uses TIMER0 and the TIMER0 interrupt.
    'The TIMER0 settings are restored however so only the interrupt can not
    'be used anymore for other tasks

    da liegt der haken bei bascom. kann dir nicht mehr weiterhelfen.
    INT1 <> Timer0!

    Probier es doch mal so. Mal schauen was passiert.

    Int1_isr:
    Set Rot
    Disable Int1
    Set Gruen
    Getrc5(a , C)
    Enable Int1
    Reset Rot
    Return

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2004
    Ort
    Berlin
    Alter
    69
    Beiträge
    436
    ich glaub, spatz hat das gleiche verständnisproblem wie ich:
    Ich hab den Timer0 für eine PWM verwendet; nur Timer1 wäre für GETRC5 frei. Wenn ich jetzt lese:

    >> The GETRC5 function uses TIMER0 and the TIMER0 interrupt.
    tritt doch das problem auf, oder?

    Gruß Stupsi

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen