Forum: Mikrocontroller und Digitale Elektronik Comparator Attiny841


von Paul (Gast)


Lesenswert?

Hallo
versuche immer noch den Comparator AC1 des Attiny 841 zu betreiben.
Verwende diesen Code:
1
void init_AC()
2
  {
3
  ACSR1A &=~(1<<ACD1);            // AC Analog Komparator einschalten, ADC aus
4
  ACSR1A |=(1<<ACO1);              // analog Comparator Ausgang
5
  ADMUXA |=((1<<MUX5)|(1<<MUX4)|(1<<MUX2));  // Eingang neg ADC2, pos ADC3    
6
  ACSR1B |=((1<<HSEL1)|(1<<HLEV1));      // Hysterese 50mV 
7
  ACSR1B |= (1<<ACOE1);            
8
  }
Die Auswertung erfolgt damit:
1
if (ACSR1A &(1<<ACO1))  // Register ACSR1A          
2
        {
3
        PORTA &=~(1<<PINA0);        // LED 2 aus
4
        }
5
      else
6
        {
7
        PORTA |=(1<<PINA0);          // LED 2 ein
8
        }
Hatte bereits in einem anderen Teil gefragt. Es läuft soweit auch. Wenn 
ich den Regler von GND nach Vcc drehe schaltet die LED um. Leider 
flackert sie mehrfach und beim weiterdrehen schaltet sie dann vollkommen 
um. Leider finde ich den Grund nicht dafür.
Ist ein Fehler im Programm oder habe ich ein Register vergessen?
Vielleicht könnte sich das mal jemand ansehen.
Paul

von Paul (Gast)


Lesenswert?

Kann jemand helfen?

von HildeK (Gast)


Lesenswert?

Paul schrieb:
> Wenn ich den Regler

Welchen Regler? Ein Poti? Ist das auch in Ordnung und nicht verdreckt? 
Hast du am Schleifer einen Kondensator? Ist deine Versorgungsspannung 
stabil?

Ich kenne zwar den 841 nicht und die, die ich in Gebrauch habe, haben 
keine einstellbare Hysterese, aber offenbar reicht die für die Qualität 
des Eingangssignal nicht aus.

von Paul (Gast)


Lesenswert?

Verwende ein einfachen neuen Einstellregler. Habe gemessen das die 
Spannung nicht springt sondern langsam ansteigend ist. Haben keinen 
Kondensator dran, muss da einer sein? Die Betriebsspannung ist stabil. 
Werde die Spannungen noch mal überprüfen.

von Theor (Gast)


Lesenswert?

Paul schrieb:
> Verwende ein einfachen neuen Einstellregler.

Ich bezweifele stark, dass Du einen "Regler" verwendest. Bitte überprüfe 
das nochmal und nenne uns ggf. den Typ des Reglers.

Ein "Regler" ist eine Vorrichtung bzw. Schaltung, die einen Ist-Wert mit 
einem Sollwert vergleicht, und abhängig davon, einen Wert (z.B. eine 
Spannung) ausgibt, die ein Stellglied beeinflusst.
Siehe: https://de.wikipedia.org/wiki/Regler_(Begriffskl%C3%A4rung)

Ein "(Ein-)Steller" ist z.B. ein Potentiometer. Damit stellst Du z.B. 
eine Spannung ein.
Siehe https://de.wikipedia.org/wiki/Steller

Umgangssprachlich wird dazwischen oft nicht unterschieden. Häufig wird 
jedes drehbare Bedienelement als "Regler" bezeichnet. Aber wir sind hier 
in einem Forum unter Technikern, in dem wir uns bemühen, uns präzise 
auszudrücken. Da haben die Begriffe viel engere Bedeutungen, damit 
völlig klar wird, was gemeint ist.

Vermutlich wird Dein Potentiometer mehr als 50mV springen oder rauschen, 
so das die Hysterese nicht groß genug ist. Dagegen hilft ein anderes 
Potentiometer, (evtl. eine Reinigung oder Reparatur des vorhandenen) 
oder eine externe Schaltung mit einem Komparator.
Es kann aber tatsächlich auch sein, dass die Betriebsspannung von dem 
Einstellvorgang beeinflusst wird (oder auch etwas anderes die Spannung 
beeinflusst).
Ebenso kann es sein, dass Dein Code für das Flackern verantwortlich ist.

Bitte poste einen vollständigen Schaltplan.
Bitte poste den vollständigen Code (als Anhang).

