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.