PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt mit Bascom einstellen



detlefh
06.06.2005, 08:49
Hallo Leute,

Ich bin neu in diesem Forum und möchte daher erst einmal alle begrüßen.

Als Neuling bahe ich noch einige Startprobleme. Daher kommen bestimmt noch ein paar Anfängerfragen. Ich hoffe das ist nicht so schlimm.

Als ertses muss ich sagen, das die Hardware RN-Mega8 echt klasse ist -> ging leicht und schnell aufzubauen und es hat nach dem Einspielen des Beispiels und dem Verstellen der Fuse-Bits gleich alles funktioniert....

Ich habe das Board RN-Atmega 8 V.1.4 und möchte Pulse messen. dazu wird ein Interrupt an Int0 ausgelöst.
Kann mir jemand sagen, wie man den Interrupt auf positive oder negative Flanke einstellt, oder kann der Mega8 und eine Flankenart?
Gibt es bei Bascom Befehle dafür oder muss man dazu Assembler nutzen?

Vorab vielen Dank für eine Antwort !

Grüße
Detlef

bertl100
06.06.2005, 09:09
Wenn du die Pulslänge, also nur das "Hi" oder "Lo" messen willst, dann gibt es den Befehl --------Pulsein-------- schau mal in der Hilfe nach
Dieser Befehl wartet bis eine positive oder negative,je nach einstellung, Flanke kommt und mist dann auch nur das Hi oder Lo.

MFG

Bertl

detlefh
06.06.2005, 11:54
Ich will die Pulslänge von Flanke 0->1 zu Flanke 0->1 messen.
Die Pulse liegen im Bereich von 60-120µs. Ist der Befehl nicht zu langsam, oder lässt er sich so einstellen?

Grüße
Detlef

bertl100
06.06.2005, 12:02
Das ist dann die Periodendauer einer Flanke, also von Hi nach Hi.
Dazu gibt es den "capture Timer". Dieser wird, je nach Deklaration, bei fallender oder steigender Flanke gestartet und gibt den aktuellen Zählerstand
bei der nächsten Flanke aus.
Ich bin selber noch am probieren mit dem capture Timer, aber grundsätzlich funktioniert es so.

detlefh
07.06.2005, 07:04
Hallo,

->Dazu gibt es den "capture Timer".

ich konnte nichts über5 diesen Befehl finden. Ist er Versionabhängig?
Ich werde weitersuchen und evtl. auch mal probieren.

Nun noch einmal zu meine 1.Frage: Wie kann ich die Flanke (pos. oder neg.) beim Interrupt einstellen?

Viele Grüße
Detlef

Apollo
07.06.2005, 22:09
Die flanken werden mit EDGE=RISING/FALLING eingestellt.
Erklärung: siehe Bascom Hilfe
Da ist das schön mit Beispielen erklärt.

07.06.2005, 23:00
Hallo,

ja das stimmt, die Hilfe ist ganz Schön !

Zur Flanke habe ich gefunden, dass Edge erst ab Int4 eingestellt werden kann. Da der Mega8 nur Int0 und Int1 hat scheint es nicht zu gehen.

Oder habe ich noch etwas übersehen?

Grüße
Detlef

Apollo
08.06.2005, 09:48
laut datenblatt sollte es gehen. probier es doch mal aus.
ich hab nur nen mega128.

PicNick
08.06.2005, 10:04
Beim BasCom 1.11.7.8 geht das mit den Flanken bei int0/1 (Vorher hat er nur LOW-Level angeboten)

detlefh
08.06.2005, 14:46
Hallo,

die Downloadversion ist V1.11.7.

Wie und wo geibt es die V1.11.8 als Demo?

Grüße
Detlef

PicNick
08.06.2005, 15:41
Auf meiner CD ist ein Korrektur Exe-drauf, das meint, es sei diese Version

08.06.2005, 16:53
die 1.118 habe ich bei www.rasenack.com im downloadbereich gesehen.
ist auch diese korregierte datei dabei

detlefh
08.06.2005, 19:08
Danke !
Ich werde es mal ausprobieren !

Gruß
Detlef

13.06.2005, 15:27
Ich hatte bei der alten Version auch das Problem, dass Bascom die Interrupts nur bei Low Level auslösen wollte, aber man kann das auch einfach selber in die Hand nehmen und das dafür zuständige Register enstprechend einstellen, z.b so


On Int0 Onint0
On Int1 Onint1


Mcucr = 00001010 'Interrupt 0 und 1 bei H/L-Flanke auslösen
Enable Int0
Enable Int1
Enable Interrupts

Wie Mcucr genau eingestellt werden muss kann man aus dem Assembler Tutorial hier http://www.mikrocontroller.net/tutorial/interrupts entnehmen.