Hallo zusammen,
ich suche jetzt schon ewig rum und probier Sachen aus doch es
funktioniert nicht.
Ich habe eine ganz einfache testschaltung.
Wenn ich an dem Poti drehe und einen Wert <= 1 habe, dann soll die LED1
angehen,
Wenn der Wert größer ist, soll die LED2 angehen.
Jetzt habe ich hier ein codeschnipsel gefunden, doch ich glaube es geht
so einfach nicht.
1
/*
2
* GccApplication1.c
3
*
4
* Created: 01.03.2014 19:14:48
5
* Author: user
6
*/
7
8
9
#include<avr/io.h>
10
11
intmain(void)
12
{
13
floatmessung;
14
15
DDRD=0b00111111;
16
while(1)
17
{
18
messung=read_adc(0);
19
messung=messung*5/1023;
20
21
if(messung<=1){
22
PORTD=0b00000001;
23
}
24
else{
25
PORTD=0b00000010;
26
}
27
28
}
29
}
Das sind die Fehlermeldungen:
Warning 1 implicit declaration of function 'read_adc'
[-Wimplicit-function-declaration] C:\Dokumente und
Einstellungen\user\Desktop\Fader_poti\GccApplication1\GccApplication1\Gc
cApplication1.c 19 3 GccApplication1
Error 3 undefined reference to `read_adc' C:\Dokumente und
Einstellungen\user\Desktop\Fader_poti\GccApplication1\GccApplication1\De
bug/.././GccApplication1.c 19 1 GccApplication1
Warning 2 unused variable 'sensorPin' [-Wunused-variable]
C:\Dokumente und
Einstellungen\user\Desktop\Fader_poti\GccApplication1\GccApplication1\Gc
cApplication1.c 13 6 GccApplication1
was amch ich falsch????
Vielen Dank
Wäre echt sehr dankbar wenn mir jemand helfen könnte !!!!
Gruß
Fabi
Ja,
Anscheinend hast du keine Funktion adc_read deklariert, auf der du in
der while schleife zugreifst. Lies das avr-gcc Tutorial (oben links auf
der Seite) da gibts ne Referenz zum ADC
Grüße,
Ernybert
Fabian Müller schrieb:> Das sind die Fehlermeldungen:
(...)
> Warning 2 unused variable 'sensorPin' [-Wunused-variable]> C:\Dokumente und> Einstellungen\user\Desktop\Fader_poti\GccApplication1\GccApplication1\Gc> cApplication1.c 13 6 GccApplication1
Ausserdem scheinst du hier nicht deinen kompletten Code zu posten.
Magnus M. schrieb:> Ausserdem scheinst du hier nicht deinen kompletten Code zu posten.
Wo ?
Ich finde irgendwie nichts.
Tut mir leid.
vielen Dank für deine Geduld
Gruß
Fabi
Fabian Müller schrieb:> Magnus M. schrieb:>> Ausserdem scheinst du hier nicht deinen kompletten Code zu posten.>> Doch das ist der gesammte Code
Ich sehe in deinem Code aber keine Variable namens "sensorPin", welche
dein Compiler jedoch bemeckert. Der Conpiler hat sich den Namen bestimmt
nicht ausgedacht.
Magnus M. schrieb:>> Warning 2 unused variable 'sensorPin' [-Wunused-variable]
Hallo,
oh stimmt, das habe ich dann rausgelöscht weil ich es nicht gebraucht
habe und nicht nochmal einen Built durchgeführt.
Tut mir leid.
Aber danke für den hinweis.
Warning 1 implicit declaration of function 'read_adc'
[-Wimplicit-function-declaration] C:\Dokumente und
Einstellungen\user\Desktop\Fader_poti\GccApplication1\GccApplication1\Gc
cApplication1.c 18 3 GccApplication1
Error 2 undefined reference to `read_adc' C:\Dokumente und
Einstellungen\user\Desktop\Fader_poti\GccApplication1\GccApplication1\De
bug/.././GccApplication1.c 18 1 GccApplication1
Gruß
Fabi
Erny schrieb:> Wenn du mein Post lesen würdest wärst du vllt ein Stück weiter.> Wie gesagt, dir fehlt die Funktion read_adc!
Ja ich habe es schon gelesen.
Nur wie muss ich diese Funktion deklarien ??
wie lautet Sie??
Vielen Dank
Das hab ich ebenfalls geschrieben:
Siehe avr-gcc Tutorial dort auf ADC (analoge ein und ausgabe oder wie
das Kapitel heißt) und bäm. Ein Edamer Code ;)
Hallo Zusammen,
habe jetzt das Tutorial ADC durchgearbeitet.
Ich habe diese Schaltung aufgebaut, nur dass ich statt einem 220 Ohm
Widerstand einen 330 Ohm Widerstand eingebaut, und statt einem 0,1 µF
einen Radialkondensator mit 1 µF und 100 V.
Funktioniert das damit auch?
Jetzt habe ich mich mal an den code gewagt.
Der Code lautet momentan:
1
/*
2
* Fader_2.c
3
*
4
* Created: 02.03.2014 11:32:12
5
* Author: user
6
*/
7
8
9
#include<avr/io.h>
10
11
intmain(void)
12
{
13
DDRD|=(1<<PD2);
14
while(1)
15
{
16
PORTD|=(1<<PD2);
17
DDRD&=~(1<<PD2);PORTD&=~(1<<PD2);
18
}
19
}
es kommt keine Fehlermeldung, allerdings fehlt da ja noch was.
Die Zeitmessung.
Ich finde nichts richtiges.
Wäre ssehr dankbar, wenn mir jemand einen Tipp geben könnte.
Ich erwarte nicht, dass ihr mir den Code schreibt, aber es wäre nett,
wenn ihr mir etwas draufhelfen könntet. Habe ja schon etwas angefangen
und mich bemüht.
Vielen Dank
Gruß
Fabi
hallo,
vielen Dank für deine Antwort !!!
Soll ich ihn einfach weglassen.
Funktioniert es dann immer noch.
Ach ja ich habe glaub ich noch gar n icht geschreiben was ich eigentlich
will.
Ich will wenn ich am poti dreh soll bei dem einem Werte bereich LED 1 an
sein, wenn ich weiter dreh soll die eine LED ausgehen und eine andere
LED angehen.
LED1 (PORTD0)
LED2 (PORTD2)
Vielen Dank
Gruß
Fabi
Fabian Müller schrieb:> keiner eine Idee ?????
Jede Menge. Ach, um dir zu helfen? Keine.
Zumindest nicht, bevor du nicht mit den notwendigen Details rüberkommst.
Weder wissen wir, welchen AVR du verwenden willst (selbst AVR ist schon
geraten). Noch ob du wirklich den ADC verwendest oder eine Trick-
Schaltung mit dem Analogkomparator. Selbst vom Quellcode zeigst du nur
Schnipsel. Und wenn du darauf angesprochen wirst, erzählst du einen vom
Pferd. Mit dieser Einstellung wirst du keinen finden, der dir hilft.
XL
Axel Schwenke schrieb:> Fabian Müller schrieb:>> keiner eine Idee ?????>> Jede Menge. Ach, um dir zu helfen? Keine.>> Zumindest nicht, bevor du nicht mit den notwendigen Details rüberkommst.> Weder wissen wir, welchen AVR du verwenden willst (selbst AVR ist schon> geraten). Noch ob du wirklich den ADC verwendest oder eine Trick-> Schaltung mit dem Analogkomparator. Selbst vom Quellcode zeigst du nur> Schnipsel. Und wenn du darauf angesprochen wirst, erzählst du einen vom> Pferd. Mit dieser Einstellung wirst du keinen finden, der dir hilft.>>> XL
Das ist so eindeutig nicht richtig.
Das ist wirklich der ganze Code !!!!!
Hallo zusammen,
würde vorschlagen wir schließen hier den Thread.
Ich arbeite mich mal richtig ins Thema ein und wenn dann noch Fragen
sind, stell ich sie in einm neuen Thread.
Danke für eure Bemühungen
Gruß
Fabi
Hallo zusammen,
ich habe es jetzt hinbekommen.
Will den Code hier nur schnell hochstellen, damit Leute, die das gleiche
Problem haben, davon profitieren können.
1
#include<avr/io.h>
2
3
4
voidadc_init(void){
5
6
//interne Referenzspannung
7
//ADMUX = 0xC0;
8
9
//AVCC
10
//ADMUX = 0x40;
11
12
//AREF
13
ADMUX=0xC0;
14
15
16
ADCSRA=0x80;//ADC aktivieren, Rest 0 setzen
17
18
//ADCSRA |= 0x01; //Vorteiler 2
19
//ADCSRA |= 0x02; //Vorteiler 4
20
//ADCSRA |= 0x03; //Vorteiler 8
21
//ADCSRA |= 0x04; //Vorteiler 16
22
ADCSRA|=0x05;//Vorteiler 32
23
//ADCSRA |= 0x06; //Vorteiler 64
24
//ADCSRA |= 0x07; //Vorteiler 128
25
26
ADCSRA|=(1<<6);//Konvertierung starten
27
28
while(ADCSRA&(1<<6)){};//Kovertierung beendet
29
30
uint16_tergebnis=0;
31
32
ergebnis=ADCL;
33
ergebnis+=(ADCH<<8);
34
35
}
36
37
38
39
uint16_tadc_read(uint8_tkanal){
40
41
staticuint8_tinit=0;
42
43
if(init==0){adc_init();init++;}//beim ersten Aufruf zunaechst initialisieren
44
45
ADMUX&=(0xE0);//Vorhandenen Wert fuer den Kanal loeschen
46
47
//den Wert fuer den Kanal schreiben, dabei die vorderen 3 Bits vor evtl. fehlern schuetzen