- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Ungewollte Aktivierung einer Funktion. Bitte helft mir!!!

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    21.10.2005
    Alter
    36
    Beiträge
    41

    Ungewollte Aktivierung einer Funktion. Bitte helft mir!!!

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    kann mir jemand helfen.
    schreibt irgend was, was euch dazu einfällt.

    ich habe eine schaltung aufgebaut die richtig sein soll.???
    kann sie nur nicht so programieren dass sie löpt.

    Bild hier  
    gegeben:

    -Vcc = 5v gleichspannung (stabiel)
    -GND = 0V
    -PD = pinc.4 ( input)


    Also ich habe das:

    -RN-Control 1.4 Mega32
    -[BSctrl32]
    und möchte einen taster anschliessen an den I/O port anschliesen.
    habe ich nun auch, aber mit meiner programmierung funtzt es net richtig. Löst manchmal die Sub Ausweichen aus, wenn die kontakte sich nicht berühren.


    ich proge mit Bascom AVR-Basic.
    hier mein prog:

    Code:
    ()$regfile = "m32def.dat"
    $crystal = 16000000
    
    
    Declare Function Tasterab() As Word
    Declare Sub Vor()
    Declare Sub Ausweichen()
    
    Config Pinc.4 = Input
    'Motor
    'links
    Config Pinc.6 = Output 'Linker Motor Kanal 1
    Config Pinc.7 = Output 'Linker Motor Kanal 2
    Config Pind.4 = Output 'Linker Motor PWM
    'rechts
    Config Pinb.0 = Output 'Rechter Motor Kanal 1
    Config Pinb.1 = Output 'Rechter Motor Kanal 2
    Config Pind.5 = Output
    
    
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    Tccr1b = Tccr1b Or &H02
    
    Sound Portd.7 , 400 , 450 'BEEP
    Sound Portd.7 , 400 , 250 'BEEP
    Sound Portd.7 , 400 , 450
    
    
    Dim Taster As Word
    Do
    
    Taster = Tasterab()
    If Taster = 1 Then
    Call Ausweichen()
    Sound Portd.7 , 300 , 200
    Else
    Call Vor()
    End If
    Loop
    End
    
    Function Tasterab()
    
    Tasterab = 0
    If Pinc.4 = 0 Then
    Tasterab = 1
    Else
    Tasterab = 0
    End If
    
    End Function Tasterab() As Word
    
    Sub Vor()
    
    Portc.6 = 0
    Portc.7 = 1
    Portd.4 = 1
    
    Portb.0 = 0
    Portb.1 = 1
    Portd.5 = 1
    
    
    Pwm1a = 220
    Pwm1b = 220
    
    
    End Sub Vor()
    
    
    Sub Ausweichen()
    Pwm1a = 0
    Pwm1b = 0
    Wait 1
    Portc.6 = 1
    Portc.7 = 0
    Portd.4 = 1
    
    Portb.0 = 1
    Portb.1 = 0
    Portd.5 = 1
    Pwm1a = 200
    Pwm1b = 200
    Wait 3
    Pwm1a = 0
    Pwm1b = 0
    Portc.6 = 0
    Portc.7 = 1
    Portd.4 = 1
    
    Portb.0 = 1
    Portb.1 = 0
    Portd.5 = 1
    Pwm1a = 200
    Pwm1b = 200
    Wait 1
    Pwm1a = 0
    Pwm1b = 0
    Wait 5
    
    
    
    End Sub Ausweichen()
    WArum oder besser habe ich einen fehler im prog oder in der schaltung ?????



    DANKE der UriAn
    BITTE HELFT MIR.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    26.01.2005
    Ort
    Neuburg / Donau
    Alter
    63
    Beiträge
    80

    Ports deklarieren

    Mich wundert, daß hier noch keiner geantwortet hat.
    Dein Prog ist mir allerdings etwas zu hoch. Mich wundert, daß dein Bascom hier nicht meckert, denn so wie ich das sehe (bin selbst Anfänger) stimmen die Deklarationen der Ports nicht.

    Config Pinc.4 = Input <- deklariert c.4 als Eingang
    PortC.4=1 <- aktiviert internen Widerstand, spart also R2

    Das Ganze ist nicht sehr logisch, funktioniert aber leider so.

    Hier nun der Fehler:
    Config Pinc.6 = Output <- Eingang (PinC.6) ist Ausgang (PortC.6) ?

    So sollte das dann laufen:
    Config PortC.6 = Output <- Achtung: Ausgang = Port

    Hier ein kleines Prog zum testen:

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000 
    
    config PinC.4 = input            'PinC.4 als Eingang
    PortC.4 = 1               'internen Pullup ein, Taster geht auf Masse
    
    config PortC.5 = Output   'Port C.5 als Ausgang , 470R - LED - Gnd
    
    do
    
    if PinC.4 = 0          ' Taster betätigt (0)
    then PortC.5 =1     ' Led an
    else Port C.5 = 0   ' sonst aus !
    
    loop 
    end
    Das sollte funktionieren, hab grad nix zum testen da.

    Die Antwort kommt etwas spät, hilft aber vieleicht anderen, die die selben Probleme haben.

    Bernd
    Gruß Bernd (Gandalf)

    Schrott im Keller macht das Erfinden schneller. ( Dietrich Drahtlos )

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.12.2005
    Ort
    Tann / ZH
    Alter
    68
    Beiträge
    264
    Zusätzlich dürfte der Taster prellen...
    MfG
    Ruedi

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Config Pinc.6 = Output <- Eingang (PinC.6) ist Ausgang (PortC.6) ?
    Die Umschaltung einzelner Pins wird sowohl bei Output als auch bei Input mit "Pin" gemacht.

    Also ist die Schreibweise pinc.6 =Output richtig

    Gruß
    Christopher

Berechtigungen

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

Solar Speicher und Akkus Tests