Forum: Mikrocontroller und Digitale Elektronik komme mit dem A/D-Wandler vom Atmega8 nicht klar. (Sonnennachführung, Spannungen vergleichen)


von Jürgen S. (medcezir)


Lesenswert?

Hallo,

muss eine Sonnennachführung für die Schule machen. Im Gebiet 
Mikrocontroller bin ich noch nicht so weit. Mit dem A/D-Wandler komm ich 
garnicht klar.

Ich verwende Getriebemotoren und LDR´s.
Ich muss die SPannungen an 2 LDR´s miteinander vergleichen und 
dementsprechend SPannungen an den Motor geben.

Mein Problem ist, dass Ich mit dem AD-Wandler nicht klar komme. Könnte 
mir jemand Tipps geben, wie ich die Spannungen miteinander vergleiche? 
Die Spannungen die dann ausgegeben werden kriege ich selber hin.

Vielen Dank im voraus

von humpf (Gast)


Lesenswert?

> Könnte
> mir jemand Tipps geben, wie ich die Spannungen miteinander vergleiche?
1
if(spannung1>spannung2)
2
  tu_was();
3
else
4
  tu_was_anderes();
Was meinst du???

> Mein Problem ist, dass Ich mit dem AD-Wandler nicht klar komme.
Datenblatt + Tutorial hier fragen und selber denken.

von Timmo H. (masterfx)


Lesenswert?

Hier gibts ein fertiges Codebeispiel. Ist eigentlich nur Copy&Paste, den 
rest mit dem Denken musst du selbst machen: 
AVR-GCC-Tutorial: Nutzung des ADC

von humpf (Gast)


Lesenswert?

> Tutorial hier fragen
soll heißen: Das Tutorial welches auf dieser Seite (linker Rand) zu 
finden ist lesen, nicht hier im Forum fragen.

von MarioT (Gast)


Lesenswert?

Kennst Du dies schon?
http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC
müsste eigentlich die meisten Fragen beantworten.

von Jürgen S. (medcezir)


Lesenswert?

Danke,

für die schnellen antworten.

Ich weiss nicht wie es mit Spannung1>Spannung2 funktuniert, aber werde 
mich zuhause mal intensiev damit beschäftigen.
Hat mir einiges weiter geholfen, Danke ;)

