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...
Hallo .. wie kann ich denn den ICP als interrupt definieren.. bzw wie funktioniert der?? liegt beim mega644 an pind.6
als eingangssignal kommt sowas :
Bild hier
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...
Du suchst auch falsch, schau mal im Dattenblatt nach Input Capture, dort steht alles nötigekann aber irgendwei nix finden...
im google auch nichts
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
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:
wenn das signal anliegt passiert absolut gar nichts... wenn ich aber mit dem finger auf den icp fasse springt er in die interrupt routine...Code:$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
macht irgednwie keinen sinn finde ich...
Zitat von goara
Massebezug verkehrt oder nicht vorhanden ?
Gruß
Ratber
masse von dem signal = gnd vom uC das sollt ja wohl ok sein...
War nur ne Idee
Gruß
Ratber
Lesezeichen