Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

(Bascom Interrupts (Mega8))
(Bascom Interrupts (Mega8))
Zeile 19: Zeile 19:
  
  
Am Anfang muss man zuerst den beabsichtigten Interrupt mit „Config“, konfigurieren.  
+
Am Anfang muss man den beabsichtigten Interrupt mit „Config“, konfigurieren.  
 
Dann das generelle einschalten von Interrupts.
 
Dann das generelle einschalten von Interrupts.
 
Dann mit „Enable“ den bestimmten Interrupt einschalten.
 
Dann mit „Enable“ den bestimmten Interrupt einschalten.
Zeile 25: Zeile 25:
 
wenn dieser ausgelöst wird. (ISR= Interrupt Service Routine)
 
wenn dieser ausgelöst wird. (ISR= Interrupt Service Routine)
  
Grundsätzlich kann man das so betrachten, dass es das Hauptprogramm gibt (mit eventuellen Unterprogrammen) und die Interrupt Service Routinen (ISR).
+
Grundsätzlich kann man das so betrachten, dass es das Hauptprogramm gibt  
Bei einem Interrupt, wird das Hauptprogramm unterbrochen und der Prozessor spring in die ISR. Die ISR wird abgearbeitet und mit Return wird wieder an die Stelle zurückgesprungen, wo vorher das Hauptprogramm unterbrochen wurde.
+
(mit eventuellen Unterprogrammen) und die Interrupt Service Routinen (ISR).
  
Man soll darauf achten, dass in der ISR immer nur kurze Anweisungen abgearbeitet werden und der Hauptteil dann im Hauptprogramm bearbeitet wird.
+
Bei einem Interrupt, wird das Hauptprogramm unterbrochen und der Prozessor
 +
springt in die ISR. Die ISR wird abgearbeitet und mit Return wird wieder an
 +
die Stelle zurückgesprungen, wo vorher das Hauptprogramm unterbrochen wurde.
 +
 
 +
Man soll darauf achten, dass in der ISR immer nur kurze Anweisungen abgearbeitet  
 +
werden und der Hauptteil dann im Hauptprogramm bearbeitet wird.
 
Sonst kann es sein, dass man den Prozessor damit blockiert.
 
Sonst kann es sein, dass man den Prozessor damit blockiert.
  
Zeile 36: Zeile 41:
 
'''Interrupt: Int0'''
 
'''Interrupt: Int0'''
  
  Config Int0 = Low Level ‘Configuriere Int0  auf Low Level
+
  Config Int0 = Low Level ‘Configuriere Int0  auf Low Level
 
  Enable Interrupts ‘einschalten der Interrupts
 
  Enable Interrupts ‘einschalten der Interrupts
 
  Enable Int0 ‘einschalten von Interrupt Int0
 
  Enable Int0 ‘einschalten von Interrupt Int0
Zeile 51: Zeile 56:
  
  
Int0 ist ein Interrupt, der ausgelöst wird, wenn am Pin.d2 (INT0) beim Mega8, eine Veränderung auftritt. (Int1 für Pin.d3)
+
Int0 ist ein Interrupt, der ausgelöst wird, wenn am INT0)(Pin.d2 beim Mega8),
 +
eine Veränderung auftritt. (Int1 bei Pin.d3)
 +
 
 
Es gibt für diese Interrupts drei Einstellmöglichkeiten auf die sie reagieren können:
 
Es gibt für diese Interrupts drei Einstellmöglichkeiten auf die sie reagieren können:
 +
 
Low Level  =  reagiert wenn der Pin auf Masse gesetzt wird.
 
Low Level  =  reagiert wenn der Pin auf Masse gesetzt wird.
 
Falling        =  reagiert auf eine fallende Flanke
 
Falling        =  reagiert auf eine fallende Flanke
 
Rising        =  reagiert auf eine steigende Flanke
 
Rising        =  reagiert auf eine steigende Flanke
 +
 +
 +
--[[Benutzer:Roberto|Roberto]] 11:18, 13. Jan 2006 (CET)

Version vom 13. Januar 2006, 11:18 Uhr

Bascom Interrupts (Mega8)

Struktur:

Config InterruptXXX  		‘Konfiguriere Interrupt
Enable Interrupts		‘generell Interrupts zulassen
Enable  InterruptXXX		‘schalte speziell den InterruptXXX ein
On  InterruptXXX   SprungXXX	‘verzweige bei InterruptXXX zu SprungXXX

Do
....Hauptprogramm		‘Hauptprogramm
Loop
End

SprungXXX:			‘Unterprogramm von InterruptXXX
....Ausführung			‘arbeitet hier etwas ab und springt mit Return 
Return				‚ wieder zurück, zum Hauptprogramm


Am Anfang muss man den beabsichtigten Interrupt mit „Config“, konfigurieren. Dann das generelle einschalten von Interrupts. Dann mit „Enable“ den bestimmten Interrupt einschalten. Mit „On“ das Unterprogramm (ISR) definieren, an die der Interrupt springen soll, wenn dieser ausgelöst wird. (ISR= Interrupt Service Routine)

Grundsätzlich kann man das so betrachten, dass es das Hauptprogramm gibt (mit eventuellen Unterprogrammen) und die Interrupt Service Routinen (ISR).

Bei einem Interrupt, wird das Hauptprogramm unterbrochen und der Prozessor springt in die ISR. Die ISR wird abgearbeitet und mit Return wird wieder an die Stelle zurückgesprungen, wo vorher das Hauptprogramm unterbrochen wurde.

Man soll darauf achten, dass in der ISR immer nur kurze Anweisungen abgearbeitet werden und der Hauptteil dann im Hauptprogramm bearbeitet wird. Sonst kann es sein, dass man den Prozessor damit blockiert.



Interrupt: Int0

Config Int0 = Low Level	‘Configuriere Int0  auf Low Level
Enable Interrupts		‘einschalten der Interrupts
Enable Int0			‘einschalten von Interrupt Int0
On Int0 Isr_von_Int0		‘springe zu Isr_von _Int0   

Do
....Hauptprogramm
Loop
End

Isr_von_Int0:			‘ISR von Int0
.....Programm-Code
Return


Int0 ist ein Interrupt, der ausgelöst wird, wenn am INT0)(Pin.d2 beim Mega8), eine Veränderung auftritt. (Int1 bei Pin.d3)

Es gibt für diese Interrupts drei Einstellmöglichkeiten auf die sie reagieren können:

Low Level = reagiert wenn der Pin auf Masse gesetzt wird. Falling = reagiert auf eine fallende Flanke Rising = reagiert auf eine steigende Flanke


--Roberto 11:18, 13. Jan 2006 (CET)


LiFePO4 Speicher Test