von U.R. Schmitt (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> Ich weiss nicht wie es mit Spannung1>Spannung2 funktuniert

??? Wie meinst Du das?

Jürgen Schmitt schrieb:
> muss eine Sonnennachführung für die Schule machen. Im Gebiet
> Mikrocontroller bin ich noch nicht so weit. Mit dem A/D-Wandler komm ich
> garnicht klar.

Vieleicht erzählst Du uns einfach mal womit Du klargekommen bist, also 
was du bis jetzt schon hast und wie Du dir vortstellst wie die Sensorik 
und die Auswertung der Sensorik aussehen soll.

von Ben _. (burning_silicon)


Lesenswert?


von Jürgen S. (medcezir)


Lesenswert?

also, ich nutze die 5v spannung vom mikroC.
und einen LDR + einen vorwiderstand. bei lichteinfluss ändern sich die 
werte.
rechts und links vom solarpanel befinden sich jeweils LDR´s. Was ich 
hinbekommen habe ist. Das ganze zu verschalten.

von U.R. Schmitt (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> Das ganze zu verschalten.

Wie hast du das verschalten? Schaltplan?
Wie willst Du mit 2 LDRs sie einfach nur Links und Rechts vom Panel sind 
merken wo die Sonne steht? die scheint genauso stark auf die linke wie 
auf die rechte Seite. Oder hast Du die in einem Winkel angebracht oder 
teilweise abgeschattet? Bild oder Skizze wäre sinnvoll.
Aber les  Dir bitte die Infos zu Bildformate durch.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> also, ich nutze die 5v spannung vom mikroC.
> und einen LDR + einen vorwiderstand. bei lichteinfluss ändern sich die
> werte.

Gut.

Jetzt hängst du erst mal einen deiner Spannungsteiler an einen ADC 
Eingang



     + o
       |
      ---
      | |
      | |
      ---
       |
       +----------------------->  zum ADC Eingang
       |
      ---
      | | LDR
      | |
      ---
       |
     --+---------- Masse ------> zur µC Masse

und holst dir aus dem Tutorial die ADC Routinen. Mit denen schreibst du 
dir ein Programm, dass genau diesen einen ADC Eingang in einer Schleife 
immer wieder abfrägt. Vom ADC Eingang kriegst du eine Zahl zwischn 0 und 
1023. Wenn irgendwie möglich, lass dir diese Zahl irgendwo ausgeben. 
Dann schattest du den LDR mal mit der Hand ab oder leuchtest mit der 
SChreibtischlampe drauf und siehst dir an ob und wie sich der jeweils 
ausgelesene Wert verändert, wenn du die Beleuchtung des LDR veränderst.

Das ist dein erstes Ziel: 1 LDR in Betrieb nehmen und wenn sich dessen 
Beleuchtung verändert, verändern sich auch in deinem Programm die 
Zahlenwerte.

(Es hat keinen Sinn, da jetzt noch weitere Funktionalität drauf zu 
programmierern, solange du nicht 100% sicher weißt, dass der ADC 
tatsächlich funktioniert)

von Jürgen S. (medcezir)


Lesenswert?

+ o
       |
      ---
      | |
      | |
      ---
       |
       +----------------------->  PC 1
       |
      ---
      | | LDR
      | |
      ---
       |
     --+---------- Masse ------> zur µC Masse

hier ist ein LDR z.B.
könnte mir jemand vielleicht den Anfang also den code schicken? dann 
würde ich den rest hinbekommen, habe mich damit beschäftigt und mich uch 
mit meinem Lehrer dran gehockt. Wir kamen nicht weiter. Wenn mir jemand 
eins schicken könnte würde ich den rest hinbekommen. Unzwar nur Teil wo 
das ganze Ausgelesen wird. Ich mache das gnze mit C und AVR Studio 4.

von Karl H. (kbuchegg)


Lesenswert?

Steht alles im AVR-GCC-Tutorial.

Und wenn du das, was im Abschnitt über den ADC nicht explizit als C Code 
ausgeführt ist, nicht alleine hinkriegst, dann hat es keinen Sinn da 
weiter zu machen. Denn das bedeutet, dass du noch nicht mal die 
einfachsten Sachen programmierern kannst und du erst mal ganz bei 0 
anfangen musst. Und dazu ist das Forum nicht da.

von Walter (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> dann
> würde ich den rest hinbekommen

entweder du machst es selber oder das ist einfach nicht dein Ding,
dann lass es

von Jürgen S. (medcezir)


Lesenswert?

1
int main (void)
2
{
3
ISR (ADC_vect)  {LDR1 = ADCH}  
4
ADCSRA |= (1<<ADEN);  //ADC aktivieren
5
ADCSRA |= (1<<ADSC);  //Start convesion
6
ADCSRA |= (1<<ADFR);  //Dauernd aktivierent
7
ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
8
ADCSRA |= (1<<ADIE);
9
10
ADMUX = (1<<ADLAR);
11
12
13
//ADCSRA = 0b11101111;
14
sei();
15
16
}

hier habe ich mal den Code was ich bis jetzt habe. So bekomm ich ja die 
Werte von einem LDR. Da ich alle gleichzeitig messen kann, muss ich ja 
hinundher schalten. Und die Werte in 4 verschiedene Variablen 
abspeichern. Irgend wie mit der mux Tabelle. Wie mache ich das? Wie 
sieht der Befehl dazu aus? im Turturial konnt ich es nicht raussuchen.
Danke

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:

> sieht der Befehl dazu aus? im Turturial konnt ich es nicht raussuchen.

Im Tutorial sind fertige Funktionen! (Jetzt zum 3.ten oder 4.ten mal 
hier angeführt)

Du brauchst sie nur noch zu verwenden. Da ist auch ein Beispiel dabei, 
wie man die Funktionen verwendet.

Also noch einfacher KANN man dir die Aufgabenstellung "Auslesen eines 
ADC" nicht mehr machen. Nur: Ein wenig C müsstest du halt können. Gar 
nicht mal viel, aber wenigstens ein bischen. Und ein wenig Übung in der 
C-Programmierung auf einem AVR müsstest du haben. Gar nicht mal viel, 
aber wenigstens ein bischen.

Und nein: Du brauchst dir dort nicht raussuchen, welches Bit du in 
welchem Register zu setzen hast. Dort sind 2 Funktionen, die eine heisst 
ADC_init (na was wird die wohl machen) und die andere heisst ADC_Read 
(was wird die wohl machen). Du brauchst sie nur übernehmen und 
verwenden! Du musst da gar nichts erfinden. Wenn du sie zumindest in 
groben Zügen verstehst, ist das mehr als du brauchst. Im Grunde genommen 
reicht es, wenn du die Funktionen aufrufen kannst - mehr musst du dazu 
nicht können! Und selbst das ist in einem simplen main()-Beispiel 
gezeigt.

Oder anders gefagt:
Welchen Teil in ...
1
int main()
2
{
3
  uint16_t adcval;
4
  ADC_Init();
5
 
6
  while( 1 ) {
7
    adcval = ADC_Read(0);  // Kanal 0
8
    // mach was mit adcval
9
 
10
  }
11
}
... verstehst du nicht? Denn das ist alles was du verstehen musst und 
womit du weiterarbeitest. Die beiden Funktionen, die übernimmst du 
einfach aus dem Tutorial! Eventuell passt du höchstens noch die 
Einstellung der Referenzspannung an. Aber mehr brauchst du nicht tun, um 
einen funktionierenden ADC zu haben.

Die nächste Stufe der Hilfe besteht dann schon darin, dass jemand zu dir 
hinfährt und den Code höchstpersönlich bei dir eintippt.

von Jürgen S. (medcezir)


Lesenswert?

1
//Globale Variablen
2
uint8_t LDR1, LDR2, LDR3, LDR4; 
3
// unsignd integer 8Bit, 
4
ISR (ADC_vect)  {LDR1 = ADCH;}
5
6
int main (void)
7
{
8
  
9
ADCSRA |= (1<<ADEN);  //ADC aktivieren
10
ADCSRA |= (1<<ADSC);  //Start convesion
11
ADCSRA |= (1<<ADFR);  //Dauernd aktivierent
12
ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
13
ADCSRA |= (1<<ADIE);
14
15
ADMUX = (1<<ADLAR);
16
17
18
//ADCSRA = 0b11101111;
19
sei();
20
21
while (1)
22
{    LDR1 = ADC_Read(0);
23
  LDR2 = ADC_Read(1);
24
  LDR3 = ADC_Read(2);
25
  LDR4 = ADC_Read(3);

jetzt kann ich mit den werten arbeiten?
habe oben ISR aber unten was anderes hää?
tut mir leid programmiere seit paar monaten erst

von Karl H. (kbuchegg)


Lesenswert?

Ich gebs auf.
Wem nicht zu helfen ist, dem ist nicht zu helfen.

von Jürgen S. (medcezir)


Lesenswert?

was stimmt da jetzt nicht? :S

von Karl H. (kbuchegg)


Lesenswert?

Siehst du im Tutorialsbeispiel irgendwo eine ISR?
Nein. Also, wozu hast du dann so etwas ähnliches wie eine ISR
eingeführt? Und was war jetzt so schlimm den Teil im ADC_Init einfach
beieinander zu lassen?

> tut mir leid programmiere seit paar monaten erst

Dann wärst du gut beraten, wenn du nicht ständig dein eigenes Süppchen
kochen würdest, sondern dir die Ratschläge der Erfahreneren zu Herzen
nimmst und sie ganz einfach befolgst.

LASS DIE FINGER VON INTERRUPTS, WENN DU SIE NICHT BEHERRSCHT.

Und das tust du ganz offensichtlich nicht. Noch nicht einmal 
ansatzweise.

von Karl H. (kbuchegg)


Lesenswert?

Was ist falsch an
1
//Globale Variablen
2
uint16_t LDR1, LDR2, LDR3, LDR4; 
3
4
int main (void)
5
{
6
  ADC_Init();
7
8
  while (1)
9
  {
10
    LDR1 = ADC_Read(0);
11
    LDR2 = ADC_Read(1);
12
    LDR3 = ADC_Read(2);
13
    LDR4 = ADC_Read(3); 
14
15
    if( LDR1 > LDR2 )
16
    {
17
       ...
18
    }
19
  }
20
}

Ist dir das zu einfach, zu simpel, zu banal oder was?
Möchtest du das jetzt auf Teufel komm raus pimpen und komplexer machen 
oder wie?

von Jürgen S. (medcezir)


Lesenswert?

Also lasse ich das ganze mit adscra und dem kram weg? Oder ich lasse es 
da und wie du es gemacht hast noch drunter?

Danke hast mir meinen abschluss gerettet ;) die schule lehrt nicht genug 
.. ./

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> Also lasse ich das ganze mit adscra und dem kram weg?

Der steht doch schon in ADC_Init!

Sag mal, liest du eigentlich auch selbsttätig mal irgendwas worauf man 
dich nicht mit der Nase stösst?

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:

> Danke hast mir meinen abschluss gerettet ;) die schule lehrt nicht genug
> .. ./

In diesem Fall ist nicht die Schule das Problem.
Pisa hat schon recht, dass es mit dem Textverständnis beim Lesen nicht 
weit her ist.

von Jürgen S. (medcezir)


Lesenswert?

bekomme dauernd den fehler hier "HBFI09b-IO1.c:41: undefined reference 
to `ADC_Init'"
1
// Header-Dateien für Preprozessor
2
#define F_CPU 3686400UL
3
#include <util/delay.h>
4
#include <avr\io.h>    // Pin-Definitionen
5
#include <stdint.h>    // div. int-Datentypen
6
#include <avr/interrupt.h>
7
// ausgelagerte Makros in eine Header-Datei BitMask
8
//#include <\avr\Programme\BitMask.h>    
9
  // Schreibweise: Register Makroname Bitposition )
10
11
12
13
//Konstantendeklaration, Reihenfolgen nach AVR-Board
14
//Port-D: Eingänge
15
//const uint8_t Taster1_D    = PD2;  //PinTaster1
16
//const uint8_t Taster2_D  = PD3;
17
//const uint8_t Festpegel1_D= PD4;
18
//const uint8_t Festpegel2_D= PD5;
19
//const           = PD6;
20
//const           = PD7;
21
22
//Port-B: Ausgänge
23
//const uint8_t LEDrot_B    = PB0;  //inv. Wert von Taster1
24
const uint8_t LEDgelb_B   = PB1;  //inv. Wert von Taster2
25
const uint8_t LEDgruen_B  = PB2;  //Funktionswert
26
//const           = PB3;
27
//const            = PB4;
28
//const            = PB5;
29
30
//Port-C
31
//const           = PC0;
32
//const            = PC1;
33
//const            = PC2;
34
//const           = PC3;
35
//const            = PC4;
36
//const uint8_t LEDgruen_C  = PC5;
37
38
//Globale Variablen
39
uint8_t LDR1, LDR2, LDR3, LDR4;
40
41
int main (void)
42
{
43
  ADC_Init();
44
45
  while (1)
46
  {
47
    LDR1 = ADC_Read(0);
48
    LDR2 = ADC_Read(1);
49
    LDR3 = ADC_Read(2);
50
    LDR4 = ADC_Read(3);
51
52
    if( LDR1 > LDR2 )
53
    { 
54
    PORTB |= (1<<LEDgruen_B);
55
    }
56
    if( LDR1 < LDR2 )
57
    {
58
    PORTB |= (1<<LEDgelb_B);
59
    }
60
  }
61
}

von XXX (Gast)


Lesenswert?

Moin

Wo steht denn dein ADC_Init()???
Vergessen, die entsprechende Datei dazuzulinken??

Gruß
Joachim

von Jürgen S. (medcezir)


Lesenswert?

Und wie mache ich das?  Welche datei?
Avr_read muss ich ja dann auch dazu linken

von 789 (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> Danke hast mir meinen abschluss gerettet ;)
Ob das so gut war?

von Walter (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> Avr_read

???

vermutlich hast du das ADC_init aus dem Tutorial,
also von dort in deinen Quelltext kopieren

von Weingut P. (weinbauer)


Lesenswert?

Sorry, aber hier muss ich mal ne Lanze für BASCOM AVR brechen.

Jürgen schau Dir mal die Basic Programmierumgebung namens
Bascom an, da wirst Du recht einfach und schnell zum Ziel
kommen.

Damit kannst Du einfach per

"config adc" den AD-Wandler initialisieren

und per "getadc(x)" denselbigen kanalweise auslesen

Für Deine Anwendung reicht auch die freie Demoversion
noch locker aus.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> bekomme dauernd den fehler hier "HBFI09b-IO1.c:41: undefined reference
> to `ADC_Init'"

Klar.
In deinem Code gibt es ja auch keine Funktion ADC_Init. Und auch keine 
Funktion ADC_Read.

Aber im Tutorial gibt es sie.
Also geh zum Tutorial. Such dir den Abschnitt, markier dort den Text in 
dem die beiden Funktionen ausprogrammiert sind, dürck auf Strg-C (für 
kopieren), dann gehts du in deinen Programmtext, setzt den Cursor an 
eine geeignete Stelle (Achtung: Funktionen kann man nicht überall 
einsetzen) und drückst Strg+V für "Einsetzen".
Und schon hast du den Quelltext der beiden Funktionen auch in deinem 
Code. Damit gibt es dann bei dir plötzlich die beiden Funktionen und du 
kannst sie auch verwenden.

Und nächstes mal nimmst du dir kein Schulprojekt mehr, bei dem du hinten 
und vorne nicht weiter weißt.

von Karl H. (kbuchegg)


Lesenswert?

Fhutdhb Ufzjjuz schrieb:
> Sorry, aber hier muss ich mal ne Lanze für BASCOM AVR brechen.

Das hat mit BASCOM oder C erst mal herzlich wenig zu tun.

Es geht wieder mal darum, dass jemand den Mund zu voll genommen hat und 
ein Projekt angefangen hat, ohne das geringste dafür notwendige 
Basiswissen zu besitzen.

In BASCOM würde er genauso anstehen, weil er ganz einfach die Doku nicht 
gelesen hätte. Genausowenig wie er ein C-Buch für die primitivsten 
Grundlagen gelesen hat oder geschweige denn vielleicht mal ein paar 
Vorversuche für die einfachsten Dinge gemacht hätte und sich so aus dem 
Sumpf gezogen hat. Ich wage die Behauptung: er hat noch nie irgendein 
Programm für einen µC geschrieben. Sieh dir sein Programm an, wie er LED 
behandelt. Hätte er je mit einem Taster eine LED ein/aus geschaltet, 
hätte er sich gemerkt, dass LED's auch irgendwo wieder ausgeschaltet 
werden müssen. Siehst du in seinem Code irgendetwas in diese Richtung?

von hubert (Gast)


Lesenswert?

Karl Heinz und auch Jürgen, ich bewundere euere Geduld.

Wen ich nicht verstehe, das ist der Lehrer, der das Schulprojekt 
betreut. Ich bin bis jetzt davon ausgegangen, daß ein Ausbilder das 
Thema, das er vermitteln möchte eigentlich selber umfassend behrrscht 
und auch vermitteln kann. Wenn so etwas wie hier zu sehen der Alltag an 
der heutigen Schule ist, so erklärt es einiges zu den schlechten Pisa 
und sonstigen Ergebnissen.

von Stephan H. (stephan-)


Lesenswert?

wobei ich mich immer frage ob es die Lehrer oder doch die Schüler sind. 
Bei einer Fortbildung meinerseits saßen auch noch 20 andere in der 
Klasse und hatten nichts besseres zu tun als 1 Jahr lang jeden Tag mit 
Windows Karten zu spielen. Tja so sahen dann auch deren Klausuren aus.5 
setzen !

von Karl H. (kbuchegg)


Lesenswert?

Grrrrr
1
uint8_t LDR1, LDR2, LDR3, LDR4;

uint8_t !

Ich hab nicht explizit darauf hingewiesen, aber das hab ich ihm weiter 
oben schon mal korrigiert.

Ist ja auch so wahnsinnig sinnig einen 10 Bit Wert in einer 8 Bit 
Variablen unterzubringen.

Passt genau zu dem was Stephan sagt: nach einem Semester sind selbst die 
einfachsten Dinge immer noch eine unüberwindliche Hürde.

Ein interessierter Bastler macht so ein Projekt an einem Nachmittag. Und 
das ganz ohne Stress. Hier wird seit 14 Tagen daran rumgehampelt und ein 
Ende ist noch lange nicht in Sicht. An einem Projekt das aus dem 
Vergleichen von jeweils 2 Zahlen und ein/ausschalten von Motoren 
besteht.
Und das soll ein Abschlussprojekt sein? Abschluss wofür? Was soll durch 
diesen Abschluss dokumentiert werden?

(Sorry, aber manchmal muss ich mir auch Luft machen)

von Jürgen S. (medcezir)


Lesenswert?

der karl heinz hat es ganz anders beschrieben. Dachte so würde es 
funktunieren. Kann ich nicht einfach eine Bibliothek aufrufen? wie löse 
ich das mit AVR_Init jetzt genau :S


LED ein aus versteh ich. Uns wurde nur per taster ein ausschalten von 
LEDs gelehrt. Und das Projekt einfach gegeben.
Und jeder fängt mal von anfang an an. Bin erst seit Monaten dabei.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> der karl heinz hat es ganz anders beschrieben. Dachte so würde es
> funktunieren. Kann ich nicht einfach eine Bibliothek aufrufen? wie löse
> ich das mit AVR_Init jetzt genau :S

Beitrag "Re: komme mit dem A/D-Wandler vom Atmega8 nicht klar. (Sonnennachführung, Spannungen vergleichen)"

einfach den Text der Funktionen in deinen Quelltext reinkopieren.
Das einfachste von der Welt.

Aber ich hab schön langsam den Verdacht, du weißt gar nicht was 
Funktionen sind. Das erklärt auch, warum du dich von Anfang so dagegen 
gesträubt hast, die Funktionen aus dem Tut zu benutzen.

von Walter (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> Bin erst seit Monaten dabei.

und was hast du in der Zeit eigentlich gemacht?

von alle Tage wieder (Gast)


Lesenswert?

Stephan Henning schrieb:
> Bei einer Fortbildung meinerseits saßen auch noch 20 andere in der
> Klasse und hatten nichts besseres zu tun als 1 Jahr lang jeden Tag mit
> Windows Karten zu spielen.
So ähnlich dürfte es hier auch aussehen: fauler Schüler. Leider schaffen 
die es immer wieder sich hier ihre Hausaufgaben machen zu lassen, ich 
würde den Fred in die Tonne kippen oder zumachen und den TO KRÄFTIG auf 
die Schnauze fallen lassen. Dann hat er was gelernt.

von Jürgen S. (medcezir)


Lesenswert?

warum hausaufgaben machen lassen?
ich sitz seit tagen da dran. Und die codes habe ich nicht. und ka wie 
ich mit denen umgehen soll.
Am Anfang wart ihr doch auch bestimmt so. Habe auch mehrere Schritte 
benutzt. Hat auch nichts mit faueler Schüler zu tun.

von alle Tage wieder (Gast)


Lesenswert?

>Am Anfang wart ihr doch auch bestimmt so.
Nein, so war ich nie.

von Jürgen S. (medcezir)


Lesenswert?

Hast direkt alles gewusst. Auch nie Probleme gehabt. Oder mal gehabt 
nachgefragt. Die Lösung bekommen, aber nicht die Lösung verstanden.

von Tut (Gast)


Lesenswert?

Hast du dir eigentlich schon das AVR-GCC-Tutorial (auf das dich schon 
die ganze Zeit Leute verweisen) durchgelesen und auch durchgearbeitet?

von Jürgen S. (medcezir)


Lesenswert?

Hab ich gemacht, dann wurde mmir gesagt:"Warum benutzt du ein Interupt?" 
mach es doch so. Dann bin ich auf das Problem mit AVR_Init gestoßen. 
Habe den Quellcode dafür rauskopiert. Mein Programm zeigt keine Fehler 
an. Cool, Board angeschlossen. Alles verkabelt. Statt LDR Pottis 
verwendet. Aber keine Funktion.

von alle Tage wieder (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> Hast direkt alles gewusst. Auch nie Probleme gehabt. Oder mal gehabt
> nachgefragt. Die Lösung bekommen, aber nicht die Lösung verstanden.
Ich war selbstständig (und bin es noch).
Datenblätter lesen (ggf. mit Wörterbuch), Application Notes (wenns 
komplizierter wird), Tutorials durcharbeiten, GOOGELN (ich wette dass 
99,99% aller Anfängerfragen schon beantwortet wurden, hier im Forum oder 
anderswo) usw.

*Nicht*: Hallo, ich hab keine Ahnung, war in der Schule ein fauler Sack, 
bin es immer noch und muss jetzt... Wie geht dass?

Tut schrieb:
> Hast du dir eigentlich schon das AVR-GCC-Tutorial (auf das dich schon
> die ganze Zeit Leute verweisen) durchgelesen und auch durchgearbeitet?
Ich wette nein.

von Jürgen S. (medcezir)


Lesenswert?

aller Tage ich brauche deine unnötigen kommentare nicht ! ! !
Wie schon gesagt, bin seit Tagen/Wochen dran. Jeder sagt was anderes. 
Das was ich ausgearbeitet habe ist voll der Chaos geworden.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:

> Habe den Quellcode dafür rauskopiert.

Und wo ist das in deinem zuletzt geposteten Programm?
Das letzt von dir gepostete Programm lässt sich nicht korrekt erstellen. 
Ist das jetzt endlich erledigt?


> Mein Programm zeigt keine Fehler
> an. Cool, Board angeschlossen. Alles verkabelt. Statt LDR Pottis
> verwendet. Aber keine Funktion.

Das kann jetzt vieles sein.
Angefangen von falscher Verkabelung bis zu falscher Auswertung, bis zu 
falsch eingestellter Referenzspannung bis zu falsches Programm auf den 
µC geflasht.

von alle Tage wieder (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> aller Tage ich brauche deine unnötigen kommentare nicht ! ! !
alle Tage wieder, ich darf doch sehr bitten!
> Das was ich ausgearbeitet habe ist voll der Chaos geworden.
Warum wundert mich das nicht?

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> Hab ich gemacht, dann wurde mmir gesagt:"Warum benutzt du ein Interupt?"
> mach es doch so.

Sei froh, dass ich dir den Interrupt ausgeredet habe.
Auf einer Wissens-Skala von 1 bis 20 solltest du mindestens auf 12 sein 
um mit Interrupts zu arbeiten. Nach dem was ich gesehen habe und so wie 
du dich anstellst, bist du gerade mal bei 4

von Jürgen S. (medcezir)


Lesenswert?

10€ für einen fertigen Quellcode ! überweisung über PayPal. Ich kann 
nicht mehr. :) Ich krieg ein Projekt ohne Grundwissen. Schwachsinnig ey.

von alle Tage wieder (Gast)


Lesenswert?

Jürgen Schmitt schrieb:
> 10€ für einen fertigen Quellcode !
Die üblichen Stundensätze(!!!) liegen >50€, genaueres können dir die 
Selbstständigen hier sagen.

> Ich krieg ein Projekt ohne Grundwissen. Schwachsinnig ey.
Aber natürlich.

von Karl H. (kbuchegg)


Lesenswert?

Damit sind wir dann ja wohl fertig.

von alle Tage wieder (Gast)


Lesenswert?

Ja, tu uns einen Gefallen und mach hier dicht, Danke!

von Jürgen S. (medcezir)


Lesenswert?

Für euch ist das ja eine Sache von 10min. Bin noch ein Schüler so viel 
habe ich nicht. :D Und brauche ja nur den Teil. Wert rein Wert raus. So 
weit bis ich mit 4 Variabeln weiter arbeiten kann.

10min. also 60€/6=10€ :)

von Huch (Gast)


Lesenswert?

>Für euch ist das ja eine Sache von 10min. Bin noch ein Schüler so viel
>habe ich nicht. :D Und brauche ja nur den Teil. Wert rein Wert raus. So
>weit bis ich mit 4 Variabeln weiter arbeiten kann.

>10min. also 60€/6=10€ :)

Aufgrund dieser Attitüde steigt der Stundensatz schon mal auf 360€.

10min. also 360€/6=60€ :)

von alle Tage wieder (Gast)


Lesenswert?

>Bin noch ein Schüler
Das wissen wir mittlerweile.

>10min. also 60€/6=10€ :)
Du bist vielleicht naiv...

@Karl Heinz
Bitte, mach zu. Das wird ja eh nix mehr.

von Jürgen S. (medcezir)


Lesenswert?

Tu mir den Gefallen :) Dann kriegste halt 60€ Hab kein bock eine 5 wegen 
dem AD-Wandler zu kassieren. !

