Nec Ir Fb

ich steh glaub ich aufem Schlauch, mein Taster an INt0 aufem Pollin Board, geht nich so wie ich will
was für nen modi muss ich denn beim Int einstellen?
es ist als wäre der Taster dauerhaft betätigt,.
Code:
$crystal = 16000000
$regfile = "m8def.dat"
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               'default use 10 for the SW stack
$framesize = 40                                             'default use 40 for the frame space
$baud = 19200

'Portconfiguration-------------------------------------------------------------
Config Portd.2 = Input
Taster1 Alias Portd.2
'Portd.2 = 1

Config Portd.3 = Input
Taster2 Alias Portd.3
'Portd.3 = 1

'>Save&Load
Dim Poweron As Byte

Enable Interrupts
On Int0 Poweron_isr
Enable Int0
Config Int0 = Change

Poweron = 1

Print Version(1)
Do

Loop
End

Poweron_isr:
   Print "Taster1 " ; Taster1
                                             ' And Poweron = 1
   If Poweron = 1 Then
      'Gosub speichern
      Poweron = 0
      Print "schlafen gehen"
      'Mcucr.isc01 = 1
      'Mcucr.isc11 = 1                                       'umschalten von Falling auf Low Level
      Power Powersave
   Elseif Poweron = 0 Then
'      'Gosub laden
      Poweron = 1
      'Mcucr.isc01 = 0
      'Mcucr.isc11 = 0                                       'umschalten von Low Level auf Falling
      Print "wurde angeschaltet"                            'wieder schlafen gehen
   End If
Return
 
Vorher ist eigentlich egal, welchen Modus du benutzt.
Allerdings solltest du den PullUp einschalten, wenn dein Taster gegen GND schaltet. BZW. einen externen PullDown verwenden, wenn der Taster gegen + schaltet.

HBA
 
mh irgendwie klappt das nich so,.
also aufem pollinboard wird gegen +5V geschaltet,

mei code sollte doch stimmen, mit rising, hab gesehen das ich den Interrupt eingangspin nicht seperat definieren muss,.

Code:
$crystal = 16000000
$regfile = "m8def.dat"
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               'default use 10 for the SW stack
$framesize = 40                                             'default use 40 for the frame space
$baud = 19200

'Portconfiguration-------------------------------------------------------------
'Config Pind.2 = Input
'Portd.2 = 0


Dim Poweron As Byte

Enable Int0
Config Int0 = Rising
On Int0 Poweron_isr:
Enable Interrupts

Poweron = 1
Print "Booting..."
Print Version(1)

Do
   Print "poweron " ; Poweron
Loop
End

Poweron_isr:                                                ' wird nur bei tastendruck aufgerufen                                      ' And Poweron = 1
   If Poweron = 1 Then
      'Gosub speichern
      Poweron = 0
      Print "schlafen gehen"
      'Power
      Power Powersave
   Elseif Poweron = 0 Then
      'Gosub laden
      Poweron = 1
      Print "wurde angeschaltet"                            'wieder schlafen gehen
   End If
Return

EDIT. könnte es sein, das mein taster so stark prellt und deshalb mein avr so schnell zwischen schlafen und aufwecken wechselt das ich nix davon merke?
mein code ist doch eigentlich das gleich wie
http://www.qsl.net/pa3ckr/bascom and avr/sleep and wake-up, watchdog/powerdown.bas
 
Hallo Bonze,
hier kann noch der Doppelpunkt weg
On Int0 Poweron_isr:
Merken solltest du es, da da ja einige Prints sind. Wenn die nicht kommen, passiert auch nichts.

Wichtig ist, dass laut Datenblatt der INT0 den Controller nur aufwecken kann, wenn du so konfigurierst

Config INT0 = Low level

Das funktioniert aber mit deinem Board Taster nicht, weil der einen PullDown dran hat. Nimm mal einen separaten Taster, der gegen GND schaltet und schalte den internen Pullup für den Pin ein.
Oder verwende mal den IDLE Mode mit
Power IDLE.
Dann sollte auch jeder anderer Interrupt Modus gehen.

HBA
 
Doch, der Ausgang des Empfängers ist durch einen PullUp immer high und nur bei Übertragung geht er auf Low. Also genau so, wie dein Taster sein sollte.
Was dir allerdings passieren kann, ist, dass durch Fremdimpulse der Sensor kurz ein Signal ausgibt, was dann deinen Controller aufweckt. Wenn dies zu oft passiert, wird die Batterie auch recht schnell leer.

HBA
 
ne batterie hab ich eigentlich nicht,
das teil soll via netzteil am Stromnetz hängen und soll nicht unnötig energie verbraten wenn mans eigentlich nicht benutzen möchte,.
 
hi, hab heute nochma ein bsschen am code und an der fb rumgespielt, bekomme heute jedoch das hier angezeigt :D
Anzahl Flanken: 36<\r><\n>
61135 19282 7519 20377 1963 2526 1909 2521 1964 2470 1964 2526 1907 2524 1963 2472 1962 2529 1905 2526 1962 4724 734 5952 1963 11429 1961 4727 1960 4727 1961 2522 1910 2527 1906 2577

Anzahl Flanken: 36<\r><\n>
14169 9655 3749 10198 972 1213 1004 1242 1001 1218 999 1212 1005 1243 999 1217 1000 1213 1004 2340 1003 1244 1000 1217 999 5698 998 4565 1004 1244 1000 1216 1000 1215 1003 1243


mit dem genau glichn code den mir damals zur selben fb verwendet haben mit den 68flanken ,.

