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.