von alle Tage wieder (Gast)


Lesenswert?

>Hab kein bock eine 5 wegen dem AD-Wandler zu kassieren. !
Dann hättest halt mal im Unterricht aufgepasst usw.

Wer nicht hören will muss fühlen.

von hubert (Gast)


Lesenswert?

Hallo Jürgen.

Versteh ich das hier richtig:

Du versuchst hier gleichzeitig
- Programmierung überhaupt (Problemanalyse, Lösungswege)
- C Programmierung (Sprache, Compilerbedienung, Programm- und 
Dateiaufbau) zu lernen,
- Microcontroller-Programmierung (Den Code auf dem Chip zu bekommen und 
laufen zu lassen sowie Microcontroller-spezifische Funktionsweisen) zu 
lernen,
- Grundlagen analoger Schaltungstechnik (Spannungsteiler an 
Widerständen) zu lernen,
- und zum Schluß noch Leistungselektronik (soll ja dann mal ein Motor 
angesteuert werden) zu lernen.

Das ist ganz schön viel auf einmal.

Oder sehe ich das jetzt falssch? Welche Erfahrungen mit diesen Themen 
konntest Du denn schon sammeln. Vielleicht postest Du hier mal was Du in 
diesen Bereichen schon gemacht hast, dann wissen die hilfsbereiten 
Forenteilnehmer wo sie ansetzen können.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> Für euch ist das ja eine Sache von 10min. Bin noch ein Schüler so viel
> habe ich nicht. :D Und brauche ja nur den Teil. Wert rein Wert raus. So
> weit bis ich mit 4 Variabeln weiter arbeiten kann.

