PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATtiny44 ADC will nicht



Schokohoernl
06.07.2007, 21:06
Tach

Ich hab gerade folgendes Problem: ich will einfach ne Spannung am ADC1 messen. doch irgendwie misst er immer 1023, auch wenn ich den pin auf GND lege und mein messgerät auch 0V anzeigt.

hier mein code:





$crystal = 20000000
$regfile = "attiny44.dat"

Config Pina.3 = Output
Config Pina.1 = Input

Dim Temp As Word


Open "coma.3:9600,8,n,1" For Output As #1

Print #1 , "UART gestartet"


Config Adc = Single , Prescaler = Auto

Start Adc



Do

Temp = Getadc(1)

Print #1 , Temp
Print #1 , ""

Wait 1

Loop



Der Software UART tut problemlos. nur die spannung wird nich erkannt, bzw. ist permanent auf dem wert 1023 (also 5V)

MfG

Schoko

P.S.: Ich weiss, wer misst misst mist ;-)

linux_80
06.07.2007, 22:26
Hallo,

ich hab mir das Ergebnis der Compilierung von Bascom mal in Assembler angeschaut, und ich würde sagen, da hat sich der Bascomcompiler in der Register-Adresse vertran:

+00000052: 91800006 LDS R24,0x0006 sollte wohl ADCSRA werden, mit LDS wird das aber nix !
+00000054: 6C80 ORI R24,0xC0 Logical OR with immediate
+00000055: 93800026 STS 0x0026,R24 hier stimmt die Adresse, aber die Daten sind schon falsch !
+00000057: 91800006 LDS R24,0x0006 hier sollte gewartet werden, bis der ADC fertig ist, aber die Adresse stimmt nicht !
+00000059: FD86 SBRC R24,6 Skip if bit in register cleared
+0000005A: CFFC RJMP PC-0x0003 Relative jump

+0000005B: B184 IN R24,0x04 In from I/O location
+0000005C: B195 IN R25,0x05 In from I/O location
+0000005D: 9508 RET Subroutine return



Das habe ich mit der 1.11.8.8 compiliert !
Welche Version hast Du ?
Dann werden wir das an den Mark weiterleiten dürfen !

Da Problem ist auch beim Tiny24 und 84 !

Das hilft Dir jetzt zwar nicht weiter, aber einen Bug hast Du entdeckt :-)

Schokohoernl
06.07.2007, 22:51
tolle wurst.... krieg ich jetzt nen eis? ;-)

also ich verwende 1.11.8.7 DEMO (is die neueste, oder?)

hoffentlich behebt mark den fehler bald.... sonst wird das nis mit dem US-entfernungsmesser ;-)

MfG

Schoko

linux_80
06.07.2007, 22:57
Bis zur nächsten Demo wirds wieder etwas dauern, muss erst die nächste Full raus in der das behoben ist.

Du könntest Dir eine eigene GetADC bauen, bis das offiziell repariert ist, den Code hast Du ja oben, sind nur ein paar Zeilen.
Es kommt nur die Auswahl des ADC-Kanals dazu, das wird ausserhalb der funktion gemacht.

kowolfgang
07.07.2007, 13:51
Hallo,

scheinbar hat der Tiny44 in Bascom noch so einige Bugs, neulich hab ich festgestellt das das eine Register vom Timer1 nicht stimmt.

Das hab ich dann in der .dat Datei in Bascom geändert seit dem gehts (Vorher lieber ne Sicherungskopie von der Datei machen).
Einfach die passende Registeradresse ausm Datenblatt nehmen und in der .dat Datei ändern ;)

Gruß

Wolfgang