Erledigt LCD Hintergrund Beleuchtung Per zeit

Thorsten_Sch

Mitglied
31. Okt. 2010
152
0
16
47
HH
Sprachen
  1. BascomAVR
Hallo Forum und Bastler

Ja ich mal wieder, hab ein proplem und zwar geht es um ein Code von Fred "SCHREIBTISCHSTEUERRUNG"
ich würde gern das nach einen tasten 1-5 die beleuchtung aus geht nach zeit.....
wenn ich die taste 1-5 wieder drücke an geht und wieder aus geht nach zeit.

ich hoffe es wahr verständtlich.

Gruß Thorsten Sch

Der Code hier->


CodeBox BascomAVR
'****noch ein Versuch****
$lib "Lcd_i2c.lib"  'ersetzt die Standard LCD Library
$regfile = "m16def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 32
$framesize = 32


I2cinit  'dies ist die Kennung für Lib Lcdpin  'etwas warten LCD-Controller wird geladen
'*****************************************************
'Nun legen wir die Dimensionierung der Taster fest
 T5 Alias Portd.2
Dim T5_alt As Bit
 T1 Alias Portd.3
Dim T1_alt As Bit  'ist Merker
 T2 Alias Portd.4
Dim T2_alt As Bit  'ist Merker
 T3 Alias Portd.5
Dim T3_alt As Bit  'ist Merker
 T4 Alias Portd.6
Dim T4_alt As Bit  'ist Merker

Dim Status1 As String * 3  'für LCD
Dim Status2 As String * 3
Dim Status3 As String * 3
Dim Status4 As String * 3
Dim Status5 As String * 3

Dim I As Long
Dim A As Byte
Dim B As Byte
A = &B10000000  'Aus
B = &B00000000


Const Pcf8574_lcd = &H7A  'I2C Adresse &H40 ( 16x2 LCD )
'Config I2cdelay = 15  'delay von 5=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portc.0  'I2C SCL Pin
Config Sda = Portc.1  'I2C SDA Pin
Dim _lcd_e As Byte
_lcd_e = 64

'Port Einstellungen PortC4 wird der Variable T1 zugeordnet(als Eingang)
Config Portd.3 = Input
Portd.3 = 1  'Internen PullUp-Widerstand aktivieren.
'Port Einstellungen PortC5 wird der Variable T2 zugeordnet(als Eingang)
Config Portd.4 = Input
Portd.4 = 1  'Internen PullUp-Widerstand aktivieren.
'Port Einstellungen PortC5 wird der Variable T3 zugeordnet(als Eingang)
Config Portd.5 = Input
Portd.5 = 1
'Port Einstellungen PortC5 wird der Variable T4 zugeordnet(als Eingang)
Config Portd.6 = Input
Portd.6 = 1
'Port Einstellungen PortC5 wird der Variable T4 zugeordnet(als Eingang)
Config Portd.2 = Input
Portd.2 = 1
'--------------------------------------------------------------------------------------------
'Hier werden die Ausgänge dimensionieren und ein"Name" vergeben
'--------------------------------------------------------------------------------------------
Re1 Alias Porta.0  'Realis1 Ausgang
Re2 Alias Porta.1  'Realis2 Ausgang
Re3 Alias Porta.2  'Realis3 Ausgang
Re4 Alias Porta.3  'Realis4 Ausgang
Re5 Alias Porta.4  'Realis5 Spannung zufuhr ( NEU )
Out1 Alias Portb.7  'AUSGANG 6Pol
Out2 Alias Portb.6  'AUSGANG 6Pol
Config Re1 = Output  'als Ausgang zuweisen
Config Re2 = Output  'als Ausgang zuweisen
Config Re3 = Output  'als Ausgang zuweisen
Config Re4 = Output  'als Ausgang zuweisen
Config Re5 = Output  'als Ausgang zuweisen
Config Out1 = Output
Config Out2 = Output
'-------------------------------------------------------------------------------------------
La5 Alias Porta.7  'Lampe 5 Mitte ROT
La1 Alias Portb.0  'Lampe1
La2 Alias Portb.1  'Lampe2
La3 Alias Portb.2  'Lampe3
La4 Alias Portb.3
Out7 Alias Portb.7  'Lampe4
Config La5 = Output  'als ausgang zuweisen
Config La1 = Output  'als Ausgang zuweisen
Config La2 = Output  'als Ausgang zuweisen
Config La3 = Output  'als Ausgang zuweisen
Config La4 = Output  'als Ausgang zuweisen
Config Out7 = Output
'Hier nicht muss doch ständig abgefragt werden
'Lcd_hi = 1
'----------------NEU---------------------------------------------------------------------
Wait 2  'ausprobieren Relais sind doch etwas träge.
' dann Lampentest
Locate 1 , 1
Lcd "Lampen Test"
Set La1
Wait 2  'alle EIN = H
Set La2
Wait 2
Set La3
Wait 2
Set La4
Wait 2
Set La5
Wait 2
Cls
Locate 1 , 1
Lcd " Lampen Test Fertig"
Cls
Wait 2
Locate 1 , 1
Lcd " REALIS TEST"
Set Re1
Wait 2
Set Re2
Wait 2
Set Re3
Wait 2
Set Re4
Wait 2
Cls
Wait 2
Locate 1 , 1
Lcd "OUT 5-6"
Set Out1
Wait 2
Set Out2
Wait 2
'-------------------------------------------------------------------------------------------
'nach Start einmal Anzeigen und etwas warten (nur mal so)
  Locate 1 , 1  'Cursor auf 1 Zeile, 1 Spalte
  Lcd "Schreibtisch  "
  Locate 2 , 1  'Cursor auf 2 Zeile, 1 Spalte
  Lcd "Steuerung  "
  Locate 3 , 1  'Cursor auf 3 Zeile, 1 Spalte
  Lcd "alles OK  "
  Locate 4 , 1  'Cursor auf 3 Zeile, 1 Spalte
  Lcd "BITTE WARTEN  "
 Waitms 30

 'so schnell kann man doch nichts sehen Wait 1 gerade So.