Den Teil hast du bereits.
Der steht mehr oder weniger 1:1 im Tutorial.
Du brauchst ihn dir nur von dort zu kopieren. Und zwar vollständig!

von Karl H. (kbuchegg)


Lesenswert?

alle Tage wieder schrieb:
>>Bin noch ein Schüler
> Das wissen wir mittlerweile.
>
>>10min. also 60€/6=10€ :)
> Du bist vielleicht naiv...

Allerdings.
Denn wenn das so einfach wäre könnte das ja jeder.
Aber ich lass mir natürlich auch die Stunden zahlen, die ich gebraucht 
habe um dorthin zu kommen, dass ich das in 10 Minuten machen kann.

Daher: Das kannst du dir nicht leisten, da einen Profi anzuheuern.
Entweder selber lernen oder es wird teuer.

Ist bei einem Handwerker auch nicht anders.

von Jürgen S. (medcezir)


Lesenswert?

Dieswegen bin ich auch durcheinander. Ist ein Auftrag ohne Grundwissen.

Habe meine Konstruktion fertig. Alles auch verschaltet. Von meinem MC 
aus 5V drauf gegeben. Dann 4 Leitungen jeweils in einen Eingang vom MC 
also PORT-c 0,1,2,3
Habe auch die Motorsteuerung fertig. 4Ausgäne Steuersignale vom MC. 
PORT-d 1(links) 2(rechts) usw.
Muss halt vom Eingang die Signale In Digitale. Brauche auch keine 
Auswertung sondern nur einen vergleich. Oben ist gepostet der Code.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> Dieswegen bin ich auch durcheinander. Ist ein Auftrag ohne Grundwissen.
>
> Habe meine Konstruktion fertig. Alles auch verschaltet.

