- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 4 von 4

Thema: [gelöst] Code per Tastendruck senden

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.04.2005
    Ort
    89331 Burgau
    Beiträge
    32

    [gelöst] Code per Tastendruck senden

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi Leute

    habe da ein kleines Problem,

    mit einem Taster möchte ich über die RS232 einen Code versenden,
    aber bei der Ansicht im Terminalprogramm wird an den gesendeten Code noch zig mal eine 0 mit ausgegeben

    wie kann ich das verhindern
    und der Code soll bei Tastendruck auch nur einmal gesendet werden.

    danke schon mal und Gruß Gerhard

    Code:
    $regfile = "attiny2313.dat"
    $crystal = 4000000
    $baud = 9600
    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 1
    
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    Ddrd = &B01110010
    Ddrb = &B11111100
    
    Portd = 0
    Portb = 0
    
    
    Do
    
     Debounce Pinb.0 , 1 , Step100 , Sub
     Debounce Pinb.1 , 1 , Step200 , Sub
    
    
    Loop
    
    Step100:
     If Pinb.0 = 1 Then
     Printbin 100 ; 100 ; 100
     End If
     Waitms 1
    Return
    End
    
    Step200:
     If Pinb.1 = 1 Then
     Printbin 100 ; 110 ; 110
     End If
     Waitms 1
    Return
    End
    EDIT: noch ein Phänomen

    ich habe am PD0 noch einen Taster hängen, der aber im Prog. nicht deklariert ist,
    wird dieser gedrückt, kommen auch lauter nullen über die RS232 ???

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Ich hätte es so gemacht, da ich mit dem Debounce Befehl auf Kriegsfuß stehe... Ich entprelle Hardwareseitig...

    Code:
    $regfile = "attiny2313.dat"
    $crystal = 4000000
    $baud = 9600
    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 1
    
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    Ddrd = &B01110010
    Ddrb = &B11111100
    Dim Vari As Byte
    
    Tast1alt Alias Vari.0
    Tast2alt Alias Vari.1
    Tast1 Alias Pinb.0
    Tast2 Alias Pinb.1
    
    Portd = 0
    Portb = 0
    
    
    Do
    
    If Tast1 = 1 Then
       If Tast1alt = 0 Then
          Set Tast1alt
          Gosub Step 100
       End If
    Else
       Reset Tast1alt
    End If
    
    If Tast2 = 1 Then
       If Tast2alt = 0 Then
          Set Tast2alt
          Gosub Step 100
       End If
    Else
       Reset Tast2alt
    End If
    
    
    Loop
    End
    
    Step100:
     Printbin 100 ; 100 ; 100
     Waitms 1
    Return
    
    Step200:
     Printbin 100 ; 110 ; 110
     Waitms 1
    Return
    Die 2 StoppBits und die Polarität sind korrekt?
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.04.2005
    Ort
    89331 Burgau
    Beiträge
    32
    Joop

    Stopbits stimmen, da brauche ich 2 für die Software
    Polarität ? da meinst du die Taster auf Plus, stimmt auch da ich schon ne forgefertigte Platine habe

    hast du evtl. ne Erklärung, wo die vielen Nullen herkommen,
    im Terminalprogi siehts so aus:

    100 100 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    aber immer unterschiedliche Anzahl von Nullen,

    oder hab ich im Atmel einen Meister Nullinger sitzen, der mir ein Register rausklopft

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    09.04.2005
    Ort
    89331 Burgau
    Beiträge
    32
    Ihr dürft mich jetzt steinigen

    das Problem lag das der plus Pin vom Atmel nicht richtig gelötet war ...

    der obere Code von mir funktioniert 1a, auch mit debounce


Berechtigungen

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

Labornetzteil AliExpress