-
        

Ergebnis 1 bis 5 von 5

Thema: Interrupt ! ich bitte um Hilfe

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.02.2005
    Ort
    Stuttgart
    Beiträge
    24

    Interrupt ! ich bitte um Hilfe

    Anzeige

    Hallo an alle,

    Ich habe mir einen IR Sensor mit dem IS471 gebastelt.

    Ich möchte nun sobalt der Sensor etwas erkennt, ihn ausweichen lassen.
    Geht sowas über Schleifen oder Interrupts? -der Atmega16 hat ja nur 2Interrputs

    Weil sonst müsste man ja z.b. folgendes machen:
    4:
    portd.1 = 1
    waitms 1
    if pinb.1 = 0 Then
    portd.1 = 0
    else goto 4
    end if


    Hat jemand einen Gedankestoß oder eine Lösung für dieses Problem?

    Hab schon eine Stunde mit Suchen verbracht, aber weiter bin ich nun auch nicht

    Ich würde mich über jegliche Hilfe freuen!


    Viele Grüße

    FLorian

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo,

    wie kommst Du darauf, daß der M16 nur 2 Interrupts hat?
    Ich hab die Liste gerad nicht parat, die Anzahl bewegt sich aber eher im der Größenordnung um die 20.

    > Hab schon eine Stunde mit Suchen verbracht, aber weiter bin ich nun auch nicht

    vielleicht würde es helfen, wenn Du das was die BASCOM-Help zu einem Suchbegriff anbietet, liest?

    Code:
    Bascom HELP, Suchbegriff "Interrupt", Thema "On Interrupt"
    Enable Interrupts
    Enable Int0                                                 'enable the interrupt
    On Int0 Label2 Nosave                                       'jump to label2 on INT0
    Do                                                          'endless loop
      nop
    Loop
    End
    
    Label2:
     Dim A As Byte
     If A > 1 Then
        Return               'generates a RET because it is inside a condition
     End If
    Return                   'generates a RETI because it is the first RETURN
    Return                   'generates a RET because it is the second RETURN
    Zur Funktion der einzelnen Interrupts -> M16 Datenblatt

    Ciao,
    Werner

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    16.06.2004
    Alter
    30
    Beiträge
    77
    Hallo tms2002,
    also wenn ich dich jetzt richtig verstanden habe, dann meinst du, dass der Mega16 lediglich zwei Ports hat die einen externen interrupt bereitstellen. ja das stimmt. sollte aber auch im normalfall immer reichen.

    zu deinem Problem mit dem IS471F:
    ja du musst deine Ports( an denen die Sensoren hängen) immer wieder abfragen (pollen) und bei Pegeländerung dann darauf entsprechend reagieren (andere Ports schalten o.ä.)

    Gruß
    Baui

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    26.02.2005
    Ort
    Stuttgart
    Beiträge
    24
    danke Baui! hast du einen Codeschnipsel wie ich den Pin pollen kann?
    bzw wie ich schleifen schnell durchlaufen lassen kann? Ich hab auch irgend was von Case Select gehört aber wie das funktioniert hab ich keinen Plan


    gruß

    florian

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    16.06.2004
    Alter
    30
    Beiträge
    77
    hallo florian,
    folgender Code würde zum Beispiel Sensoren am Portd abfragen ob diese eine Hinderniss erkennen oder nicht und darauf mit dem Schalten des Ports B reagieren

    Code:
    $crystal=400000
    
    config portd=input
    config portb=output
    
    do
        if portd<>255 then gosub Hinderniss
        =>mach andere sachen (LCD o.ä.)
    loop
    
    Hinderniss:
    if pind.0=0 then
      'tu was
    elseif pind.1=0 then
      'tu was anderes
    elseif pind.n=0 then
    end if
    Return
    Hoffe das hilft dir ansonsten einfach nochmal melden.

    Gruß
    Baui

Berechtigungen

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