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
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.
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;
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;
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.