Sehr geehrtes Forum,
ich nutze folgenden Code, und leider
ist stets dieselbe LED, grün, angeschaltet.
Ich habe am ATMega direkt am Pin PC0 gemessen, ob die Spannung ankommt,
und folgende Verschaltung:
AVCC, mit VCC verbunden, AREF, an GND
Code:
1
.include "m88def.inc" // Definitionsdatei für den Prozessortyp einbinden
2
3
/*
4
5
Es soll die Spannung des Potentiometers gemessen werden,
6
und anschließend geprüft werden, in welchem Bereich die Spannung liegt.
7
8
Liegt sie in der unteren Hälfte, so leuchtet die rote LED,
9
liegt sie in der oberen Hälfte, so leuchtet die grüne LED
10
11
*/
12
13
.CSEG // Programm Code für den Flash Speicher
14
15
// Konstante definieren
16
.equ SCHWELLENWERT = 128
17
18
// Richtung der IO Ports definieren
19
LDI R16, 0b11111111 // 1=Output, 0=Input
20
OUT DDRD, R16
21
22
// Stackpointer initialisieren
23
LDI R16, low(RAMEND)
24
OUT SPL, R16
25
LDI R16, high(RAMEND)
26
OUT SPH, R16
27
28
// Main Methode
29
MAIN:
30
// ADC Initialsieren
31
RCALL ADC_INIT
32
33
// Spannung an Potentiometer einstellen
34
CBI PORTD, PIND2
35
36
MAIN_LOOP:
37
// Warte
38
CBI PORTD, PIND2
39
RCALL WAIT_SEC
40
41
// Messung starten
42
RCALL ADC_MEASURE
43
44
// Prüfung
45
CPI R16, SCHWELLENWERT // Vergleiche R17 mit Schwellenwert
46
BRLO ROT_ANSCHALTEN
47
48
GRUEN_ANSCHALTEN:
49
SBI PORTD, PD1 // GRUEN Anschalten, falls größer
50
CBI PORTD, PD0
51
52
RJMP FERTIG
53
54
ROT_ANSCHALTEN: // ROT Anschalten, falls kleiner
55
SBI PORTD, PD0
56
CBI PORTD, PD1
57
58
FERTIG:
59
60
// Warte
61
RCALL WAIT_SEC
62
63
RJMP MAIN_LOOP
64
RJMP MAIN
65
66
// ADC Initialisieren
67
ADC_INIT:
68
// Kanal 0, mit Interner Referenzspannung AVCC auswählen
Ich hab das mit AREF schon in verschiedensten Variationen getestet, mal
an GND, mal an VCC, mal mit Kapazität an GND, nichts hilft.
Die rote LED funktioniert übrigstens auch, falls das jemand fragen will.
Es muss mehr am Code liegen.
K. R. schrieb:> mal mit Kapazität an GND
das ist die richtige Variante. Vom ARef Pin ein Kondensator nach GND.
> Die rote LED funktioniert übrigstens auch, falls das jemand fragen will.> Es muss mehr am Code liegen.
Wie ist dein Poti angeschlossen?
Was ist am Pin D2 angeschlossen?
Peter II schrieb:> LDS R17, ADCH>> und dann vergleichst du R17 mit 128>> aber kann denn das High Byte überhaupt so gross werden?
Ja.
Er hat ADLAR gesetzt.
K. R. schrieb:> Ich hab das mit AREF schon in verschiedensten Variationen getestet, mal> an GND, mal an VCC, mal mit Kapazität an GND, nichts hilft.
bei entsprechender Einstellung der Ref-Spannung hast du damit die
interne Rferenz ganz schön geqält, ob sie das überlebt hat ist die Frage
Ich seh gerade, der Code den ich gepostet hab war nciht der richtige.
Ich habe ADLAR gesetzt, und vergleiche R17
Die hab ich nicht gequält, ich arbeite mit 2,9V xd
K. R. schrieb:> Die hab ich nicht gequält
Natürlich hast du sie gequält.
Wenn die interne Referenzsoannungserzeugung eigeschaltet wird und ihre
erzeugte Spannung auf den Pin ausgibt, dann kannst du den Pin nicht
direkt mit GND verbinden. So etwas nennt man gemein hin einen
Kurzschluss.
S. Landolt schrieb:> Sollte heißen SBR R16,(1<<ADSC)
Das wars! Danke Landolt
Karl H. schrieb:> Natürlich hast du sie gequält.> Wenn die interne Referenzsoannungserzeugung eigeschaltet wird und ihre> erzeugte Spannung auf den Pin ausgibt, dann kannst du den Pin nicht> direkt mit GND verbinden. So etwas nennt man gemein hin einen> Kurzschluss.
^^. Wenn du wüsstest was ich schon alles gemacht hab, da is nie was
passiert xd, ich weiß dass das n Kurzschluss ist xd, aber da fliessen so
geringe ströme bei den spannungen bei denen ich arbeite, da bassiert
nöscht.
Viele Dank für eure Hilfe!
m.f.G.: Developer_X
K. R. schrieb:> Karl H. schrieb:>> Natürlich hast du sie gequält.>> Wenn die interne Referenzsoannungserzeugung eigeschaltet wird und ihre>> erzeugte Spannung auf den Pin ausgibt, dann kannst du den Pin nicht>> direkt mit GND verbinden. So etwas nennt man gemein hin einen>> Kurzschluss.>> ^^. Wenn du wüsstest was ich schon alles gemacht hab, da is nie was> passiert xd, ich weiß dass das n Kurzschluss ist xd, aber da fliessen so> geringe ströme bei den spannungen bei denen ich arbeite, da bassiert> nöscht.
Klar, es geht nichts kaputt. Aber du misst nur noch Mist, weil die
Referenzspannung dann halt 0V (oder sehr, sehr nahe daran) ist.
Kann mal bitte irgendwer einen Hammer holen, damit wir diesen simplen
Fakt allerunterster Trivialitätsstufe irgendwie in deinen völlig
merkbefreiten Schädel gehämmert bekommen können?
Hallo,
K. R. schrieb:> ^^. Wenn du wüsstest was ich schon alles gemacht hab, da is nie was> passiert xd, ich weiß dass das n Kurzschluss ist xd, aber da fliessen so> geringe ströme bei den spannungen bei denen ich arbeite, da bassiert> nöscht.
Um diesen Deinen Satz zu interpretieren:
ich kann also eine Zelle meiner Autobatterie einfach kurzschließen?
Die 2V sind ja noch weniger als Deine 2,9V, da passiert also nichts?
Bei Aussagen wie obigen neige ich auch zum Hammer...
Gruß aus Berlin
Michael