mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tiny45 ADC mit falscher Referenz


Autor: Alex Grah (alexgrah)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo forianer,

ich versuche gerade, den adc vom tiny45 dazu zu überreden, mit der 
internen 1,1v referenz im free running mode zu arbeiten. ohne gain oder 
ähnliches, ganz einfach laufen lassen.

da offenbar in der bascom def-datei ein fehler ist, wollte ich die 
register direkt setzen, aber bei 1,1v eingang kommt als ergebnis immer 
"18h" heraus:

mit der bascom initialisierung (siehe unten) lief der code vorher auf 
dem tiny13 problemlos..

'**** ADC Starten
'tiny 13
'Config Adc = Single , Prescaler = Auto, reference=internal ' Reference 
= Internal 1,1V
'Start Adc                       'ADC läuft durchgehend

'tiny45
admux=&B10000010
adcsra=&B11000000
adcsrb.7=0
adcsrb.5=0
adcsrb.2=0
adcsrb.1=0
adcsrb.0=0

'hier passiert die umwandlung von 10 in 7bit (wertebereich 
0...100(00..64h)), wurde nicht geändert

Sollwert = Getadc(2)                     'Einlesen Analogwert
Shift Sollwert , Right , 3               'Wandeln in 7Bit
Sollwert8 = Low(sollwert)                'lowbyte dem 7bit wert zuweisen
'0...127
Hilfsvariable = Sollwert8            'Umrechnung von 0...127 auf 0...100
Shift Hilfsvariable , Right , 3
Sollwert8 = Sollwert8 - Hilfsvariable
Shift Hilfsvariable , Right , 1
Sollwert8 = Sollwert8 - Hilfsvariable
Shift Hilfsvariable , Right , 1
Sollwert8 = Sollwert8 - Hilfsvariable
Shift Hilfsvariable , Right , 1
Sollwert8 = Sollwert8 - Hilfsvariable
Shift Hilfsvariable , Right , 1
Sollwert8 = Sollwert8 - Hilfsvariable
Return

jemand ne idee ?!

Autor: Alex Grah (alexgrah)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls jemand einen Tip hat, wäre ich sehr dankbar !

Autor: chrisg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Das bit "ADATE" muss im Free-Running mode auch gesetzt sein, sonst macht 
der ADC exakt eine Umwandlung.

adcsra=&B11100000

Ausserdem ist der Prescaler auf Clock/2 gesetzt - je nach verwendetem 
Systemtakt ist das deutlich zu schnell sein für eine ADC-Wandlung.

Der ADC muss in einem Bereich von 50..200kHz laufen. Bei einem Clock von 
8MHz (interner Oszillator oder Quarz) gäbe das einen Prescaler von 64.

adcsra=&B11100110

Viel Erfolg!

Autor: Alex Grah (alexgrah)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Info, das Bit ADATE habe ich gestern Abend dann auch 
entdeckt, den Prescaler habe ich jetzt auch auf 64 und nun klappt es, 
danke nochmal !!

Gruß Alex

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.