www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ICP mit Bascom (Pulslänge messen)


Autor: gde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo .. wie kann ich denn den ICP port (liegt beim mega644 an pind.6) 
zum messen der pause zwischen 2 peaks benutzen ??
als eingangssignal kommt sowas :
[img]http://www.dyyyh.de/quadro/summensignal.jpg[/img]

weis nicht so recht wie ich das mit dem ICP in bascom programmieren kann

Autor: gde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Punkt 6.128 im Handbuch:
"Config Timer1"
Vielleicht hilft das. Sonst sollte das Datenblatt deines Controllers 
helfen können.

Autor: gde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im datenblatt find ich nichts sinnvolles...
irgednwie komm ich grad gar nicht weiter...
habe sowas gefunde:

Dim Puls(10) As Word                                        'Syncimpuls 
plus 9 Servos
Dim Kanal As Byte

Kanal = 1
      On Icp1 Messen Nosave                                 'Pulslänge 
messen mit ICP-Eingang
      On Ovf1 Kreset Nosave                                 'Kanalzähler 
rücksetzen

      Config Timer1 = Timer , Prescale = 1 , Capture Edge = Rising 
'rising oder falling anpassen an das Signal



      Enable Ovf1 
'Overflow-Interrupt
      Enable Icp1 
'Capture-Interrupt

      Enable Interrupts


Cursor Off
Cls

      Do
       Locate 1 , 1
       Lcd Puls(2) ; " " ; Puls(3) ; " " ; Puls(4) ; " "    'Puls(2) ist 
Kanal 1, Puls(3) ist Kanal 2 usw.
       Locate 2 , 1
       Lcd Puls(5) ; " " ; Puls(6) ; " " ; Puls(7) ; " " 
'Puls(x)=4000 entspricht 1ms, 8000 entspricht 2ms... (4 Mhz 
Prozessortakt)
      Loop

Messen:
      push r10
      push r11
      push r24
      push r25
      push r26
      push r27
      in r24,sreg
      push r24

      Puls(kanal) = Timer1
      Timer1 = 250000                                       'gilt für 4 
Mhz Prozessortakt  50000
      Incr Kanal

      pop r24
      !Out Sreg , R24
      pop r27
      pop r26
      pop r25
      pop r24
      pop r11
      pop r10

     Return


Kreset:
    push r24
    in r24,sreg
    push r24

    Kanal = 1

    pop r24
    !Out sreg,r24
    pop r24
   Return

End

aberverstehe nicht was das tut und funktionieren tuts auch nich,..
muss doch auch ohne assembler gehen ??

Autor: bascom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wichtigste BEtsnadteile für die ICP-Messung:

On Icp1 Messen Nosave 'wobei Nosave wohl dafür sorgt, dass keine 
Register
                      'gesichert werden ==> Handbuch!

Config Timer1 = Timer , Prescale = 1 , Capture Edge = Rising
                      'rising oder falling anpassen an das Signal


Enable Icp1
Messen:
.
.
W = Capture1
.
Return

Wenn du die Pausenlänge zwischen fallender und steigender Flanke messen 
willst, dann mußt du noch die Edge in der ISR umschalten.
Und solange du den Wertebereich des Timers nicht begrenzt (CTC-Mode 
o.ä.), kannst du die beiden Werte einfach voneinander subtrahieren.

Autor: gde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke werd ich mal versuchen...

Autor: gde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie hoch muss denn die spannung sein, damit er das signal erkennt...
hab grade festgestellt, das die peaks nur ca 2,1 V haben... das reicht 
nicht zum erkennen oder ?? muss man das hardwaretechnichs lösen ?? bzw 
wie geht das denn am einfachsten?? hab mosfetes und so da,,, weis nur 
net wie ich die da einbauen soll...

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest den Analog-Komparator verwenden.

Autor: humie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.