Forum: Mikrocontroller und Digitale Elektronik ADC Problem


von Toni (Gast)


Lesenswert?

Hallo zusammen,

ich versuche nun schon ne ganze Weile den ADC eines atiny15 zum laufen 
zu bekommen. Dazu habe ich mir dieses minni Programm hier geschrieben:
1
.include "tn15def.inc"
2
3
.def temp = r16
4
5
;Port als Ausgang definieren
6
ldi temp, 0xFF
7
out DDRB, temp
8
9
;ADC einrichten
10
ldi temp, (1 << REFS0 | 1 << REFS1 | 1 << ADLAR | 1 << MUX0)
11
out ADMUX, temp
12
ldi temp, (1 << ADEN | 1 << ADPS2)
13
out ADCSR, temp
14
15
16
;PWM Timer starten
17
ldi temp, (1 << PWM1 | 1 << COM1A1 | 1 << CS12 | 1 << CS10)
18
out TCCR1, temp
19
20
;ADC wert auslesen und in Compareregister schreiben
21
auslesen:
22
23
sbi ADCSR, ADSC
24
  
25
  wait_adc: 
26
    sbic ADCSR, ADSC
27
    rjmp wait_adc
28
  
29
  in temp, ADCH
30
  out OCR1A, temp
31
rjmp auslesen
32
33
loop:
34
rjmp loop

Ähnlich hatte ich dies schon auf einem atmega8 am laufen, da hats ohne 
Probleme funktioniert. Nur jetzt stelle ich folgendes fest:

Ich habe einen Poti an PB2 angeschlossen. Sobald der Poti mit PB2 
verbunden ist, fällt die spannung am Schleifer auf 0.11V ab, egal welche 
Stellung der Poti hat. Ist er nicht angeschlossen werkelt er korrekt.

Was mach ich hier falsch?

Toni

von johnny.m (Gast)


Lesenswert?

Wenn man einen Portpin als Analog-Eingang verwenden will, dann darf man 
ihn nicht als Ausgang konfigurieren...

von Toni (Gast)


Lesenswert?

ehm k :)
habe da schon rumprobiert.

ldi temp, 0x00
out DDRB, temp
out PORTB, temp

aber auch so hats nicht den gewünschten effekt.
So messe ich an PB2 dann eien spannung von 4V ... Sie ändert sich zwar, 
wenn ich den Poti veränder, aber nicht im erwarteten bereich. Pendelt 
irgendwo zwischen 1.2V - 4.5V.

Toni

von eProfi (Gast)


Lesenswert?

Welchen Wert hat das Poti?
Ist noch was dazwischen geschaltet (R o.ä.)?
Ist der interne PullUp noch aktiviert?

von Joerg X. (Gast)


Lesenswert?

Das sieht kompliziert aus: du mußt den Pin für die PWM als Ausgang und 
den Pin für den ADC als Eingang schalten - am gleichen Port  ;)

von Hannes L. (hannes)


Lesenswert?

In PORTs und DDRs kann man nicht nur 0x00 oder 0xff schreiben, sondern 
auch andere Werte. Versuch's mal mit der Binärschreibweise (0b00000000 
und 0b11111111), vielleicht wird's dadurch deutlicher erkennbar.

...

von Toni (Gast)


Lesenswert?

Danke jetzt funktionierts :)
habe das vorhin auch probiert, einzelne Werte auf eingang bzw ausgang zu 
setzten, nur hab ich nicht ebdacht, dass nur 6 Pins von Portb nach außen 
geführt sind.

Wie gesagt es funktioniert nun, nur eine verständissfrage hätte ich 
noch.
Wenn der Poti nicht angeschlossen sit kann ich eine spannung von 0-2.5V 
einstellen und auch nachmessen. Sobald er aber mit PB2 verbunden ist 
kann ich spannungen von 0-4.x V messen?

Woher kommt das? Ist das Normal?

Toni

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.