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
Punkt 6.128 im Handbuch: "Config Timer1" Vielleicht hilft das. Sonst sollte das Datenblatt deines Controllers helfen können.
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 ??
  Guckst du hier http://bascom-forum.de/index.php?PHPSESSID=181a1c48919be97c8fd74f5c71b62f97&topic=10.msg827#msg827
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.
  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...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
  
  Bestehender Account
  
  
  
  Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
  Noch kein Account? Hier anmelden.
 Thread beobachten
 Thread beobachten Seitenaufteilung abschalten
 Seitenaufteilung abschalten