Und das sieht elektronisch wie aus?

Und wie sieht jetzt dein Programm aus?

von Stephan H. (stephan-)


Lesenswert?

@Karl Heinz
bin mal gespannt wie lange Du noch Geduld hast.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> Dieswegen bin ich auch durcheinander. Ist ein Auftrag ohne Grundwissen.

Da frag ich mich, wie es wohl dazu gekommen ist.

von Huch (Gast)


Lesenswert?

>Ist ein Auftrag ohne Grundwissen.

Das ist doch ganz einfach. Wenn Du aufgrund der Einträge im Klassenbuch 
nachweisen kannst, das die notwendigen Grundlagen noch nicht vermittelt 
worden sind, dann darf man Dir auch keine 5 geben, es sei denn Du bist 
aufgefordert worden Dir das Wissen per Hausarbeit selbst anzueignen.
Sonst musst Du die Kröte (die 5) halt schlucken.

>Brauche auch keine Auswertung sondern nur einen vergleich. Oben ist >gepostet der 
Code.

Du hast den Code schon! Jetzt ist mal gut.

von Karl H. (kbuchegg)


Lesenswert?

Karl heinz Buchegger schrieb:
> Jürgen Schmitt schrieb:
>> Dieswegen bin ich auch durcheinander. Ist ein Auftrag ohne Grundwissen.
>>
>> Habe meine Konstruktion fertig. Alles auch verschaltet.
>
> Und das sieht elektronisch wie aus?