Beitrag #6028006 wurde von einem Moderator gelöscht.
Beitrag #6028016 wurde von einem Moderator gelöscht.
von Tierfreier Nichtraucher (Gast)


Lesenswert?

Theor schrieb:
> Paul schrieb:
>> Verwende ein einfachen neuen Einstellregler.
>
> Ich bezweifele stark, dass Du einen "Regler" verwendest. Bitte überprüfe
> das nochmal und nenne uns ggf. den Typ des Reglers.

Mein Gott, die Sprüche...

Belehrst Du den Verkäufer im Elektronik-Geschäft auch auf diese Weise?
Dann würde ich Dich bei Kopf und Arsch packen und draußen kämest Du zu 
liegen!

von Paul (Gast)


Lesenswert?

Danach ist ein Steller vom der Firma Peha, Grösse P15 mit 22k Ohm und 
zusätzlicher Achse

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Paul schrieb:
> Haben keinen
> Kondensator dran, muss da einer sein?

Es kann sicher nicht schaden, den Schleifer mit einem RC Tiefpass vor 
dem Komparatoreingang zu glätten und zu puffern. Das hält Einstreuungen 
auf die Potidrähte fern, mittelt das Poti ein wenig und buffert die 
Messspannung.

von Paul (Gast)


Lesenswert?

Kommt haltet euch ein bisschen zurück. Er hat soweit Recht das kein 
Regler im Sinne einer Temperatur Regler oder ähnliches ist.
Es ist ein "Regler" der durch eine mechanische Drehbewegung eine 
Spannung von 0 (GND) bis zur vollen Spannung von 5V (Vcc) einstellt und 
durch einen Prozessor mit einer Vergleichsspannung mit einem AC (analog 
Comparator) vergleicht und einen Ausgang schaltet.
Damit dürfte die Diskussion um eine korrekte Bezeichnung beendet sein.
Es ist weitaus hilfreicher wenn man sich nicht in diese 
Bezeichnungdiskussion einlässt und lieber mit etwas konkreten zum 
Problem bei beiträgt.

von Paul (Gast)


Lesenswert?

Muss es ein RC Glied sein oder reicht ein 100nF aus?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Paul schrieb:
> Muss es ein RC Glied sein oder reicht ein 100nF aus?

Der Schleifer des Potis bildet halt je nach Stellung einen mehr oder 
weniger grossen R zum Aufladen des Kondensators. Ich bevorzuge einen 
extra R, damit ich den Tiefpass einigermassen passend rechnen kann, ohne 
mich gross um die Quellimpedanz (des Potis) zu kümmern.
Sicher ist aber ein Kondensator statt keinem Kondensator ein grosser 
Fortschritt. Müssen auch keine 100nF sein, da gehen auch 22nF oder 10nF.

von Theor (Gast)


Lesenswert?

Tierfreier Nichtraucher schrieb:
> [...]
>
> Mein Gott, die Sprüche...
>
> Belehrst Du den Verkäufer im Elektronik-Geschäft auch auf diese Weise?
> Dann würde ich Dich bei Kopf und Arsch packen und draußen kämest Du zu
> liegen!

Eine gewaltsame Handlungsweise, der ich mich mit angemessener, von der 
Notwehr gemäß §32 StGB erlaubter Gegengewalt, erwehren, und die eine 
Strafanzeige nach sich ziehen würde.

Falls Du fundierte, - auch emotional fundierte, aber dennoch höfliche -, 
Kritik, an meiner Art mich auszudrücken, vorbringen willst, wäre ich Dir 
dafür (voraussichtlich) dankbar.
Die Erwähnung von Gewalt als denkbare Reaktion auf mein Verhalten halte 
ich jedoch für unangemessen.

Falls Du in Off-Topic eine entsprechende Kritk vorbringst, werde ich 
unter gewissen Voraussetzungen (die oben erwähnten) darauf eingehen.

von Theor (Gast)


Lesenswert?

@ Paul

Ergänzend zu Matthias Beitrag:
Nur den abgegriffenen Widerstand des Potentiometers als Widerstand des 
Tiefpasses zu benutzen, hat den Nachteil, dass die Grenzfrequenz vpm der 
Stellung des Potentiometers abhängt.

Im übrigen gibt es hier keine "Diskussion" um den Unterschied zwischen 
"Steller" und "Regler". Sie wäre völlig unnötig, da die Begriffe klar 
definiert und voneinander abgegrenzt sind.