'Eine Testanzeige die man nicht sieht ist doch unnütz oder ???

Wait 2  'waten
'Test beenden
Reset La1  'alle AUS = L
Reset La2
Reset La3
Reset La4
Reset La5
Reset Re1
Reset Re2
Reset Re3
Reset Re4
Reset Out1
Reset Out2
Wait 2
Cls
Locate 3 , 5
Lcd " HauptRE-AN"
Set Re5
Wait 2
Cls
'-------------------------------------------------------------------------------------------
'Fred Zuslasung wegen ob Aus
Status1 = "AUS"  'Das ist hab ich eingefügt und wird angezeigt
Status2 = "AUS"
Status3 = "AUS"
Status4 = "AUS"
Status5 = "AUS"
'Fred Zulasung wegen ob Aus
'------------------------------------------------------------------------------------------
'hier ist Schleife die permanent läuft
Do
T5 = Pind.2
T1 = Pind.3
T2 = Pind.4  'die Ports für Taster lesen
T3 = Pind.5
T4 = Pind.6
'Wait ist besser wie [Debounce Pinx.x]. ist eine sehr langsame Flankenberechnung
'für Taster Entprellung. Da in deiner Schleife die Laufzeiten kaum eine Rolle
'spielen, passe  dieses Wait an wenn nötig.
 Waitms 10  'voher 100
'## toggeln für Output ist getriggerte Doppelabfrage ##

If T1 = 1 Or T2 = 1 Or T3 = 1 Or T4 = 1 Then I2csend &H7A , B


 '-- Abfrage Tasten 1 ---
 If T1 <> T1_alt Then
  If T1 = 0 Then : I2csend &H7A , B
  Toggle Re1
  Toggle La1
  If Re1 = 1 Then Status1 = "EIN"
  If Re1 = 0 Then Status1 = "AUS"
 Else
  End If
 End If
'------letzen Tastendruck merken----------
  T1_alt = T1
'-----------------------------------------

'-- Abfrage Tasten 2 ---
 If T2 <> T2_alt Then
  If T2 = 0 Then
  Toggle Re2
  Toggle La2
  If Re2 = 1 Then Status2 = "EIN"
  If Re2 = 0 Then Status2 = "AUS"
 Else  '
  End If
 End If
'------letzen Tastendruck merken----------
  T2_alt = T2
'-----------------------------------------

'-- Abfrage Tasten 4 ---
I2csend &H70 , B
 If T3 <> T3_alt Then
  If T3 = 0 Then
  Toggle Re3
  Toggle La3
  If Re3 = 1 Then Status3 = "EIN"
  If Re3 = 0 Then Status3 = "AUS"
 Else
  I2csend &H70 , A  'LCD - AUS  '
  End If
 End If
'------letzen Tastendruck merken----------
  T3_alt = T3
'-----------------------------------------

