- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 11

Thema: Pulsweite messen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256

    Frage Pulsweite messen

    Hallo

    Ich möchte gerne die Länge der rot markierten Stellen (also der low-pegel) von folgendem Signal messen: Bild hier  

    Ich habe das ganze auf einem atmega128@16mhz mit der input capture funktion probiert doch irgendwie funktioniert es nicht so recht. So wie der code jetzt ist funktioniert nicht einmal die displayausgabe im while-loop. Habt ihr einen Tipp was ich anders machen sollte und/oder wo der/die Fehler sind?

    Das ist das erste Mal das ich timer/interrupts benutze also seid bitte gnädig mit mir falls ich einen echt dummen anfängerfehler gemacht habe

    Schon im Vorraus danke für eure Hilfe!

    Code:
     
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <stdio.h>
    #include "lib.h"
     
    uint16_t duration_low=0;
    ISR(TIMER3_CAPT_vect)
    {
      //was rising edge
      if((TCCR3B & (1<<ICES3))==0) duration_low=ICR3;
      //switch edge detection mode
      TCCR3B ^=(1<<ICES3); 
      //deactivate interrupts
      cli();
      //set timer to 0
      TCNT3=0;
      //activate Interrupts
      sei();
    }
     
     
    int main(void)
    {
      char Zahl[4];
     
      // Initialization  
      INIT();
     
      //set ICP3/PE7 as input
      DDRE &= ~(1<<PE7);
     
      //deactivate pwm output
      TCCR3A = 0; 
      //Enable Input Capture Interrupt + Overflow Interrupt
      ETIMSK = (1<<TICIE3)|(1<<TOIE3); 
      //Set Prescaler to cpu clock + Edge detection to falling edge + Input capture noise canceler
      TCCR3B |=(0<<CS32)|(0<<CS31)|(1<<CS30)|(0<<ICES3)|(1<<ICNC3);  
      // Clear Input Capture Flag + clear pending interrupts
      ETIFR = (1<<ICF3)|(1<<TOV3);
      //activate global interrupts
      sei();
     
     
      while(1)
      {
     
     //Displayausgabe
     sprintf(Zahl,"%3d",duration_low);
     for (uint8_t i=0; i<=10; i++) LINE_2[i]=Zahl[i];
     SHOW_LINES();
      }
     
      return 0;
    }
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken signal.PNG  
    Geändert von Chypsylon (04.04.2011 um 18:31 Uhr)

Ähnliche Themen

  1. 24V mit AVR ADC messen
    Von dwod im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 01.09.2006, 14:03
  2. Servo MinMax Pulsweite ermitteln
    Von plusminus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 26.07.2006, 17:08
  3. Problem mit Pulsweite messen ( DCF-77 Signal )
    Von ASIC im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 18.02.2006, 21:59
  4. Pulsweite
    Von bertl100 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 06.06.2005, 12:56
  5. Pulsweite messen mit Mega 128
    Von bertl100 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 08.04.2005, 07:08

Berechtigungen

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

Labornetzteil AliExpress