Ich möchte hinzufügen, dass mir nicht daran liegt, irgendeinen 
emotionalen Gewinn daraus zu ziehen, Dich herabzusetzen, weil Du einen 
Unterschied nicht kennst. Es geht mir vielmehr darum, zu erreichen, dass 
Du den Unterschied kennst und aus Deinem Wissenzuwachs erwüchse mir ein 
positiver emotionaler Gewinn.

Der Unterschied ist nämlich durchaus auch von sachlichem Belang. Falls 
Du einen Regler verwendest, würde man an der Differenzbildung arbeiten 
müssen. Das ist eine andere Baustelle.

von Paul (Gast)


Lesenswert?

Soweit alles klar. Werde einen Kondensator an den Anschluss legen.
Kann einer sagen ob ich am Code was falsch habe?

von Veit D. (devil-elec)


Lesenswert?

Hallo,

es wurde dir doch schon gesagt das deine Hardwarebeschaltung so nicht 
funktioniert mit Nutzung des Komparators - wegen der Pinbelegung. Der 
Aufbau ist in meinen Augen auch überflüssig.

a) setze einen einstellbaren OPV Komparator vor einen digitalen Eingang
oder
b) schließe das Poti an einen analogen Eingang an und lasse den Rest weg

In beiden Fällen bist du in allen Belangen maximal flexibel was die 
Eintellungen betrifft. Bei a) in Hardware und bei b) in Software. b) 
wäre der Grund warum man einen programmierbaren µC verwendet.

von Paul (Gast)


Lesenswert?

Veit D. schrieb:
> Hardwarebeschaltung so nicht
> funktioniert mit Nutzung des Komparators - wegen der Pinbelegung

Gemäss Datenblatt des Attiny 841 verfügt er über 2 Comparatoren. An AC0 
ist die Belegung durch den Hersteller festgelegt und die Pins dazu 
vergeben. Beim AC1 kann durch die MUX der Eingang negativ und positiv 
gemäss Tabelle eingestellt und genutzt werden. In der Tabelle im 
Datenblatt sind dazu die verschiedenen Möglichkeiten aufgelistet.

von c-hater (Gast)


Lesenswert?

Paul schrieb:

>
1
> void init_AC()
2
>   {
3
>   ACSR1A &=~(1<<ACD1);            // AC Analog Komparator einschalten, 
4
> ADC aus
5
>   ACSR1A |=(1<<ACO1);              // analog Comparator Ausgang
6
>   ADMUXA |=((1<<MUX5)|(1<<MUX4)|(1<<MUX2));  // Eingang neg ADC2, pos 
7
> ADC3
8
>   ACSR1B |=((1<<HSEL1)|(1<<HLEV1));      // Hysterese 50mV
9
>   ACSR1B |= (1<<ACOE1);
10
>   }
11
>

Das ist immer noch nicht ganz korrekt. Diese Zeile ist komplett 
überflüssig:

>   ACSR1A |=(1<<ACO1);              // analog Comparator Ausgang

