PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ICP benutzen ?? (länge von pulsen messen



goara
26.01.2008, 19:32
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...

goara
26.01.2008, 23:38
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...

izaseba
27.01.2008, 00:35
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

goara
27.01.2008, 00:57
da teht aber nicht wie ich das im bascom benutze... nur wie das so theoretisch funktioniert..

wkrug
27.01.2008, 11:12
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.

goara
27.01.2008, 17:35
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 ??

goara
28.01.2008, 20:01
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...

Ratber
28.01.2008, 23:51
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 ?

goara
29.01.2008, 14:52
masse von dem signal = gnd vom uC das sollt ja wohl ok sein...

Ratber
30.01.2008, 01:13
War nur ne Idee