Damit da kein Missverständnis entsteht:
Wie der Motor angeschlossen ist, interessiert noch nicht.
Es geht einzig und alleine um die 4 ADC Eingänge.

Wie sind die verschaltet (Aufpassen: wie SIND die momentan verschaltet, 
nicht wie SOLLTEN sie verschaltet sein, wenn dann einmal LDR da drann 
sind) und wie sieht das Auswerteprogramm jetzt aus.

von alle Tage wieder (Gast)


Lesenswert?

Stephan Henning schrieb:
> @Karl Heinz
> bin mal gespannt wie lange Du noch Geduld hast.
Ich hoffe nicht mehr lange. Nicht weil ich Karl Heinz einen 
Nervenzusammenbruch wünsche, bloss nicht!!!, aber ich würde mich freuen 
wenn der TO keine Hilfe bekommt und mal die Folgen seiner Faulheit zu 
spüren bekommt. Hoffenlich ist der Name echt, der Lehrer nutzt Google 
und findet diesen Fred.

Huch schrieb:
> Jetzt ist mal gut.
ack

Ich versuchs nochmal: ZUMACHEN!

von Huch (Gast)


Lesenswert?

Karl Heinz hat wohl wieder 'ne Lieferung Baldrian bekommen. Viel Erfolg.

von Karl H. (kbuchegg)


Lesenswert?

Huch schrieb:

> Du hast den Code schon!

Das traurige ist: Getreu dem Forenmotto rücken wir in solchen Fällen den 
Code nicht komplett raus. Aber er kriegt den Hinweis, wo er ihn herholen 
kann um ihn an seine Bedürfnisse anzupassen.
Und dann klappt noch nicht mal das Kopieren einer Codequelle.
Kopfschüttel.


Weiter oben war ich anscheinend schon prophetisch, als ich prophezeit 
habe, dass jemand zu ihm fahren und die Tasten drücken müss.

von Jürgen S. (medcezir)


Lesenswert?

+ o
       |
      ---
      | |
      | |
      ---
       |
       +----------------------->  PC 1
       |
      ---
      | | LDR
      | |
      ---
       |
     --+---------- Masse ------> zur µC Masse

So sind die verschaltet

von Stephan H. (stephan-)


Lesenswert?

Karl heinz Buchegger schrieb:
> dass jemand zu ihm fahren und die Tasten drücken müss.

das wird dann aber nix mit 10€. Ich fahre 5er.

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:

> So sind die verschaltet

Gerade eben hast du gesagt du hättest noch keine LDR sondern normale 
Poti drann. Also was jetzt?

von Karl H. (kbuchegg)


Lesenswert?

Ich hab nicht umsonst nach der momentanten Verschaltung gefragt.
Ich will wissen wie du die Potis angehängt hast!

Du musst das Lesen was geschrieben steht und nicht das was du gerne 
lesen möchtest!

von Jürgen S. (medcezir)


Lesenswert?

jetzt habe ich LDRs dran.

Aber prinzipiell sind die ja gleich. oder nicht? Haupsache richtig 
verschaltet.

von Stephan H. (stephan-)


Lesenswert?

soll ich raten ? Der Mittelabgriff vom Poti hängt in der Luft. :-)

von alle Tage wieder (Gast)


Lesenswert?

Huch schrieb:
> Karl Heinz hat wohl wieder 'ne Lieferung Baldrian bekommen.
Muss nen starkes Zeug sein um sowas hier auzuhalten.

von Huch (Gast)


Lesenswert?

Ich frag mich manchmal wie es dem armen Menschen gegangen ist, der meine 
Anfängerfragen beantworten musste.
Ich kam da mit meinem riesen Ausdruck vom PET-Basic an und wollte wissen 
wieso da ein JSR gerade vor nem String kam.
Oder die stundenlangen Sitzungen am Nollendorfplatz. Der einzige 
Elektronikladen in dem man die englischen Bücher bekam und in Englisch 
war ich ne Niete.

Ach warn das noch Zeiten. Irgendwann haben wir uns in Assembler Witze 
erzählt. Naja. Ich werd wohl alt.

von Karl H. (kbuchegg)


Lesenswert?

Stephan Henning schrieb:
> soll ich raten ? Der Mittelabgriff vom Poti hängt in der Luft. :-)

:-)
Genau darauf will ich hinaus :-)

Aber dem Kerl ist ja keine Information zu entlocken. Wegen jedem Müll 
muss man 5 mal nachfragen.
Eigentlich sollte man meinen, dass jemand der in Schwierigkeiten ist, 
alles daran setzt, kooperativ zu sein.

Das aktuelle Programm steht auch noch aus.

von Stephan H. (stephan-)


Lesenswert?