'-- Abfrage Tasten 4 ---
 If T4 <> T4_alt Then
  If T4 = 0 Then
  Toggle Re4
  Toggle La4
  If Re4 = 1 Then Status4 = "EIN"
  If Re4 = 0 Then Status4 = "AUS"
 Else  '
  End If
 End If
'------letzen Tastendruck merken----------
  T4_alt = T4
'-----------------------------------------
'-- Abfrage Tasten 5 ---
 If T5 <> T5_alt Then
  If T5 = 0 Then
  Toggle Out1 : Toggle Out2
  Toggle La5
  If Out1 = 1 Then Status5 = "EIN"
  If Out1 = 0 Then Status5 = "AUS"
 Else
  Toggle Out2  '
  End If
 End If

'------letzen Tastendruck merken----------
  T5_alt = T5

'+++++++ LCD-Anzeige ++++++++

  Locate 1 , 1  'Cursor auf 1 Zeile, 1 Spalte
  Lcd "RGB-L=" ; Status1
  Locate 2 , 1  'Cursor auf 2 Zeile, 1 Spalte
  Lcd "Vers.=" ; Status2
  Locate 3 , 1  'Cursor auf 3 Zeile, 1 Spalte
  Lcd "LICHT=" ; Status3
  Locate 4 , 1  'Cursor auf 3 Zeile, 1 Spalte
  Lcd "-AVR-=" ; Status4
  Locate 1 , 11
  Lcd "OUT-1=" ; Status5

Loop

  End
'****************END****************************
 
Hi, hab' lange gebraucht, um dein Problem zu erkennen. Du willst ein Nachleuchten der LCD-Hintergrundbeleuchtung? Und da hast du überhaupt keine Idee?
Dein Programm merkt doch, wenn eine Taste gedrückt wird. Dann soll's doch das LCD-Licht einschalten können. Dann muss es nur nach einer Zeit das Lichtlein wieder ausschalten, es sei den, es hat wieder einer an den Tasten rumgedrückt. Dann fängt die Zeit wieder neu das Ablaufen an.
 
Wo hast Du das mit der LCD-Hintergrundbeleuchtung rausgelesen?
(Oder das zurücksetzen der Restzeit? Könnte auch als "Wenn die Zeit abgelaufen ist, soll neu gestartet werden können" interpretiert werden)
Aber prinzipiell natürlich richtig.
Wie sehen denn Deine bisherigen eigenen Lösungsideen dazu aus, Thorsten? Vielleicht können wir da bei konkreten Problemen weiterhelfen...

Edit: Achso... im Thementitel stets...
 
Zuletzt bearbeitet:
Hallo Forum sowie Bastler
Also ich habe volgendes in mein ein programm drinn:

Das steht i der Do Loop Schleife drin


CodeBox BascomAVR
If I = 1 Then
I2csend &H70 , A  'AUS
Waitms 1
Else
Decr I
End If


Und das wenn ich ein taster drücke


CodeBox BascomAVR
Kanal1:
I2csend &H70 , B  'AN per TIMER
I = 400000
 Toggle Led_realis1
 Toggle Realis1
  If Realis1 = 1 Then
  Cls
  Locate 1 , 1
  Lcd "FERNSEHEN AN"
  Print "FERNSEHEN AN"
  Else
  Cls
  Locate 1 , 1
  Lcd "FERSEHEN AUS"
  Print "FERSEHEN AUS"
End If
Led_signal = 1
Waitms 150
Led_signal = 0
Return

da steht dann I2Csend &H70 , B und dann I = 400000

und da geht das LCD nach einiger Sekunden aus Wunderbar, und das soll auch beim meiner schreibtischsteuerrung auch so sein....

Schönen Weisen Sonntag Aus den Norden HH

Gruß Thorsten Sch.
 
