- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 4 von 4

Thema: portd.5 toggeln mit 6 herz

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.01.2008
    Beiträge
    164

    portd.5 toggeln mit 6 herz

    Anzeige

    Praxistest und DIY Projekte
    hallo, ich möchte ein signal mit 6herz toggeln für eine bestimmten zeit . der port ist oc1a (portd.5).
    irgendwie funktioniert das nicht so. die diode blinkt nicht.

    dies ist mein ansatz mit Bascom :
    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 64
    $crystal = 8000000
    $baud = 19200
    Config Timer1 = Counter , Compare A = Clear , Prescale = 1024 
    
    Compare1a = 651                 ' n = 8000000/1024/6/2
                          '
    
    Config Portd.5 = Output
    Start Timer1
    
    Do
    
    Config Timer1 = Counter , Compare A = Toggle
    Wait 2
    Config Timer1 = Counter , Compare A = Clear
    Wait 2
    
    Loop
    End

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.05.2007
    Beiträge
    202
    Hallo sechsrad,

    ich würde das so machen:

    Timer1 als Timer konfigurieren, Startwert setzen, Timer starten.

    Timerinterruptroutine definieren, hier den Startwert neu setzen, Port toggeln und eine Variable hochzählen.

    In der Hauptschleife prüfen, ob die Variable bestimmten Wert schon erreicht hat. Falls ja, Timer1 stoppen.
    Gruß, Stefan

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.05.2007
    Beiträge
    202
    Zum Beispiel so:

    Code:
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    'Timer konfigurieren
    Config Timer1 = Timer, Prescale = 64
    
    Config Portd.5 = Output
    Led Alias Portd.5
    
    dim Zaehler als byte
    
    'Timerinterruptroutine definieren
    On Timer1 Timer_irq
    
    Vorgabe für 12 Herz (doppelte Blinkfrequenz)
    Const Timervorgabe = 55119
    
    'Timer starten
    Enable Timer1
    Enable Interrupts
    
    'Programmhauptschleife
    Do
     if zaehler > 200 then 
          disable Timer1
          led = 0 'zur Sicherheit
     end if
    Loop
    
    
    'Interruptroutine
    Timer_irq:
      Timer1 = Timervorgabe
      Toggle Led
      incr Zaehler
    Return
    Beispiel ist allerdings ungeprüft. Die Berechnung der Timervorgabe habe ich mit rnAVR (hier im Downloadbereich) gemacht.
    Gruß, Stefan

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.01.2008
    Beiträge
    164
    passt alles nicht, es soll später bis auf 36000herz hochgehen für eine ir-diode.

Berechtigungen

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

Labornetzteil AliExpress