PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Code für Interrupt?



Felixx87
20.09.2005, 12:26
Hi

ich bin ja immernoch ein Neuling in sachen Programmieren und ich hab nun von nem Kollegen in der Firma den auftrag bekommen mithilfe des counter und interrupt eines mega 32 ein signal zu erkennen und immer bei Steigender flanke soll eine LED an oder aus gehen.

nun habe ich versucht das ganze zusammen zu bekommen doch bin ich gescheitert :(

ich finde einfach keinen vernünftigen beispielcode damit ich die aufgabe realisieren kann.

könnt ihr mir helfen?

bertl100
20.09.2005, 14:07
Schreib einfach ein Unterprogramm mit .....onINTx (x steht für den jeweiligen Pin)

Zuerst ganz ober deklarieren, dann interrupts aktivieren mit.......... enable Interrupts....

dann die Unterfunktion schreiben in der du das LED für kurze Zeit leuchten lässt. Dort kannst du auch den counter zum Zählen reinschreiben.

Hab leider keinen Beispielcode.


MFG

Vader

commander7
20.09.2005, 14:15
hallo felix,
poste doch mal den code den du schon hast, dann ist es auch einfacher zu helfen...

gruss commander7

Felixx87
20.09.2005, 14:40
es gibt ja keinen code weil ich bisher nichts gefunden habe um es zu machen

und ich will bei jeden interrupt mit steigender flanke die led einschalten und wenn sie bereits an ist wieder aus machen

mehr solls net können(das proggie)

Guy
20.09.2005, 14:57
Leider habe ich auch erst mit Bascom angefangen, aber ich glaube mit dieser Code müßte es gehen.




$regfile = "m16def.dat"
$crystal = 8000000
On Int0 Int0_int
Enable Interrupts
Enable Int0
Config Pinb.0 = Output


Do
Loop
End

Int0_int:
Toggle Portb.0
Return


mfg
Guy

Felixx87
20.09.2005, 15:16
Cool danke ^^

Schaut super aus!

da muss ich ja nur die frequenz und den chip ändern und fertig :)

DANKE

Frank
20.09.2005, 16:16
Wenn du keine Lust hast viel zu rechnen dann schau dir den Codegenerator an:
https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=169

Felixx87
20.09.2005, 16:30
hmm das Programm von Guy will nich so richtig :(

und danke Frank ist Praktisch aber ´des kann ich grad net gebrauchen ;)

ich soll einen externen interrupt nutzen

Frank
20.09.2005, 17:34
Ach so, hab ich wohl nicht richtig gelesen. Dann musst du generierten Code etwas abändern, so sollte er dann für dich gehen:




$regfile = "m32def.dat" 'rn-control
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Config Pinc.2 = Output
'Hier geben wir der Definition einen schöneren Namen
Led3 Alias Portc.2

Config Int0 = RISING

On Int0 Irq0
Enable Int0
Enable Interrupts
Do
Loop
End


'Interrupt
Irq0:
Toggle Led3
Return

Felixx87
20.09.2005, 17:40
ich bin echt zu blöd dazu :(

klappt net die LED an portc.2 leuchtet und ändert den zustand einfacah nich :(

Frank
20.09.2005, 17:50
Dann wird entweder kein Interrupt ausgeführt oder aber zuviele zu schnell.
Du solltets Signal am Interrupt Eingang mal prüfen, vielleicht brauchts du Pulldown Widerstand am Interrupteingang. PD2 ist übrigens der Interrupt Eingang, also beim Mega32 Pin 18

Das Beispiel ist übrigens auch in unserem WIKI:
https://www.roboternetz.de/wiki/pmwiki.php?n=Main.BasComVergleich4

Felixx87
22.09.2005, 16:41
menno

warum will des nur net funktionieren?????