Hi,
also jetzt schluß mit dieser Diskusion!
Leider ist jeder Support zeitlich eingeschränkt, ich verstehe da Frank völlig!
PS: Man muss schon auch selber arbeiten wenn man im Winter nicht frieren will. Man kann den Kunden nur die die Türe zeigen, aufmachen und durchgehen muss er schon selber!
Hier ein Code der das ganze mal zeigt.
Code:
'PowerDown-Modus
'----------------------
' LED an PD5
'Taster 1 an INT0/PD2
'Funktion:
'In der Hauptschleife wird bei jedem Durchlauf der Zustand der LED geändert.
'Danach wird der AVR in den PowerDown-Zustand versetzt und damit "stillgelegt".
'Erst Ein externer Interrupt0 (Tastendruck) aktiviert den AVR wieder und das
'Programm wird fortgesetzt. Die Interrupt0-Routine wird in unserem Fall zwar
'als erste Aktion nach dem Interrupt ausgeführt, aber wir tun dort nichts
'weiter, weil es nur um die Demonstration der Reaktion in der Hauptschleife
'geht. Die Reaktion auf den Tastendruck ist übrigens jedes mal anders, da so
'lange Interrupts gefeuert werden, wie die Taste gedrückt ist (keine genau
'zu definierende Zeit). Es kann also sein, daß man die Taste mehrfach drücken
'muß.
'--------------------------------------
$regfile = "m32dat.def"
$crystal = 4000000
On Int0 Onint0 'Interrupt-Routine für Interrupt0 festlegen
Ddrd = &B11111011 'PD5 Ausgang, PD2/INT0 Eingang, Rest egal
Portd.2 = 1 'PullUp von PD2/INT0 aktivieren
Config Int0 = Low Level 'Externe Interrupts bei Low Level feuern (RISING oder FALLING beendet PowerDown nicht!)
Enable Int0 'Externen Interrupt0 einschalten
Enable Interrupts 'Interrupts global
Main:
Portd.5 = Not Portd.5 'LED-Status ändern (von ein nach aus oder von aus nach ein)
Powerdown 'PowerDown-Ende nur durch Reset, Watchdog Reset oder INTx bei Config INTx=LOW LEVEL
'Idle 'Idle-Ende auch bei Config INTx=FALLING u.a.m.
Goto Main
'--------------------------------------
Onint0: 'Wird angesprungen, aber wir tun hier nichts
Return
Viel spaß beim testen.
Bye Ulli
Lesezeichen