-
        

Ergebnis 1 bis 5 von 5

Thema: Timer0 als counter - Input wo?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    21.03.2007
    Ort
    El Paso - La Palma - Kanaren
    Alter
    66
    Beiträge
    34

    Timer0 als counter - Input wo?

    Anzeige

    Hallo,

    für die Experten sicherlich eine naive Frage, aber ich fange gerade an und hänge schon fest.

    Ich habe eine Gabel-Lichtschranke, die ich an einen Atmega128 anschließen will. Über einen Spannungsteiler habe ich den Ausgang der Lichtschranke so eingestellt, daß 4,5V anliegen, wenn der Lichtstrahl unterbrochen wird. Bei Durchlicht geht der Ausgang auf GRND

    Die Konfigurierung des Timers als Counter erscheint mir kein Problem zu sein, dafür gibt es gut dokumentierte Bascom Files, aber an welchen Port kommt denn das Ausgangskabel der Lichtschranke?

    Kann man jeden x-beliebigen Port als Input für den Counter definieren, oder wie geht das?
    Oder gibt es definierte Ports für die Counter?
    In der mir vorliegenden Dokumentation habe ich nichts gefunden.

    Gruß

    Peter

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Ich kenne das Bascom Beispiel nicht, aber es gibt die Pin T1, T2,T3. Das sind Counter Eingänge. Du brauchst nur den entsprechenden Clock-Source auszuwählen.
    Hubert

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    21.03.2007
    Ort
    El Paso - La Palma - Kanaren
    Alter
    66
    Beiträge
    34
    Hallo Hubert,

    der Code stammt aus der Bascom-Hilfe

    Code:
    'name                     : timer0.bas
    
    'copyright                : (c) 1995-2005, MCS Electronics
    
    'purpose                  : shows how to use TIMER0 related statements
    
    'micro                    : 90S2313
    
    'suited for demo          : yes
    
    'commercial addon needed  : no
    
    '-----------------------------------------------------------------------------------------
    
    
    
    
    $regfile = "2313def.dat"                                    ' specify the used micro
    
    $crystal = 8000000                                          ' used crystal frequency
    
    $baud = 19200                                               ' use baud rate
    
    $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
    
    
    
    
    
    
    
    'First you must configure the timer to operate as a counter or as a timer
    
    'Lets configure it as a COUNTER now
    
    'You must also specify if it will count on a rising or falling edge
    
    
    
    
    Config Timer0 = Counter , Edge = Rising
    
    'Config Timer0 = Counter , Edge = falling
    
    'unremark the line aboven to use timer0 to count on falling edge
    
    
    
    
    'To get/set the value from the timer access the timer/counter register
    
    'lets reset it to 0
    
    Tcnt0 = 0
    
    
    
    
    Do
    
      Print Tcnt0
    
    Loop Until Tcnt0 >= 10
    
    'when 10 pulses are count the loop is exited
    
    'or use the special variable TIMER0
    
    Timer0 = 0
    Irgendwo habe ich inzwischen in der BASCOM-Hilfe gefunden, daß PortB.0 als Inpulseingang für Timer/Counter0 konfiguriert werden kann:

    The Port B pins with alternate functions are shown in the following table:

    When the pins are used for the alternate function the DDRB and PORTB register has to be set according to the alternate function description.

    Port B Pins Alternate Functions

    PORTB.0 T0 (Timer/Counter 0 external counter input)



    Ist der obengenannte Code jetzt alles was man braucht?
    Wird PortB.0 damit automatisch als Pulse-Input für den Counter geschaltet?

    Gruß

    Peter

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Beim Mega128 gibt es keinen T0, es gibt nur T1, T2, T3. Beim Mega16 wäre auf PORTB 0 der T0. Schau mal in dem Beispiel für welchen Prozessor es ist, sonst musst du das anpassen. Mehr ist nicht zu machen.
    Hubert

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    21.03.2007
    Ort
    El Paso - La Palma - Kanaren
    Alter
    66
    Beiträge
    34
    Danke Hubert !

    Ich werde jetzt einfach mal die Lichtschranke anschließen, Code hochladen und dann sehe ich ja, ob der Port richtig ist oder nicht.

    Gruß

    Peter

Berechtigungen

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