auch der tsop ist das gleiche modell, wie kann das sein ?
hab den tsop mit nem 4,7µF zwischen vcc und gnd, nem 100ohm vorwiderstand und nem 100n ggen gnd angeschlossen, gleichzeitig noch den internen pullup aktiviert, ich glaube den 100n hatte ich damals nich ,. kanns daran liegen ?

hab gleichzeitig mal versucht den code an die 36pulse anzupasen klappt aber leider ned so wie ich möchte ,. naja werd ma denn 100n rausschmeissen ,. vl klappts dann ja ,.
 
hat jemand ne idee wie man die " taste wird gehalten" funktion richtig implementieren kann ?
falls man ne taste länge gedrueckt halt, wird lang lang lang kurz gesendet , d.h. der wert 14

Code:
Fb_auswertung:
    If Ausgabe_flag = 1 Then
      Ausgabe_flag = 0
      Toggle Statusled                                                'empfang anzeign

     ' Print "Anzahl Flanken: " ; Flanken_index
'      For I = 1 To Flanken_index
'         Print " " ; Flanken_array(i);
'      Next I
'      Print ""

         If Flanken_index = 68 Then                                   '68impulse erkannt

              For I = 5 To 67 Step 2
                If Flanken_array(i) < 1000 Then
                   Shift Ausgabe , Left
                Elseif Flanken_array(i) > 1000 And Flanken_array(i) < 4000 Then

                   Shift Ausgabe , Left
                   Ausgabe.0 = 1
                End If
              Next I
              Adresse_negiert = Not Adresse_negiert
              Befehl_negiert = Not Befehl_negiert

              If Adresse = Adresse_negiert And Befehl = Befehl_negiert Then
                 Print "Empfang ok: Befehl=" ; Adresse ; "(" ; Bin(adresse) ; ")";
              End If

         Elseif Flanken_index = 4 Then                                '4 impulse erkannt

              For I = 0 To 3
                 If Flanken_array(i) < 1000 Then
                    Shift Ausgabe , Left                              '3xlang, 1xkurzer puls = signal wird gehalten
                    Ausgabe.0 = 0
                 Elseif Flanken_array(i) > 1000 Then
                    Shift Ausgabe , Left
                    Ausgabe.0 = 1
                 End If
              Next I

              If Ausgabe >= 14 Then                                   'überprüfen ob signalfolge  eingehalten wurde
                  Print "Taste wird gehalten "
                  Adresse = Adresse_alt                               'vorher gedrueckte taste wieder aufrufen
              End If
         Else
              'Print "nix genaues erkannt"
         End If

        Flanken_index = 400
        Timer1 = 0
        Start Timer1
     If Gifr.intf0 = 0 Then
        Enable Int0                                                   'falls zwischenzeitlich kein INT0 aufgetreten ist
     End If


Tastetnauswertung programm 1-4

adresse=adresse_alt
adressse=0

das mir taste wird gehalten usgegeben wird funzt ja, aber es wird die taste nich nochmal gedrueckt ,.
 
Fernbedienung mit NEC

Hallo -

auch wenn es deine Fernbedienung nicht zu 100% betreffen sollte...

Ich habe (zumindestens vom Aussehen her) die selbe Fernbedienung -
war bei dem Sternenhimmel-Set, welches noch mit anderen Komponenten zu Einsatz kommen soll, mit dabei.

Bei mir basiert der gesendete Code auf das "NEC-Protokoll".

Nach der Überprüfung mit dem "IR-Analyser" (www.ostan.cz) wurden die Adressen und Commands deutlich.
Dafür wird lediglich eine Fotodiode (hatte eine BPW40 noch zur Hand) und die Soundkarte am PC benötigt.

Villeicht kann ja jemand mit meinen Erkenntnissen zur Fernbedienung etwas anfangen...

Die Auflistung (1-4 sind jeweils die Tasten von oben nach unten, unter der jeweilige Farbe) :


[DUNKLER] Adresse: 65280 Command:4 Invert Command:251
[HELLER] Adresse: 65280 Command:5 Invert Command:250
[OFF] Adresse: 65280 Command:6 Invert Command:249
[ON] Adresse: 65280 Command:7 Invert Command:248
[G] Adresse: 65280 Command:8 Invert Command:247
[R] Adresse: 65280 Command:9 Invert Command:246
Adresse: 65280 Command:10 Invert Command:245
[G1] Adresse: 65280 Command:12 Invert Command:243
[R1] Adresse: 65280 Command:13 Invert Command:242
[B1] Adresse: 65280 Command:14 Invert Command:241
[FLASH] Adresse: 65280 Command:15 Invert Command:240
[G4] Adresse: 65280 Command:16 Invert Command:239
[R4] Adresse: 65280 Command:17 Invert Command:238
[B4] Adresse: 65280 Command:18 Invert Command:237
[SMOOTH] Adresse: 65280 Command:19 Invert Command:236
[G2] Adresse: 65280 Command:20 Invert Command:235
[R2] Adresse: 65280 Command:21 Invert Command:234
[B2] Adresse: 65280 Command:22 Invert Command:233
[STROBE] Adresse: 65280 Command:23 Invert Command:232
[G3] Adresse: 65280 Command:24 Invert Command:231
[R3] Adresse: 65280 Command:25 Invert Command:230
[B3] Adresse: 65280 Command:26 Invert Command:229
[FADE] Adresse: 65280 Command:27 Invert Command:228
 

Anhänge

  • Fernbedienung.jpg
    Fernbedienung.jpg
    41,9 KB · Aufrufe: 4

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)