Hallo alle gemeinsam,
ich möchte meinem Atmega32 per Tastendruck oder per Funkschlter (Relais)
eine var. hochzählen lassen und diese anschliessend auf
7-Segment-Anzeigen darstellen.
Ein Tiefpass funktioniert super für die Taster. Für die Relaiskontakte
jedoch nicht..die prellen trotzdem. Softwaremäßige entprellung habe ich
auch schon probiert..taugt nichts, da ich Multiplexe und die
Softwarelösung zu "lange" dauert.
Schliesslich habe ich es mit einem Schmitttrigger versucht (4093) nach
folgender Beschaltung:
http://www.mikrocontroller.net/articles/Schmitt-Trigger
Der 4093 hat zwei Eingänge..einen davon habe ich an VCC gelegt und den
anderen wie im obrigen Artikel verschaltet. -> Es funktioniert aber
trotzdem nicht. Erbitte dringende Hilfe..sitze schon zwei Tage an dem
Problem :(
..dann prellt das Relais wohl länger als Dein Entpreller entprellt ->
Ent-/Ladewiderstand (und ggf. die Kapazität) vergrößern.
Oder per Software mit Timer und längerer 'Software-Timeouts' (ohne
busy-waiting).
Meine Widerstände betragen 10k und für den Kondi sind es 100n.
Der Schmitttrigger funktioniert sogar bei Taster nicht. Die Widerstände
habe ich bereits erhöht..ohne Erfolg..welche Hardwarelösung bietet sich
noch für sowas an?
Widerstände vergrößern dürfte den Effekt nur verstärken, lass die mal so
und mach den Kondensator größer.
An der Softwarelösung würd ich aber noch arbeiten, schätze du baust da
Delays mit ein. Lass das mal und strick dir was mit den Timern zusammen,
nachdem du sowieso multiplexen tust hast du schätzungsweise eh einen
Timer der ständig läuft.
Nachtrag: Hast du Wechselschalter?
http://www.mikrocontroller.net/articles/Entprellung
> Softwaremäßige entprellung habe ich auch schon probiert..taugt nichts,> da ich Multiplexe und die Softwarelösung zu "lange" dauert.
Die Softwareentprellung nach P. Dannegger funktioniert bombensicher ganz
ohne jegliche Delays und bei mir in einem Orgelpedal sogar mit 40
Tastern. Such mal hier im Forum danach und du findest z.B. den
Beitrag "Tasten entprellen - Bulletproof"
Oder sieh dir das an: Entprellung
Suche Hilfe schrieb:> Softwaremäßige entprellung habe ich> auch schon probiert..taugt nichts,
Dann hast Du es nicht richtig gemacht.
SW-Entprellung per Timerinterrupt belastet die CPU besonders wenig und
ist besonders störsicher und flexibel.
> da ich Multiplexe und die> Softwarelösung zu "lange" dauert.
Was dauert daran zu lange?
Peter
Peter Dannegger schrieb:> Was dauert daran zu lange?>>> Peter
Peter,
ich denke diese Frage kann "Mann" sich sparen. Wenn er es verstanden
hätte, würde die Frage So nicht existieren. Evtl würde es helfen den
Multiplex mit dem Polling zu synchronisieren voraus gesetzt der Mux geht
wirklich rasend schnell (was ich nicht glauben will).
Aber wenn er die Grundlagen schon verweigert....
Patrick Koch schrieb:> Was du oben meintest ist nicht Schmitt Trigger, du brauchst entweder ein> Flip-Flop, oder ein Mono-Flop,
Das braucht er alles nicht, ein paar Zeilen sinnvoller Code im
Timer-Interrupt reichen völlig zu.
> wenn dass mit dem SW entprellen nichts> ist
Warum soll das nichts sein? Das funktioniert immer und überall und
kostet kaum Rechenzeit. Man muss es nur richtig machen.
Hallo alle gemeinsam,
vielen Dank für eure Beiträge.
Ich steuere vier 7-Segmentanzeigen an. Ein Transistor hat eine
Periodendauer von 140us (7,14kHz). Ich habe es mit der Softwarelösung
versucht (Turtorial -> Entprellung). Die Delay war zulange..habe diese
reduziet..und trotzdem wurden die Anzeigen bei jedem Tastendruck
dunkler. Ich bin kein Programmierprofi um dies mal gesagt zu haben.
Die Miniaturtaster lassen sich wie gesagt super mit einem Tiefpass
entprellen..jedoch nicht die Realis.
Würde gerne mal die SW-Lösung von P. Dannegger ausprobieren..wie habe
ich diese einzusetzten?
Erbitte Hilfe
Und was hat die Ansteuerung der Anzeigen mit dem Entprellen zu tun?
Wenn Du mit 7,14 khz unterschiedliche daten auf eine Anzeige schreibst
kann sowieso niemand das so schnell lesen?????
Und kein Relais der Welt hat nach 0,1mS schon aufgehört zu prellen. DAS
GEHT NICHT!
Ich denke Dein Problem ist das Design Deiner Anwendung. Vieleicht reicht
es einfach das Lesen der Werte (und damit die Zeit für das Entprellen)
von der Ausgabe zu entkoppeln (sind das die 7khz?)
Suche Hilfe schrieb:> versucht (Turtorial -> Entprellung). Die Delay war zulange..
Da ist das Zauberwort. delay
Vergiss die ganzen vermeintlich einfachen Entrellfunktionen, die auf
delays basieren. Das ist Müll.
> Würde gerne mal die SW-Lösung von P. Dannegger ausprobieren..wie habe> ich diese einzusetzten?
Im Artikel aus dem du sie her hast, ist ein Testprogramm. Dort sieht man
sehr gut, wie sie verwendet wird.
> Ein Tiefpass funktioniert super für die Taster. Für die Relaiskontakte> jedoch nicht..die prellen trotzdem.
Unsinnige Hardware. Natürlich könnte man die auch für Relaislkontakte
langsam genug machen, aber sie ist überflüssig, wenn du sowieso einen uC
einsetzt.
> Softwaremäßige entprellung habe ich auch schon probiert..> taugt> nichts, da ich Multiplexe und die Softwarelösung zu "lange" dauert.
Unsinn. Falsche Programmierweise.
Wenn du sowieso multiplext, kannst du nach jedem Durchlauf gucken, ob
sich an den Tasteneingängen was geändert hat. Dann bekommst du
Tastendrücke ohne prellen.
> Schliesslich habe ich es mit einem Schmitttrigger versucht
Oje. Auch das geht theoretisch, ist aber nur eien Anlenkung von "ich
kann nicht programmieren, also löte ich ein paar Beustile dazu".
Suche Hilfe schrieb:> Ich steuere vier 7-Segmentanzeigen an. Ein Transistor hat eine> Periodendauer von 140us (7,14kHz).
Ich hoffe mal, per Timerinterrupt.
7kHz ist recht heftig, 700Hz sollten dicke reichen.
Aber egal, in den Timerinterrupt packst Du noch nen Zähler
(8Bit-Variable) rein, der dann etwa alle 10ms Die Entprellroutine
ausführt. Oder nimm nen 2. Timer.
Und in der Mainloop erfolgt die Abfragefunktion (get_key_press), wann Du
willst.
Peter
Wenn dein Relai einen Mittelkontakt hat, dan lege den jeweiligen
Öffner/Schließer mit einem Widerstand gegen +5V und den Mittelkontakt
gegen Masse.
Wenn dem so ist und du hast zwei Eingänge frei, kannst du die Leitungen
auf die beiden Eingänge führen und der zuletzt low gewesene Eingang ist
das Eingangssignal.
Hast du nur einen Eingang zur Verfügung, nimm ein Flipflop und führe die
Leiungen darauf. Gibts als TTL aber auch in anderen Ausführungen.
10k Pullup und 100nF ist auch mein Standardwert. Wenn das nicht hilft
gehe ich auf 1µ, da habe ich mal so nen ganzen Beutel mit so mini-Elkos
bekommen. Software mache ich das eigentlich nie.
@Basti
Für zu Hause kannst man das so machen, zumal Du die Bauelemente liegen
hast. Viele Leute hier arbeiten aber für Firmen und da ist das Gejaule
groß, wenn die einen Kondensator und einen Widerstand zuviel in der
Schaltung verbauen.
Die Routine von Peter Danegger funktioniert aber tadellos. Man braucht
eine Weile, um sie zu verstehen, weil er dort Register "hochkant"
benutzt, aber da muß man erst mal drauf kommen.
MfG Paul
@Paul:
Da sagst du mal was. Ich bin gerade auch dabei, bzw. bei den Versuch
ein Programmteil für 2 Inkrementalgeber zu schreiben/ zu verstehen
und ich bin am Verzweifeln :D
Weine nicht, wenn Dein Taster prellt, DAMDAM, DAMDAM
nimm ein Schütz, das sich selber hält, DAMDAM,DAMDAM
Elko, LED, Platine bricht,
aber der Kontroller nicht...
;-)
MfG Paul
In dem Thread ist nun das immer wiederkehrende Thema kommentiert worden.
Natürlich ist es teilweise ermüdend es immer wieder neu zu erklären, das
ist aus meiner Sicht aber kein Grund überheblich und abwertend zu
antworten.
Natürlich gehr es per Hardware. Die Flip-Flop Methode ist auch
sicherlich die stabilste, aber es geht halt auch mit Software. Wenn man
beim Kontaktprellen davon aus geht das jedes Prellen irgendwann mal zu
Ende ist, dann kann man auch mit einem Mikroprozessor den Kontakt sicher
"entprellen".
Die Methode die Peter vor langer Zeit mal beschrieben hat ist da sehr
effizient. Sie belastet den Prozessor kaum. Sie funktioniert mit jedem
Input und erwartet keinen Interrupt Eingang, man kann damit auch einen
Analogeingang verwenden, wenn es die Schaltung erfordert oder nichts
anderes mehr frei ist. Voraussetzung ist ein Timer, der mit konstantem
Takt läuft. Das ist hier der Fall, weil es eine gemultiplexte Anzeige
gibt. Die Sofware die innerhalb der Timerroutine läuft muss natürlich
innerhalb der Timer Zeitspanne beendet sein. Delays innerhalb dieser
Routine sind tödlich und somit verboten.
In meinem schnell zusammen geschusterten Digramm ist der Interrupt durch
Markierungen auf dem Zeitstrahl symbolisiert. Bei jedem Interrupt gibt
die Multiplex Anzeige des Displays eine neue Ziffer aus. Das geht
unabhängig von allem Anderen immer so weiter. In der Interrupt Routine
wird auch der Port ein gelesen, verglichen und das Ergebnis in Form
eines Ereigniszählers gespeichert. Dabei ist es egal ob eine 0 oder eine
1 gelesen wurde. Entscheidend ist das es der gleiche Wert war wie beim
vorherigen Einlesen. Wenn der Zähler dann über einen definierten
Schwellwert klettert wird der gespeicherte Wert vom Eingang als wahr an
genommen.
Das ist alles. In dem man den Schwellwert erhöht, erhöht man die
Wartezeit für das Entprellen. Die Basiszeit für die Entprellzeit ist der
Takt des Timers.
Weil das alles kaum Zeit kostet und nichts mit aktiven Software delays
zu tun hat, gab es hier in paar Kommentare in der Richtung. Weil man die
Entprellzeit im Prinzip bis ins unendliche (masßlose Übertreibung)
ausdehnen kann, wurde auch behauptet das man alles per Software
entprellen kann. Der Software Aufwand ist wirklich gering. Meiner
Meinung nach schlägt das jede Hardware Lösung, ob es nun ein Tiefpass,
ein Flipflop oder ein spezieller "Entprell-Chip" ist. Peter hat das
Ganze in Assembler sehr effiezient programmiert. Das macht es eventuell
für den einen oder anderen schwer verständlich, aber man kann das
natürlich in C, C++ oder Basic aufwändiger machen.
Auch wer es bisher nie in Software gemacht hat und bei dem Hardware
immer funktioniert hat, Relais sind da eine echte Herausforderung. Ich
persnlich schlage mich damit nicht mehr herum. Einen Timer habe ich fast
immer mit laufen, um definierte Zeitabstände für Messungen zu haben oder
eben Displays zu multiplexen. Der Code für die Entprellung fällt da
überhaupt nicht ins Gewicht.
@Peter; sei bitte nicht so sehr bissig in Deinen Kommentaren. Nicht
jeder ist in dem Thema so fit wie Du. Ich verstehe das es anfängt zu
nerven, aber es gibt Dinge die sterben nie aus ...
Ach noch was ... das kam auch schon öfter ... ein Prozessor kan einfach
NIE zu schnell sein um etwas zu entprellen! Das zeigt deutlich die
"Delay Denke" und die führt einfach nicht zu einem zufieden stellenden
Ergebnis.
Paul Baumann schrieb:> Weine nicht, wenn Dein Taster prellt, DAMDAM, DAMDAM> nimm ein Schütz, das sich selber hält, DAMDAM,DAMDAM>> Elko, LED, Platine bricht,> aber der Kontroller nicht...>> ;-)> MfG Paul
LOL!!!!
wo kann ich das .mp3 runterladen????
Harry
Ich bin beruflich mit so Atmegazeugs und Schaltungen tätig. Meine
Erfahrung:
Der Tod einer jeden Software sind DELAYS. Erfahrungsgemäß kann man zum
Projektstart nicht genau Einschätzen wie viel Code es geben wird.
Meistens wächst das Ganze während der Entwicklung noch. Plötzlich ist
die Entäuschung groß wenn der Controller zu langsam ist. Das A und O ist
dass die Software immer läuft und nicht ständig in DELAYS rumhängt. Ein
paar wenige DELAYS sind evtl. unumgänglich aber sonst kann man alles mit
Timern lösen.
Frohes Tüfteln.
Hallo Gemeinde,
bin sehr froh über die große Rückmeldung von euch!
Ich benutzte in meinem Code keine Interrupts. Ich lasse die vier
Transistoren einfach nacheinander Schalten.
Es dauert etwas eure Beiträge zu verdauen, da ich kein vertieftes
Programmierwissen habe.
Wie bringe ich den die Funktion von P. Dannegger zum laufen? Wie kann
ich da festlegen, an welchem PIN meine Taster hängen?
Mit dankendem Gruss
:)
Suche Hilfe schrieb:> Wie bringe ich den die Funktion von P. Dannegger zum laufen? Wie kann> ich da festlegen, an welchem PIN meine Taster hängen?
Nochmal:
Schau dir die C Routinen im Artikel "Entprellung" an.
Versteif dich nicht darauf, dass im begleitenden Text alles drinnen
steht. Oft genug muss man sch einfach nur den Code ansehen, dann wird
einem vieles klarer. Im gegenständlichen Fall sind alle #define
interessant. Den Inhalt der ISR brauchst du nicht analysieren, den
übernimmst du einfach so wie er ist.
Im Beispiel main() ist ein Timer Setup gezeigt inklusvie Anmelden der
ISR. Im weiteren ist in main() gezeigt, welche Funktionen aufzurufen
sind.
Normalerweise müsstest du damit klar kommen, wenn du ein wenig mitdenkst
> Wie kann> ich da festlegen, an welchem PIN meine Taster hängen?
Der Code fängt an mit:
Hi,
genau das hatte ich vermutet. Du wirst mit einer "linearen
hintereinander" Programmierung keinen Erfolg haben. Deine Gemultiplexte
Anzeige wird z.B. unterschiedlich Hell werden, je nach dem was Du tust.
Meiner Erfahrung nach geht es nur wenn Du eine Interrupt Routine
schreibst, die mit konstantem Takt läuft. Du baust in der "Main"
Funktion nur eine minimale Schleifem die den Mikroprozessor schlafen
legt. Alles was Du an Funktionalität hast packst Du in die Interrupt
Routine. Die Haupschleife tut nichts.
Du musst hier in Zeitscheiben denken, nicht seriell. Aus meiner Grafik
kannst Du das erkennen. Wenn Du den Code später erweiterst wird auch
Deine Anzeige nicht dunkler oder heller, so lange Du dafür sorgst das Du
alle Aufgaben innerhalb eines Timer-Takes erledigen kannst.
Und mache Dir einen Alarmmerker; sobald Du anfängst ein Delay ein zu
bauen stimmt etwas nicht mit dem Ablauf. Dann denke noch mal drüber nach
wie es ohne Delay geht. Ich wette es geht immer ohne ...
Hallo nochmal alle zusammen,
was würde passieren, wenn mein Taster entprellt ist, der "Zählimpuls"
jedoch länger dauert, als der Ablauf meines gesammten Codes?
@Karl heinz Buchegger
danke für den Hinweis..ich hatte den falschen Code zur Hand, bzw. nicht
vollständig.
Ich dachte, dass ich mich mit meinem Projekt am Ende befinde, einige
Hinweise von euch haben jedoch meine Einstellung etwas geändert.
Vielleicht sollte ich ja meinen Code komplett überarbeiten.
Ich Multiplexe z.B so:
PORTC = ziffer[z2];
PORTB |= (1<<PB1);
_delay_us(500);
PORTB &=~(1<<PB1);
..und das für alle vier Anzeigen.
Ich probiere jetzt mal die von euch angesprochene
"Super-Entprell-Software" aus.. :)
> was würde passieren...
...wenn du dir einfach mal Applikationsbeispiele anguckst, wo andere
Leute erfolgreich Anzeigen multiplexen und Tasten einlesen, wie:
http://www.atmel.com/dyn/resources/prod_documents/doc1231.pdf
Vielleicht kommst du damit auf den richtigen Weg, statt vergurkte
Programmfetzen hilflos kombinieren zu wollen.
Suche Hilfe schrieb:> Hallo nochmal alle zusammen,>> was würde passieren, wenn mein Taster entprellt ist, der "Zählimpuls"> jedoch länger dauert, als der Ablauf meines gesammten Codes?
Zeig den Code
Ich habe da eine Vermutung
Du zählst meiner Meinung nach nicht Flanken sondern Pegel. Und das geht
natürlich klar in die Hose.
Wenn du das richtig machst, stellt sich nämlich die Fragestellung gar
nicht. Wenn überhaupt, dann hat man höchstens das Problem, dass Pulse zu
schnell sind als das man sie mit dem µC noch mitbekommt.
> Ich dachte, dass ich mich mit meinem Projekt am Ende befinde, einige> Hinweise von euch haben jedoch meine Einstellung etwas geändert.
LOL
Abgesehen davon, dass ein Projekt nie wirklich 100% fertig ist, klingen
deine Fragestellungen eher so, als ob du zwar vielleicht eine Lösung für
das gerade anstehende Problem hast, die so recht und schlecht
funktioniert. Aber ein Heftpflaster auf einem Loch im Autoreifen ist
nicht wirklich ein Ersatz für eine fachmännische Lösung
> Vielleicht sollte ich ja meinen Code komplett überarbeiten.> Ich Multiplexe z.B so:> PORTC = ziffer[z2];> PORTB |= (1<<PB1);> _delay_us(500);> PORTB &=~(1<<PB1);>> ..und das für alle vier Anzeigen.
Was du da hast, sieht zwar aus wie mulitplexen, wenn man nicht zu genau
hinschaut. Aber in Wirklichkeit ist es Murx
(Ich hoffe du verzeihst mir die schonunglose Ausdrucksweise. Aber Murx
muss man auch Murx nennen dürfen)
@Karl heinz Buchegger
Ich bin durchaus Kritikfähig..den nur so kann man "Wachsen". Das ist
mein erstes Projekt in Sachen "Programmieren"
Auf dem Oszi sieht man Wunderbar die Zählimpulse. Ist es nun so, dass
wenn die Zählimpulse zu lange dauern, der Atmega mehrfach zählt, oder
ist es NUR vom Prellen abhängig
Hier ein Ausschnitt von meinem Code, welcher das "Multiplexen" und die
Tastenabfrage beinhaltet :)
------------------------------------------------
MEIN MURX:
inline uint8_t debounce(volatile uint8_t *port, uint8_t pin)
{
if ( ! (*port & (1 << pin)) )
{
// Pin wurde auf Masse gezogen, 100ms warten */
_delay_ms(10);
if ( *port & (1 << pin) )
{
// Anwender Zeit zum Loslassen des Tasters geben */
_delay_ms(10);
return 1;
}
}
return 0;
}
void main bla bla
// MULTIPLEXEN DER ANZEIGEN 1-4
//********************************************************* PORTC =
ziffer[z1];
PORTB |= (1<<PB0); // Transi1 = 1
_delay_us(500); //
PORTB &=~(1<<PB0); // Transi1 = 0
//*********************************************************
PORTC = ziffer[z2];
PORTB |= (1<<PB1); // Transi2 = 1
_delay_us(500); // ** ANZEIGE 2
PORTB &=~(1<<PB1); //Transi2 = 0
//*********************************************************
PORTC = ziffer[z3];
PORTB |= (1<<PB2); // Transi3 = 1
_delay_us(500); // ** ANZEIGE 3
PORTB &=~(1<<PB2); //Transi3 = 0
//********************************************************* PORTC =
ziffer[z4];
PORTB |= (1<<PB3); // Transi4 = 1
_delay_us(500); // ** ANZEIGE 4
PORTB &=~(1<<PB3); //Transi4 = 0
//*********************************************************
if (debounce(&PIND, PD6)) //Tastenentprellung für PIND6
{
z2++;
t1++;
}
if (debounce(&PIND, PD5)) //Tastenentprellung für PIND5
{
z4++;
t2++;
}
//********************************************************************
Merci
> Ich dachte, dass ich mich mit meinem Projekt am Ende befinde,
Der Scherz des Tages:
Meine Software ist fertig... ;-)
Der Witz des Tages:
Meine Software ist fehlerfrei... :-/
> Ich dachte, dass ich mich mit meinem Projekt am Ende befinde,
Am Ende kann man auch sein, wenn es nicht mehr weitergeht... :-o
Poste doch mal den ganzen Code, das hier sieht schon sehr
verbesserungsfähig aus...
OK Vergiss diese debounce Funktion sofort wieder.
Die ist, aufgrund der delays, sowieso Müll.
Das ist das eine
Das andere ist, wie ich es vermutet habe:
Du zählst nicht Pulse.
Einen Puls erkennt man daran, dass sich der Pinzustand ändert! Dazu muss
man sich aber einen vorhergehenden Pinzustand merken und nur dann wenn
sich der verändert, dann hat man die Flanke eines Pulses entdeckt
1
intmain()
2
{
3
...
4
5
uint8_toldValue,newValue;
6
7
...
8
9
oldValue=0;
10
11
while(1){
12
13
newValue=(PIND&(1<<PIND6));
14
15
if(newValue!=oldValue){// am Pin hat sich was getan
16
if(newValue)// Ist er jetzt auf 1 (dann muss er vor Kurzem noch auf 0 gewesen sein,
17
// sonst wären wir nicht durchs erste if gekommen)
18
// dann haben wir die aufsteigende Flanke eines Pulses gefunden
19
20
Puls++;// den Puls daher zählen
21
22
oldValue=newValue;// und den jetzigen Zustand merken, damit beim nächsten Schleifendurchlauf
23
// eine Veränderung des Pins erneut erkannt werden kann
24
}
25
26
....
27
}
so zählt man Pulse. Indem man feststellt, wann sich der Zustand des
Eingangs verändert.
Allerdings hat man jetzt ein Problem. Wie du schon weist prellen Taster.
Dein µC ist jetzt schnell genug (bei dir durch die vielen delays
wahrscheinlich nicht, aber die kommen ohnehin noch weg), dass der µC
jeden einzelnen Preller als einen Puls ansehen würde.
Und genau da kommt die Entprellung in der ISR ins Spiel. Die macht
nämlich beides gleichzeitig: sie entprellt und kümmert sich auch darum,
dass du jeden Tastendruck nur ein einziges mal gemeldet bekommst.
@Karl heinz Buchegger
"Puls++;" ist das dan quasi meine Zählvariable für den Zählerstand?
--> Was du gepostet hast wäre also meine neue Tastenabfrage?
Die Delays zwischen den Schaltzuständen der Transistoren benötige ich
zur darstellung der Anzeigen (ohne Delay ist das zu schnell und die
Anzeigen sind nahezu dunkel)
Suche Hilfe schrieb:> @Karl heinz Buchegger>> "Puls++;" ist das dan quasi meine Zählvariable für den Zählerstand?> --> Was du gepostet hast wäre also meine neue Tastenabfrage?
Nein!
Ich wollte dir nur grundsätzlich zeigen, wie man Pulse richtig erkennt.
1
while(1){
2
if(PIND&(1<<PD6))
3
Puls++;
4
}
ist nun mal keine korrekte Pulserkennung. Aber genau darauf, mit ein
paar delay gewürzt, läuft deine Debounce Lösung hinaus
Deine neue Tastenabfrage findest du im Artikel "Entprellung" und zwar
bei den "Komfortroutinen in C"
> Die Delays zwischen den Schaltzuständen der Transistoren benötige ich> zur darstellung der Anzeigen (ohne Delay ist das zu schnell und die> Anzeigen sind nahezu dunkel)
Mach erst mal die Tastenabfrage richtig, ehe das Multiplexing auf eine
vernünftige Grundlage gestellt wird und ebenfalls in genau den gleichen
Interrupt hineinwandert.
(kann das Anzeige Multiplexing jemand anderer von den Regulars
übernehmen? Ich muss um ca. 3 Uhr weg)
@Karl heinz Buchegger
danke Dir für deine Hilfe.
Woher hast Du Dir das Wissen angeeignet?
Ich verstehe ja, das dieses Prob für die Fortgeschnittenen lächerlich
ist und nur unnötige Zeit und Nerven beansprucht...
Danke für die Hinweise..ich versuche mal meinen Weg zu gehen..
MFG