www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Comparator 2313


Autor: TOSCHO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche hier schon seit über einer Woche ein Problem mit dem 
Comparator des Attiny 2313 zu lösen.
Ich möchte zwei Spannungen an AIN0 und AIN1 vergleichen und dann einen 
Ausgang setzen.

ACD:=0  Komparator einschalten
PORTB.0:=0  Pullup aus
PORTB.1:=0  Pullup aus

PortD.3:= ACO;

leider geht gar nichts. Kann mir vielleicht jemand helfen. Vielen Dank 
schon mal.

TOSCHO

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, erst mal die Reihenfolge ändern: den Komparator erst dann 
einschalten, wenn die pull-up-Manipulationen vorbei sind.

Vielleicht sogar einige NOP's vor das Einschalten des Komparators 
stellen damit die Spannungen die Spannungen an AIN1 und AIN0 
einschwingen können.

Autor: TOSCHO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erst Mal Danke für die schnelle Antwort.

Ich habe die Anweisung jetzt umgestellt.
und die Abfrage in einer Schleife und trotzdem geht bei mir nichts.

ACD:=0            //Komparator einschalten
DDRB:=$00;        //set direction to be input
PORTB:=$FF;       //Pull up Widerstände einschalten
Nop
Nop
Nop
PORTB.0:=0  //Für ANI0 Pullup aus
PORTB.1:=0  //für ANI1 Pullup aus

while true do
    begin
      PortD.3:= ACO;
    end;

Autor: Frank L. (hermastersvoice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lesen scheint auch nicht seine Stärke zu sein....

Autor: TOSCHO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
o.k.
hab mich hier vertippt. Im Listing sieht es so aus.
Oder hast Du etwas anderes gemeint!
Trotzdem funzt nichts.


DDRB:=$00;        //set direction to be input
PORTB:=$FF;       //Pull up Widerstände einschalten
PORTB.0:=0        //Für ANI0 Pullup aus
PORTB.1:=0         //für ANI1 Pullup aus
Nop
Nop
Nop
ACD:=0            //Komparator einschalten


while true do
    begin
      PortD.3:= ACO;
    end;

Autor: spess53. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>PortD.3:= ACO;

So etwas kann nicht funktionieren. 'ACO' ist eine Konstante, nämlich die 
Bitposition des ACO-Bits im ACSR-Register . Der Compiler dürfte etwa 
'PortD.3:= 5' daraus machen.
Also wenn BASCOM so etwas klaglos schluckt, dann Gute Nacht.

MfG Spess

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sieht nicht nach BASCOM aus, eher nach Pascal...

ACD ist der Name eines Bits und repräsentiert einen Zahlenwert (die 
Bitnummer). Mit ADC:=0 wirst Du das Bit im Register ACSR nicht 
ansprechen können, da wirst Du wohl den Registernamen mit angeben 
müssen. Mit ACO ist es genauso, das hat Dir Spess aber bereits erklärt.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Das sieht nicht nach BASCOM aus, eher nach Pascal..

Jetzt wo du es sagst. Dann beschimpfe ich ab jetzt den anderen Compiler, 
unbekannterweise.

MfG Spess

Autor: TOSCHO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

der Compiler ist Mikropascal for AVR;
und .....  ich wäre im Leben nicht draufgekommen.
Ich habe im lst File jetzt mal nachgeschaut:


Hier ein Auszug was der Compiler aus folgenden Anweisungen macht

aus
ACD:=0            //Komparator einschalten
wird:

LDI   R16,0
STS   7,R16

aus
ACSR.ACD:=0            //Komparator einschalten
wird:

LDS   R0,ACSR
LDI   R16,127
LDI   R17,255
AND   R0,R16
Out   ASCR,R16


Vielen Dank an Spess53 und Sinusgeek.
Das Ganze ist ein kleiner Auszug aus einem Programm für einen 
Leerlaufregler eines KFZs. Den originalen LLR gibt es bei Bosch leider 
nicht mehr zu kaufen.

Noch etwas. Ich bin kein AVR Spezialist, aber ein klein wenig Ahnung 
(glaub ich) hab ich schon. Manche die hier im Forum antworten, 
sollten... jetzt hör ich aber besser auf. Aber lesen kann ich schon.



mfg

TOSCHO

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.