alle Tage wieder schrieb:
> Huch schrieb:
>> Karl Heinz hat wohl wieder 'ne Lieferung Baldrian bekommen.
> Muss nen starkes Zeug sein um sowas hier auzuhalten.

Acepromazin

von Jürgen S. (medcezir)


Lesenswert?

Der Mittelabgriff war an PC0 also am ad..

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:
> jetzt habe ich LDRs dran.
>
> Aber prinzipiell sind die ja gleich. oder nicht? Haupsache richtig
> verschaltet.

Poti wäre schon in Ordnung, wenn du es richtig eingbaut hast.

Bei LDR erhebt sich sofort die Frage: Wie gross hast du den anderen 
Widerstand gemacht und hast du mal nachgemessen, was die Spannung an den 
ADC Eingängen für Werte hat?


Poti wäre insofern besser, weil man da einfach eine Spannung einstellt 
und dann hat man was reproduzierbares. Bei LDR ist das immer so eine 
Sache ob man mit der Hand reproduzierbar die gleiche Abschattung 
hinkriegt.

Poti so in der Größenordnung von 10k. Ob das 4.7k oder 15k sind spielt 
nicht die große Rolle, 1MOhm hingegen wäre schon etwas zu viel.


Was macht das Programm?

von Stephan H. (stephan-)


Lesenswert?

Huch schrieb:
> Ich frag mich manchmal wie es dem armen Menschen gegangen ist, der meine
> Anfängerfragen beantworten musste.
> Ich kam da mit meinem riesen Ausdruck vom PET-Basic an und wollte wissen
> wieso da ein JSR gerade vor nem String kam.
> Oder die stundenlangen Sitzungen am Nollendorfplatz. Der einzige
> Elektronikladen in dem man die englischen Bücher bekam und in Englisch
> war ich ne Niete.
>
> Ach warn das noch Zeiten. Irgendwann haben wir uns in Assembler Witze
> erzählt. Naja. Ich werd wohl alt.

vor 20 Jahren gabs kein Forum wo wir fragen konnten. ASM haben wir 
trotzdem gelernt. Nur C kriege ich einfach nicht hin. (habs auch nie 
vermisst)

von Joachim B. (jojo84)


Lesenswert?

Ich hab aufmerksam mitgelesen. Und jetzt muß ich sagen: ich fänd es 
nicht ganz "fair", wenn dieser Thread offen gelassen wird. Es gibt echt 
viele Leute, die auch mit Grundlagen ihre Probleme haben/hatten. Und 
denen wurde es auch immer überlassen, sich da selbst schlau zu machen. 
Das war bei mir so und bei 1000en anderen auch.
Der TO hat alle Informationen erhalten, die er zur Lösung der Aufgabe 
braucht. Ihm fehlt es an den allertiefsten Grundlagen. Wenn hier weiter 
"geholfen" wird, dann darf sich NIENIENIE wieder hier über faule Schüler 
beschwert werden. Es wäre nicht fair gegenüber den Leuten, die sich 
selbst etwas erarbeiten...
Ich würde mein Kind auf die Schnauze fallen lassen, und zur Strafe für 
die 5 das Taschengeld kürzen -> Lerneffekt.

Sorry...

von Jürgen S. (medcezir)


Lesenswert?

Ja habs gemessen 2,5V bei normaler Lichtstärke. Voller ca. 5V
10kOhm gewählt.

von Jürgen S. (medcezir)


Lesenswert?

jojo ich liebe dich :P

von Karl H. (kbuchegg)


Lesenswert?

OK

D.h. die Spannungen sind anscheinend soweit in Ordnung. Du hast 
heffentlich auch direkt am µC Pin gemessen. Nicht dass da irgendwo ein 
Kabel in der Luft hängt. Direkt am µC Pin messen ist das sicherste um 
all die kleinen Fehlerchen auszuschliessen und zu detektieren.

Also: Jetziges Programm, wie siehts aus.
Und zwar komplett!

von Karl H. (kbuchegg)


Lesenswert?

Joachim B. schrieb:

> Ich hab aufmerksam mitgelesen. Und jetzt muß ich sagen: ich fänd es
> nicht ganz "fair", wenn dieser Thread offen gelassen wird.

Im Grunde hast du recht.
Allerdings: Fertige Lösung gibts sowieso nicht.

von alle Tage wieder (Gast)


Lesenswert?

Joachim B. schrieb:
> Ich hab aufmerksam mitgelesen. Und jetzt muß ich sagen: ich fänd es
> nicht ganz "fair", wenn dieser Thread offen gelassen wird. Es gibt echt
> viele Leute, die auch mit Grundlagen ihre Probleme haben/hatten. Und
> denen wurde es auch immer überlassen, sich da selbst schlau zu machen.
> Das war bei mir so und bei 1000en anderen auch.
> Der TO hat alle Informationen erhalten, die er zur Lösung der Aufgabe
> braucht. Ihm fehlt es an den allertiefsten Grundlagen. Wenn hier weiter
> "geholfen" wird, dann darf sich NIENIENIE wieder hier über faule Schüler
> beschwert werden. Es wäre nicht fair gegenüber den Leuten, die sich
> selbst etwas erarbeiten...
> Ich würde mein Kind auf die Schnauze fallen lassen, und zur Strafe für
> die 5 das Taschengeld kürzen -> Lerneffekt.
>
> Sorry...

Danke, besser hätte ich es nicht formulieren können.
Da gab es erst kürzlich einen Fred zu solchen Fällen und trotzdem wird 
weiterhin die Arbeit für andere erledigt. :-(

MACHT ENDLICH DICHT HIER!

von Jürgen S. (medcezir)


Lesenswert?

habs direkt am mc gemessen.
Habs ja oben schon reingestellt. Hat sich nichts geândert. Ausem 
turturial raus kopiert und getestet und wieder weg. Nichts brauchbares 
so zu sagen.
Kanns nicht rein stellen. Bin unterwegs von der schule nach hause.

von Christian D. (chris83)


Lesenswert?

Karl Heinz ich bewundere deine Geduld immer wieder :)


Jürgen Schmitt schrieb:
> Hat sich nichts geândert. Ausem
> turturial raus kopiert und getestet und wieder weg

was heißt wieder weg? Die Funktionen sollten schon im code drin bleiben.

Was ich Persönlich nicht verstehen kann, wieso du die Leute nicht 
unterstützst die dir helfen wollen.

Zeig, sobald du kannst, doch einfach mal dein aktuelles Programm.

Grüße
Chris

von Jürgen S. (medcezir)