Ok, in den beiden Schnipseln (#4) hast Du in der Hauptprogrammschleife also einen Countdown, der bis 1 runterzählt, und dann das gewünschte (?) Ergebnis auslöst (und nicht weiterzählt).
Deine Taster setzen den Zähler dann bei Bedarf zurück.
Prinzipiell geht das, allerdings sind folgende Punkte ... ungünstig:
  • nach dem Erreichen von "1" wird das "Ereignis" immer wieder bei jedem Durchlauf der Schleife ausgelöst (vielleicht würde einmal reichen?)
  • Die Länge (Zeit) der Hauptschleife bestimmt die Zeitdauer, bis das Ereignis eintritt.
  • Die Verwendung von Wait bremst das Programm aus.
Dein (?) Ansatz realisiert die Abschaltverzögerung also quasi durch (runter)zählen von Hauptprogrammschleifendurchläufen.
Mithilfe einer Zeitbasis kannst Du das unabhängig von der Schleifendurchlaufzeit (und ohne Wait) hinbekommen.
'Ne Idee, wie?
 
Hallo lotacaC

Schleifendurchlaufzeit (und ohne Wait) hinbekommen.
'Ne Idee, wie?

ja man kann es in einer Gosub Lcd_Beleuchtung reinpacken
So Etwa
das in do loop schleife


CodeBox BascomAVR
gosub lcd_beleuchtung

das hier unten an programm hängen


CodeBox BascomAVR
Lcd_beleuchtung:
If I = 1 Then
I2csend &H7E , A  'AUS
Waitms 1
Else
Decr I
End If
Return


Ja aber wie mache ich das in diesen code:


CodeBox BascomAVR
$lib "Lcd_i2c.lib"  'ersetzt die Standard LCD Library
$regfile = "m16def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 32
$framesize = 32


I2cinit  'dies ist die Kennung für Lib Lcdpin  'etwas warten LCD-Controller wird geladen
'*****************************************************
'Nun legen wir die Dimensionierung der Taster fest
T5 Alias Portd.2
Dim T5_alt As Bit
T1 Alias Portd.3
Dim T1_alt As Bit  'ist Merker
T2 Alias Portd.4
Dim T2_alt As Bit  'ist Merker
T3 Alias Portd.5
Dim T3_alt As Bit  'ist Merker
T4 Alias Portd.6
Dim T4_alt As Bit  'ist Merker

Dim Status1 As String * 3  'für LCD
Dim Status2 As String * 3
Dim Status3 As String * 3
Dim Status4 As String * 3
Dim Status5 As String * 3

Dim I As Long
Dim A As Byte
Dim B As Byte
A = &B10000000  'Aus
B = &B00000000


Const Pcf8574_lcd = &H7A  'I2C Adresse &H40 ( 16x2 LCD )
'Config I2cdelay = 15  'delay von 5=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portc.0  'I2C SCL Pin
Config Sda = Portc.1  'I2C SDA Pin
Dim _lcd_e As Byte
_lcd_e = 64

'Port Einstellungen PortC4 wird der Variable T1 zugeordnet(als Eingang)
Config Portd.3 = Input
Portd.3 = 1  'Internen PullUp-Widerstand aktivieren.
'Port Einstellungen PortC5 wird der Variable T2 zugeordnet(als Eingang)
Config Portd.4 = Input
Portd.4 = 1  'Internen PullUp-Widerstand aktivieren.
'Port Einstellungen PortC5 wird der Variable T3 zugeordnet(als Eingang)
Config Portd.5 = Input
Portd.5 = 1
'Port Einstellungen PortC5 wird der Variable T4 zugeordnet(als Eingang)
Config Portd.6 = Input
Portd.6 = 1
'Port Einstellungen PortC5 wird der Variable T4 zugeordnet(als Eingang)
Config Portd.2 = Input
Portd.2 = 1
'--------------------------------------------------------------------------------------------
'Hier werden die Ausgänge dimensionieren und ein"Name" vergeben
'--------------------------------------------------------------------------------------------
Re1 Alias Porta.0  'Realis1 Ausgang
Re2 Alias Porta.1  'Realis2 Ausgang
Re3 Alias Porta.2  'Realis3 Ausgang
Re4 Alias Porta.3  'Realis4 Ausgang
Re5 Alias Porta.4  'Realis5 Spannung zufuhr ( NEU )
Out1 Alias Portb.7  'AUSGANG 6Pol
Out2 Alias Portb.6  'AUSGANG 6Pol
Config Re1 = Output  'als Ausgang zuweisen
Config Re2 = Output  'als Ausgang zuweisen
Config Re3 = Output  'als Ausgang zuweisen
Config Re4 = Output  'als Ausgang zuweisen
Config Re5 = Output  'als Ausgang zuweisen
Config Out1 = Output
Config Out2 = Output
'-------------------------------------------------------------------------------------------
La5 Alias Porta.7  'Lampe 5 Mitte ROT
La1 Alias Portb.0  'Lampe1
La2 Alias Portb.1  'Lampe2
La3 Alias Portb.2  'Lampe3
La4 Alias Portb.3
Out7 Alias Portb.7  'Lampe4
Config La5 = Output  'als ausgang zuweisen
Config La1 = Output  'als Ausgang zuweisen
Config La2 = Output  'als Ausgang zuweisen
Config La3 = Output  'als Ausgang zuweisen
Config La4 = Output  'als Ausgang zuweisen
Config Out7 = Output
'Hier nicht muss doch ständig abgefragt werden
'Lcd_hi = 1
'----------------NEU---------------------------------------------------------------------
Wait 2  'ausprobieren Relais sind doch etwas träge.
' dann Lampentest
Locate 1 , 1
Lcd "Lampen Test"
Set La1
Wait 2  'alle EIN = H
Set La2
Wait 2
Set La3
Wait 2
Set La4
Wait 2
Set La5
Wait 2
Cls
Locate 1 , 1
Lcd " Lampen Test Fertig"
Cls
Wait 2
Locate 1 , 1
Lcd " REALIS TEST"
Set Re1
Wait 2
Set Re2
Wait 2
Set Re3
Wait 2
Set Re4
Wait 2
Cls
Wait 2
Locate 1 , 1
Lcd "OUT 5-6"
Set Out1
Wait 2
Set Out2
Wait 2
'-------------------------------------------------------------------------------------------
'nach Start einmal Anzeigen und etwas warten (nur mal so)
  Locate 1 , 1  'Cursor auf 1 Zeile, 1 Spalte
  Lcd "Schreibtisch  "
  Locate 2 , 1  'Cursor auf 2 Zeile, 1 Spalte
  Lcd "Steuerung  "
  Locate 3 , 1  'Cursor auf 3 Zeile, 1 Spalte
  Lcd "alles OK  "
  Locate 4 , 1  'Cursor auf 3 Zeile, 1 Spalte
  Lcd "BITTE WARTEN  "
Waitms 30

'so schnell kann man doch nichts sehen Wait 1 gerade So.
'Eine Testanzeige die man nicht sieht ist doch unnütz oder ???

Wait 2  'waten
'Test beenden
Reset La1  'alle AUS = L
Reset La2
Reset La3
Reset La4
Reset La5
Reset Re1
Reset Re2
Reset Re3
Reset Re4
Reset Out1
Reset Out2
Wait 2
Cls
Locate 3 , 5
Lcd " HauptRE-AN"
Set Re5
Wait 2
Cls
'-------------------------------------------------------------------------------------------
'Fred Zuslasung wegen ob Aus
Status1 = "AUS"  'Das ist hab ich eingefügt und wird angezeigt
Status2 = "AUS"
Status3 = "AUS"
Status4 = "AUS"
Status5 = "AUS"
'Fred Zulasung wegen ob Aus
'------------------------------------------------------------------------------------------
'hier ist Schleife die permanent läuft
Do
T5 = Pind.2
T1 = Pind.3
T2 = Pind.4  'die Ports für Taster lesen
T3 = Pind.5
T4 = Pind.6
'Wait ist besser wie [Debounce Pinx.x]. ist eine sehr langsame Flankenberechnung
'für Taster Entprellung. Da in deiner Schleife die Laufzeiten kaum eine Rolle
'spielen, passe  dieses Wait an wenn nötig.
Waitms 10  'voher 100
'## toggeln für Output ist getriggerte Doppelabfrage ##

If T1 = 1 Or T2 = 1 Or T3 = 1 Or T4 = 1 Then I2csend &H7A , B


'-- Abfrage Tasten 1 ---
If T1 <> T1_alt Then
  If T1 = 0 Then : I2csend &H7A , B
  Toggle Re1
  Toggle La1
  If Re1 = 1 Then Status1 = "EIN"
  If Re1 = 0 Then Status1 = "AUS"
Else
  End If
End If
'------letzen Tastendruck merken----------
  T1_alt = T1
'-----------------------------------------

'-- Abfrage Tasten 2 ---
If T2 <> T2_alt Then
  If T2 = 0 Then
  Toggle Re2
  Toggle La2
  If Re2 = 1 Then Status2 = "EIN"
  If Re2 = 0 Then Status2 = "AUS"
Else  '
  End If
End If
'------letzen Tastendruck merken----------
  T2_alt = T2
'-----------------------------------------

'-- Abfrage Tasten 4 ---
I2csend &H70 , B
If T3 <> T3_alt Then
  If T3 = 0 Then
  Toggle Re3
  Toggle La3
  If Re3 = 1 Then Status3 = "EIN"
  If Re3 = 0 Then Status3 = "AUS"
Else
  I2csend &H70 , A  'LCD - AUS  '
  End If
End If
'------letzen Tastendruck merken----------
  T3_alt = T3
'-----------------------------------------

'-- Abfrage Tasten 4 ---
If T4 <> T4_alt Then
  If T4 = 0 Then
  Toggle Re4
  Toggle La4
  If Re4 = 1 Then Status4 = "EIN"
  If Re4 = 0 Then Status4 = "AUS"
Else  '
  End If
End If
'------letzen Tastendruck merken----------
  T4_alt = T4
'-----------------------------------------
'-- Abfrage Tasten 5 ---
If T5 <> T5_alt Then
  If T5 = 0 Then
  Toggle Out1 : Toggle Out2
  Toggle La5
  If Out1 = 1 Then Status5 = "EIN"
  If Out1 = 0 Then Status5 = "AUS"
Else
  Toggle Out2  '
  End If
End If

'------letzen Tastendruck merken----------
  T5_alt = T5

'+++++++ LCD-Anzeige ++++++++

  Locate 1 , 1  'Cursor auf 1 Zeile, 1 Spalte
  Lcd "RGB-L=" ; Status1
  Locate 2 , 1  'Cursor auf 2 Zeile, 1 Spalte
  Lcd "Vers.=" ; Status2
  Locate 3 , 1  'Cursor auf 3 Zeile, 1 Spalte
  Lcd "LICHT=" ; Status3
  Locate 4 , 1  'Cursor auf 3 Zeile, 1 Spalte
  Lcd "-AVR-=" ; Status4
  Locate 1 , 11
  Lcd "OUT-1=" ; Status5

Loop

  End
'****************END****************************

Mit Freundtlichen Grüßen
Thorsten sch.
 
Hallo Thorsten,

wie schon mehrmals erwähnt, kann ich deine Fragen kaum nachvollziehen und erstrecht nicht dein Code.
Dies mag wohl mein Fehler sein. OK.
Bitte erklärst du noch mal genau mit welchem Pin du die Hintergrundbeleuchtung schaltest.
Gleich noch eine Frage. Warum schaltest du ständig den I2C für LCD Ab und An. Muss staunen das dies optisch „Schmuck“ ist. Kannst doch für jede Aktion ein eigenes LCD- Fenster selektieren.
Na Ja.

Mit freundlichen Grüßen
Fred
 
Hallo Fred Das LCD ist am PCF8574 Angeschlossen und ist am P.7 Angeschlossen. in den code wo I2csend &H7E steht wahr ein versuch, was leider nicht Funktionierte darum bitte ich einen oder auch alle der helfen kann tipps oder rattschläge zu geben das währ super.....

Mit Freundtlichen Grüßen
Thorsten Sch.
 
Hallo Thorsten,

Hinweis:
[Code von Fred "SCHREIBTISCHSTEUERRUNG"] Hoffe damit meinst du mich nicht!
Bin zwar schon etwas senil. Würde aber solch ein Mist nie veröffentlichen.

Nun zum Thema.
Du hast I2C Bussystem immer noch nicht richtig verstanden. Wie es das Wort „Bus“ schon sagt. Bus fährt ein Ring der Busfahrer entscheitet ob er an einer Haltestelle anhält ob Personen Ein- oder Aussteigen ist egal. Wichtig ist nur er soll so schnell wie möglich alle Haltestellen anfahren.
Bekommt Fahrer eine Info, an Haltestelle x will keiner Ein-Aussteigen, nimmt er eine Abkürzung, erspart Sprit und Zeit.
Schau mal den CAN-Bus im Auto an, dort werden alle Sensoren in µS abgefragt. Entscheidungen macht der Controller(Software) also erst mal alle Ereignisse sammeln und wenn nicht benötigt verwerfen oder speichern..
So funktioniert ein Bussystem. Sind nur meine persönlichen Erfahrungen.

Eine Variable im Code als Zeitbasis zu nutzen, ist wohl auch für deine Anwendung nicht die beste Lösung.
So wie ich es sehe kannst du noch ein Timer nutzen.

Beispiel:
Config Timer0 = Timer, Prescale = 255 ‘Konfiguriere Timer0 Prescale anpassen
Enable Timer0 ‘schalte den Timer0 Overflow-interrupt ein
Enable Interrupts
Do
IF Taste x = 0 Then
On Timer0 Isr_von_Timer0 ‘verzweige bei Timer0 überlauf zu Isr_von_Timer0
End If
………..
Loop
End
Isr_von_Timer0: ‘ISR von Timer0
.....nun mache was
Return

Mit freundlichen Grüßen
Fred
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)