Du beschreibst da ein Bit, was nur gelesen werden kann (erkennst du im 
DB daran, dass in der Registerbeschreibung unter dem Bit nicht "RW" 
steht, wie bei den meisten anderen, sondern "R".

Zu deinem Glück ist aber das Beschreiben eines nur lesbaren Bits völlig 
folgenlos. Nützt nix, schadet aber auch nicht...

> Wenn
> ich den Regler von GND nach Vcc drehe schaltet die LED um. Leider
> flackert sie mehrfach und beim weiterdrehen schaltet sie dann vollkommen
> um. Leider finde ich den Grund nicht dafür.

"Potikratzen" und/oder eingestreute Störungen größer als die Hysterese 
des AC. Ein übliches Gegenmittel wurden im Thread bereits genannt: 
Tiefpass.

von Paul (Gast)


Lesenswert?

Hallo
habe ins DB geschaut. Du hast recht, es steht ein R da und habe es dann 
auskommentiert.
Habe mal die Spannungen gemessen. Bei U/2 stehen 2,48V an, als Vcc habe 
ich 4,97V. Nach dem Messgerät sind sie relativ stabil, konnte keine 
Einbrüche sehen. Habe dann am Schleifer des Potis (Regler oder Steller) 
einen 100nF Kondensator nach GND eingelötet, geht am schnellsten. Der 
Comparator Eingang scheint sehr Empfindlich auf Einstreuungen zu sein. 
Im Bereich von ca. 1,1V bis ca. 3,9V reagiert er auf meine Hand. 
Teilweise brauche ich die Platine nur anzufassen. Ist der Comparator so 
Empfindlich?
Zu dem Tiefpass, noch einen Widerstand zwischen Schleifer und Prozessor 
und noch einen zweiten Kondensator, alles zusammen als Pi Glied? Wenn 
die zwei Kondensatoren je 100nF haben, welcher Widerstand am besten. 
Dachte dabei an 1kOhm oder das Poti kleiner machen?

von c-hater (Gast)


Lesenswert?

Paul schrieb:

> Ist der Comparator so
> Empfindlich?

Ja, der hat Eingangswiderstände im Bereich von 100MΩ. Da genügen 
geringste eingetragene Energien, um erhebliche Spannungen zu 
produzieren. Ganz so schlimm ist es bei dir aber nicht, die Eingänge 
werden ja durch ihre jeweiligen Quellen belastet.

> die zwei Kondensatoren je 100nF haben, welcher Widerstand am besten.
> Dachte dabei an 1kOhm oder das Poti kleiner machen?

All die Tips im Thread sind prinziell richtig, berücksichtigen aber 
nicht, dass du ZWEI extrem hochohmige Eingänge hast, zwischen denen 
die Differenzbildung erfolgt.

Die Filter für sowas sehen sinnvollerweise etwas anders aus "normal". 
Denn die Störungen können aus beiden Richtungen kommen. Statt für jeden 
der beiden Eingänge Tiefpässe nach Masse vorzusehen, benutzt man hier 
sinnvollerweise einen Hochpass zwischen den beiden Eingängen...

Sprich: In der allereinfachsten Form einen simplen Kondensator. Wert so 
ungefähr im Bereich einiger zehn pF bis einige (wenige) nF dürfte 
passen. Kommt natürlich auch darauf an, was da eigentlich an Störungen 
reinkommt und wie die Impedanz der beiden Signalquellen ist. Wenn man 
keine Lust zum Rechnen und Messen hat, probiert man einfach. Als Bastler 
darf man das...

von Paul (Gast)


Lesenswert?

An den anderen Eingang habe ich gar nicht gedacht. Der hochomige Eingang 
war mir schon klar, doch solche Auswirkungen habe ich nicht erwartet.
Kann dann aber annehmen das mein Programm korrekt ist und der Effekt an 
der Platine bzw. Eingänge liegen.

von Paul (Gast)


Lesenswert?

Gilt das gleiche auch für ADC? Bei einer Messung mit ADC scheint es 
unempfindlich zu sein.
In einer Tabelle im DB steht es auch drin.

von Peter D. (peda)


Lesenswert?

Paul schrieb:
> ADMUXA |=((1<<MUX5)|(1<<MUX4)|(1<<MUX2));  // Eingang neg ADC2, pos
> ADC3

Was ist an ADC2 und an ADC3?
Zeichne mal einen Schaltplan.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Paul schrieb:
> Gilt das gleiche auch für ADC? Bei einer Messung mit ADC scheint es
> unempfindlich zu sein.

Wenn man den Bereich von 0-5V mit einem 10-Bit ADC auswertet, bleiben 
pro Bit etwa 5mV (5000mV / 1024). Das ist sehr viel mehr als bei der 
Schwelle des Komparators, der schon bei ein paar dutzend µV hin- und her 
springt.

Deswegen zappeln Komparatoren gerne mal in der Nähe der Schwelle und 
deswegen sollte man in Software auch die Plausibilität prüfen.

von Peter D. (peda)


Lesenswert?

Paul schrieb:
> ADMUXA |=((1<<MUX5)|(1<<MUX4)|(1<<MUX2));  // Eingang neg ADC2, pos
> ADC3

Aber auch nur, wenn ACME1 = 1 und ADEN = 0.

von Paul (Gast)


Lesenswert?

An ADC2 habe ich einen Spannungsteiler mit 2x 10kOhm und der Pin hängt 
an der mitte, damit ergeben ca. 2,5V. Am ADC3 habe ich ein 
Einstellregler mit Achse (Poti) mit 22k Ohm und das liegt an GND und Vcc 
und der Schleifer am ADC. Damit kann ich eine Spannung zwischen GND und 
Vcc einstellen. Habe jetzt einen 100nF C nach GND geschaltet um 
Einstreuerungen zu verhindern.

von Peter D. (peda)


Lesenswert?

Paul schrieb:
> An ADC2 habe ich einen Spannungsteiler mit 2x 10kOhm und der Pin hängt
> an der mitte, damit ergeben ca. 2,5V.

Der Spannungsteiler muß aber an AIN10. Der MUX schaltet nur den 
negativen Eingang um. Ich würde mal vermuten, für den Komparator sind 
nur die single-ended Settings valid.

"Bit 2 – ACME1: Analog Comparator Multiplexer Enable
When this bit is set and the ADC is switched off (ADEN in ADCSRA is 
zero), the ADC multiplexer is selected as the
negative input for the analog comparator."

von Paul (Gast)


Lesenswert?

Hallo Peter
gilt das auch für den AC1? In der Tabelle sind doch alle möglichen 
Kombis dazu drin. Werde das heute abend kontrollieren. Im DB des 
Herstellers sind ja die AIN? angegeben.

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Ich würde mal behaupten, daß
Figure 15-1. Analog Comparator 1 Block Diagram
und
Table 15-1. Analog Comparator 1 Input Options
korrekt sind.

Mein Eindruck ist auch, daß die Qualität der AVR-Datenblätter 
nachgelassen hat.

von Veit D. (devil-elec)


Lesenswert?

Peter D. schrieb:
> Mein Eindruck ist auch, daß die Qualität der AVR-Datenblätter
> nachgelassen hat.

Das kann ich mit ruhigem Gewissen bestätigen. Mir fiel das in den Timer 
Kapiteln auf. Die Register und Bit Einstellungen sind nicht mehr so 
schön lesbar wie vorher. Zuviele n und x Angaben. Merkt natürlich nur 
der der die alten noch hat. Hauptsache es wurde einige Diagramme bunt 
gefärbt.

von Paul (Gast)


Lesenswert?

Meine die Tabelle 16-3. Dort sind alle Kombinationen des AC1 für die 
Einstellungen ADC des Multiplexers angegeben. Mit dem AC0 geht das 
nicht.

von Paul (Gast)


Lesenswert?

Sorry, entschuldige die blöde Frage. Hatte ACME=1 nicht drin. Habe jetzt 
dazu geschrieben:
1
ACSR1B |=(1<<ACME1);
Habe dazu das DB konsultiert und versucht rauszukriegen was das genau 
macht.
Es wird dann ADEN ausgeschaltet und ACME eingeschaltet. Nach Tabelle 
15-5 wird dann der Multiplexer nach Tabelle 16-3 negativ eingeschaltet. 
Stimmt das so?
Hast du mal Zeit für ein ganz andere Frage.
Du hast mal eine Tasterentprellung ohne Timer vorgestellt. Ist 
allerdings schon lange her (Relativ lange). Arbeite auch gerade daran. 
Scheiter aber dabei. Problem:
Möchte 5 Taster per I2C vom slave übertragen. Dabei können jede Taste 
mit einer oder mehreren gleichzeitig gedrückt werden. Die Auswertung 
welche tasten gedrückt wurden erfogt im Master. Ich muss aber genau 
auswerten welche Taste gedrückt wurde und das mit Entprellung. Da alles 
auf einem Ati 841 laufen soll, ist der Platz leider begrenzt.
Hast du eine Idee dazu?
LG Paul

von c-hater (Gast)


Lesenswert?

Paul schrieb:

> Meine die Tabelle 16-3. Dort sind alle Kombinationen des AC1 für die
> Einstellungen ADC des Multiplexers angegeben. Mit dem AC0 geht das
> nicht.

Du hast dein Kernproblem immer noch nicht begriffen: Du hast an keiner 
Stelle dem AC1 gesagt, dass er den Multiplexer überhaupt benutzen soll. 
Ich habe dir im Vorgänger-Thread gesagt, dass du das tun musst, um 
überhaupt zwischen den beiden von dir gewünschten Pins die Differenz 
messen zu können.

In diesem Thread hat einer (nämlich Peda) besser aufgepaßt als ich, und 
festgestellt, dass du das dem AC1 immer noch nicht sagst.

Feststellung: du bist weiterhin offensichtlich vollständig 
lernresistent. Und damit bin ich auch hier schon wieder raus...

von Paul (Gast)


Lesenswert?

Sorry, jetzt verstehe ich deine Worte nicht. Habe das von Peter sofort 
eingebaut und damit getestet. Die Anzeige ist vollkommen ruhig geworden, 
kein flackern oder ähnliches. Habe dann im DB versucht mehr über die 
Funktion zu erfahren. Dort wird auf eine Tabelle verwiesen mit den 
Einstellungen dazu und auf eine weiter mit den Angaben zu den ADC.
Wie kommst du darauf das lernresistent bin?
Das ist drin und wollte nur noch was zur Funktion haben. Was ist daran 
verkehrt?

von foobar (Gast)


Lesenswert?

Noch ein Hinweis: Es reicht nicht, nur Bits zu setzen wenn einige auch 
gelöscht sein müssen (z.B. ADMUXA, ACSR1B, ...).

von Hannes (Gast)


Lesenswert?

Hallo Paul

Tasten entprellen - warum machst Du das nicht mit Hardware?
Das ist einfacher als per SW.

Und die Auswertung und Plausibilitätsprüfung erfolgt ja im Master und 
Dasia ist eh' die grössere Herausforderung denke ich.

von Peter D. (peda)


Lesenswert?

[OT]

Paul schrieb:
> Du hast mal eine Tasterentprellung ohne Timer vorgestellt.

Diese Macro-Lösung sollte man nur bei sehr kleinen Programmen verwenden. 
Sie hat einige Seiteneffekte, die bei größeren Applikationen stören 
könnten.

Paul schrieb:
> Die Auswertung
> welche tasten gedrückt wurden erfogt im Master.

Für so eine popelige Aufgabe einen extra MC abzustellen, sollte schon 
triftige Gründe haben, z.B. sehr lange Zuleitungen.
Vermutlich wird das nötige I2C-Protokoll deutlich mehr Code benötigen, 
als das simple Einfügen der Entprell-Lib in den Master.
CPU-Zeit wird auch keine eingespart. Im Gegenteil, der Master muß ja den 
I2C-Slave ständig pollen.

Paul schrieb:
> Da alles
> auf einem Ati 841 laufen soll, ist der Platz leider begrenzt.

Die Entprell-Lib mit Timer schätze ich mal mit ~100 Byte Flash ab.
Was muß der denn sonst noch alles machen, um so einen riesigen 8kB Flash 
zu füllen?

Bei mehr Fragen dazu, mach nen eigenen Thread auf.

: Bearbeitet durch User
von Paul (Gast)


Lesenswert?

Hallo Peter
da der Ati 841 einen I2C Slave hat möchte ich damit verschiedene 
Platinen machen, die kleine Aufgaben erfüllen sollen. Das geht von 
Joystick Steuerung über Taster bis zu Messungen und Encodern. Es sollen 
Teile sein die im Grunde nicht über einen I2C Bus verfügen. Es sollen 
dabei Teilaufgaben gelöst werden, wobei auch Aufgaben übernommen werden. 
Sie können dabei als eigenständige Module oder Slaves genutzt werden.
Die gesamte Steuerung und Auswertung soll dabei vom Master übernommen 
werden. Displaysteuerung, z.B. Farb TFT oder Servo oder Schrittmotor.
Es gibt ein StartUP die solche Module produzieren, allerdings mit einem 
PIC. Beim einer vernünftigen Planung am Bus kann ich damit die 
verschiedensten Aufgaben erfüllen.
Wollte die 5 Tasten wie ein Bedienkreuz verwenden. Wenn dabei aber 
mehrere Tasten gleichzeitig gedrück werden muss ich das zuverlässig 
erkennen und übertragen.
Gern mache ich dazu was neues auf. In der Hoffnung das du mal 
reinschaust.
LG Paul

von Paul (Gast)


Lesenswert?

Hallo footbar
Danke für die Info. Im DB sind einige Register auf 0 gesetzt. Wenn ich 
da von Teile verwende muss ich sie doch auf 1 setzen. Die Register die 
bereits auf 0 stehen brauche dabei nicht zu ändern. Meinst du das?

von foobar (Gast)


Lesenswert?

> Die Register die bereits auf 0 stehen brauche dabei nicht zu ändern.
> Meinst du das?

Nein.  Bits, die du auf 0 haben möchtest (z.B. MUX0), musst du auch auf 
0 setzen - mit |= geht das nicht.  Der Unterschied zwischen:
1
   ADMUXA |= (1<<MUX5)|(1<<MUX4)|(1<<MUX2);  // MUX0/1/3 unverändert
2
und
3
   ADMUXA  = (1<<MUX5)|(1<<MUX4)|(1<<MUX2);  // alle MUXx verändert

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.