Lesenswert?

1
// Header-Dateien für Preprozessor
2
#define F_CPU 3686400UL
3
#include <util/delay.h>
4
#include <avr\io.h>    // Pin-Definitionen
5
#include <stdint.h>    // div. int-Datentypen
6
#include <avr/interrupt.h>
7
// ausgelagerte Makros in eine Header-Datei BitMask
8
//#include <\avr\Programme\BitMask.h>    
9
  // Schreibweise: Register Makroname Bitposition )
10
11
12
13
//Konstantendeklaration, Reihenfolgen nach AVR-Board
14
//Port-D: Eingänge
15
//const uint8_t Taster1_D    = PD2;  //PinTaster1
16
//const uint8_t Taster2_D  = PD3;
17
//const uint8_t Festpegel1_D= PD4;
18
//const uint8_t Festpegel2_D= PD5;
19
//const           = PD6;
20
//const           = PD7;
21
22
//Port-B: Ausgänge
23
//const uint8_t LEDrot_B    = PB0;  //inv. Wert von Taster1
24
const uint8_t LEDgelb_B   = PB1;  //inv. Wert von Taster2
25
const uint8_t LEDgruen_B  = PB2;  //Funktionswert
26
const uint8_t LEDrot_B    = PB3;
27
//const            = PB4;
28
//const            = PB5;
29
30
//Port-C
31
//const           = PC0;
32
//const            = PC1;
33
//const            = PC2;
34
//const           = PC3;
35
//const            = PC4;
36
//const uint8_t LEDgruen_C  = PC5;
37
38
//Globale Variablen
39
uint16_t LDR1, LDR2, LDR3, LDR4;
40
41
void ADC_Init(void) {
42
 
43
  uint16_t result;
44
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren
45
 
46
  /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
47
     also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */
48
 
49
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung 
50
  while (ADCSRA & (1<<ADSC) ) {}        // auf Abschluss der Konvertierung warten
51
  /* ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten
52
     Wandlung nicht übernommen. */
53
  result = ADCW;
54
}
55
 
56
/* ADC Einzelmessung */
57
uint16_t ADC_Read( uint8_t channel )
58
{
59
  // Kanal waehlen, ohne andere Bits zu beeinflußen
60
  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
61
  ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
62
  while (ADCSRA & (1<<ADSC) ) {}  // auf Abschluss der Konvertierung warten
63
  return ADCW;                    // ADC auslesen und zurückgeben
64
}
65
66
int main (void)
67
{
68
  ADC_Init();
69
70
  while (1)
71
  {
72
    LDR1 = ADC_Read(0);
73
    LDR2 = ADC_Read(1);
74
    LDR3 = ADC_Read(2);
75
    LDR4 = ADC_Read(3);
76
77
    if( LDR1 > LDR2 )
78
    { 
79
    PORTB |= (1<<LEDgruen_B);
80
    }
81
    if( LDR1 < LDR2 )
82
    {
83
    PORTB |= (1<<LEDgelb_B);
84
    }
85
  }
86
}
das hier hab ich

von XXX (Gast)


Lesenswert?

Hallo

Und was funktioniert jetzt nicht. Irgendwann sollten beide LEDs
an sein, denn ausschalten tut due sie ja nicht.

Gruß
Joachim

von Alexander S. (agentbsik)


Lesenswert?

Hast du den PortB, an dem deine LED´s angeschlossen sind, auch als 
Ausgang definiert mit DDRB?

von Karl H. (kbuchegg)


Lesenswert?

Wenn ich mir die ADC_Init aus dem Tutorial ansehe, dann sehe ich aber 
ganz was anderes
1
/* ADC initialisieren */
2
void ADC_Init(void) {
3
 
4
  uint16_t result;
5
 
6
//  ADMUX = (0<<REFS1) | (1<<REFS0);      // AVcc als Referenz benutzen
7
  ADMUX = (1<<REFS1) | (1<<REFS0);      // interne Referenzspannung nutzen
8
  ADCSRA = (1<<ADPS1) | (1<<ADPS0);     // Frequenzvorteiler
9
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren
10
 
11
  /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
12
     also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */
13
 
14
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung 
15
  while (ADCSRA & (1<<ADSC) ) {}        // auf Abschluss der Konvertierung warten
16
  /* ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten
17
     Wandlung nicht übernommen. */
18
  result = ADCW;
19
}

da ist die Einstellung der Referenzspannung drinnen, da ist die 
Einstellung des Frequenzvorteilers drinnen.

All das hast du rausgeworfen und dann wunderst du dich, warum dein ADC 
nicht korrekt arbeitet? Die Dinge stehen doch nicht einfach so zum Spass 
in den Tutorialsroutinen drinnen!

(Für deinen Fall willst du wahrscheinlich AVcc als Referenzspannung 
nehmen. Daher: Die erste der beiden Einstellungen entkommentieren und 
dafür die andere für die interne Referenzspannung unter Kommentar 
setzen)

von Jürgen S. (medcezir)


Lesenswert?

Ok habs verstnden mit referenzspannung. Die lde s sind als ddrb 
definiert.
Wenn ich die if funktionen noch richtig mache also if wenn so und so 
dann leuxhte wenn nicht also else leute nicht.. Dann müsste es 
funktunieren.
Versuche mein avr studio zum laufen zu bringen dann meld ich mich noch 
mal.
Danke für die hilfe und geduld :)

von Karl H. (kbuchegg)


Lesenswert?

Jürgen Schmitt schrieb:

> Wenn ich die if funktionen noch richtig mache also if wenn so und so
> dann leuxhte wenn nicht also else leute nicht.. Dann müsste es
> funktunieren.

Nein.
Denn du musst den Portpin an dem die LED hängt auch noch auf Output 
konfigurieren.

Die Details dazu finden sich im Datenblatt bzw., wer hätte das gedacht, 
im Tutorial
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports

von Jürgen S. (medcezir)


Lesenswert?

kann mir jemand diesen Befehl erklären für meine dokumentation
1
 ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
Ich kenne nur MUX0 1 u.s.w.

von Jobst M. (jobstens-de)


Lesenswert?

In der Dokumentation muss nur stehen: 'Ich habe alles abgeschrieben'

@Karl Heinz Buchegger - ganz speziell Dir gewidmet:
Beitrag "Re: Einheitlicher Umgang mit faulen Schülern etc.?"

Grummel ...



Gruß

Jobst

von Jürgen S. (medcezir)


Lesenswert?

und was für ein Hund du bist ! ! !

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.