Archiv verlassen und diese Seite im Standarddesign anzeigen : ICP benutzen ?? (länge von pulsen messen
Hallo .. wie kann ich denn den ICP als interrupt definieren.. bzw wie funktioniert der?? liegt beim mega644 an pind.6
als eingangssignal kommt sowas :
http://www.dyyyh.de/quadro/summensignal.jpg
jetz will ich das signal an den icp pin anlegen und die länge der pausen zwischen 2 peaks messen...
hmm ?? weis da keiner was ?? icp benutzen is doch zimlic<h ne standard anwendung oder ??? kann aber irgendwei nix finden... im google auch nichts was funktioniert...
kann aber irgendwei nix finden...
im google auch nichts
Du suchst auch falsch, schau mal im Dattenblatt nach Input Capture, dort steht alles nötige
Gruß Sebastian
da teht aber nicht wie ich das im bascom benutze... nur wie das so theoretisch funktioniert..
Schau mal ins http://www.rclineforum.de unter der Rubrik Elektronik rein.
Soweit ich weiß haben die da sogar eine Beispielcode für Bascom drin.
Prinzipiell weiß ich auch wie das mit dem ICP geht, ich progge aber in "C".
Du gibst den Input Capture Interrupt und den Globalen Interrupt frei.
Du schreibst eine Interruptroutine, die das Input Capture Register ausliest und in einer ( mehrerern ) Variable abspeichert. Gleichzeitig setzt Du ein Flag, welches einen neuen Capture Wert signalisiert.
Dieses Flag fragst Du im Hauptprogramm ab und verarbeitest Die Werte bei gesetztem Flag.
Man kann in der Capture Interrupt Routine auch das Sensing - steigende oder fallende Flanke für die nächste Aktion verstellen und somit 2 Werte für die Impuls, sowie Pausendauer gewinnen.
hmm ok.. prgrammtechnisch hab ich das jetz so halbwegs gelöst.. problem is nur das mein signal nur ca 2 volt hat.. damit kann der controller nix anfangen oder ??? wie kann man das denn möglichst einfach verstärken ??
hmm.. irgendwie bin ich gerade leicht ueberfordert... gebe ein 5V rechtecksignal auf den icp ... (
die gesammtlänge des signals is 20 ms und wiederholt sich dann, leicht modifiziert )programm sieht so aus:
$regfile = "m644def.dat"
$regfile = "m644def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 20000000
$baud = 9600
Config Timer1 = Timer , Prescale = 8 , Edge = Rising
Start Timer1
Dim Kanal(9) As Word
Dim X As Word
Dim Y As Word
On Capture1 Get_kanal Nosave
Config Pind.6 = Input ' icp pin
Enable Capture1
Enable Interrupts
Y = 1
Do
For X = 1 To 8
Print Kanal(x) ; " " ;
Next X
Print Kanal(9)
Loop
Get_kanal:
Push R24
push r25
push r26
push r27
Kanal(y) = Capture1
Incr Y
Timer1 = 0
pop r27
pop r26
pop r25
pop r24
If Y = 9 Then
Y = 1
End If
Return
End
wenn das signal anliegt passiert absolut gar nichts... wenn ich aber mit dem finger auf den icp fasse springt er in die interrupt routine...
macht irgednwie keinen sinn finde ich...
hmm.. irgendwie bin ich gerade leicht ueberfordert... gebe ein 5V rechtecksignal auf den icp ...
wenn das signal anliegt passiert absolut gar nichts... wenn ich aber mit dem finger auf den icp fasse springt er in die interrupt routine...
macht irgednwie keinen sinn finde ich...
Massebezug verkehrt oder nicht vorhanden ?
masse von dem signal = gnd vom uC das sollt ja wohl ok sein...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.