INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[gelöst] wire.h blockiert analogRead
08.12.2016, 16:06 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2016 17:56 von Rupert.)
Beitrag #1
[gelöst] wire.h blockiert analogRead
Hallo liebe Arduino-Freunde.

Ich bin auf ein Problem gestoßen, das ich euch nicht vorenthalten will.
Arduino Uno:
In einer loop() frage ich die Uhrzeit ab und anschließend den Wert eines analog-Pins.
Lese ich den analog-Pin ein, dann wird das Lesen unterhalb eines Wertes von ca. 578 von wire.h blockiert.
Entferne ich das Auslesen der Zeiten funktioniert auch analogRead wieder.

Sobald wire.begin in void setup() steht ist auch der niedrigste analogwert 15 und nicht 0.

Wie kann ich das Problkem umgehen oder lösen. Kennt das Problem jemand oder kann er es lösen?



Code:
/*
  AnalogReadSerial
  Reads an analog input on pin 0, prints the result to the serial monitor.
  Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

  This example code is in the public domain.
*/
#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527
byte second, minute, hour, weekDay, day, month, year;
int Pause_zeit;     // Eingangswerte zwischen 0 und 1023
int Pin_Pause = A5;  // Pause_zeit Eingangswerte zwischen 0 und 1023 über Poti
int counter = 0;

byte bcdToDec(byte val)
{
  return ( (val / 16 * 10) + (val % 16) );
}
//  Konvertierung Dezimalzahl in BCD

byte decToBcd(byte val)
{
  return ( (val/10*16) + (val%10) );
}


void Werte_Lesen() {
  // auslesen des Datums
  // Reset the register pointer

  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_ADDRESS, 7);
  while(Wire.available())
  {
    second = bcdToDec(Wire.read());
    minute = bcdToDec(Wire.read());
    hour   = bcdToDec(Wire.read() & 0b111111); //24 hour time
    weekDay = bcdToDec(Wire.read()); //0-6 -> Montag - Sonntag
    day    = bcdToDec(Wire.read());
    month  = bcdToDec(Wire.read());
    year  = bcdToDec(Wire.read());
  }
}

void setup() {
  // initialize serial communication at 9600 bits per second:
  Wire.begin();
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  Werte_Lesen();  // read the input on analog pin 5:
  Pause_zeit = analogRead(Pin_Pause);
  // print out the value you read:
  Serial.println(Pause_zeit);
  delay(100);        // delay in between reads for stability
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2016, 16:35 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2016 16:37 von Tommy56.)
Beitrag #2
RE: wire.h blockiert analogRead
Deine Feststellung kann ich nicht bestätigen.
Ich habe eine DS3231 und ein 20x4 LCD dran und habe zusätzlich jetzt ein analogRead(A5) auf den Mittelabgriff eines 1000 Ohm Potis, das zwischen GND und 5V hängt.
Ich kann den Wert problemlos zwischen 0 und 1023 einstellen.

Ist Dein Poti evtl. zu hochohmig oder ein Fehler in Deiner Schaltung?
Hänge doch mal eine Skizze Deines Aufbaus ran.

Gruß Tommy

Edit: Poti von 100 auf 1000 Ohm korrigiert.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2016, 17:40
Beitrag #3
RE: wire.h blockiert analogRead
(08.12.2016 16:06)Rupert schrieb:  Hallo liebe Arduino-Freunde.

Ich bin auf ein Problem gestoßen, das ich euch nicht vorenthalten will.
Arduino Uno:
In einer loop() frage ich die Uhrzeit ab und anschließend den Wert eines analog-Pins.
Lese ich den analog-Pin ein, dann wird das Lesen unterhalb eines Wertes von ca. 578 von wire.h blockiert.
Entferne ich das Auslesen der Zeiten funktioniert auch analogRead wieder.

Sobald wire.begin in void setup() steht ist auch der niedrigste analogwert 15 und nicht 0.

Wie kann ich das Problkem umgehen oder lösen. Kennt das Problem jemand oder kann er es lösen.

Was du da vorhast, funktioniert so nicht.
Du musst zum Einlesen des Poti-Wertes einen anderen analogen Pin nehmen.
A4 und A5 werden für I2C verwendet, da kannst du nicht gleichzeitig ein analoges Signal einlesen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2016, 17:47
Beitrag #4
RE: wire.h blockiert analogRead
(08.12.2016 17:40)hotsystems schrieb:  
(08.12.2016 16:06)Rupert schrieb:  Hallo liebe Arduino-Freunde.

Ich bin auf ein Problem gestoßen, das ich euch nicht vorenthalten will.
Arduino Uno:
In einer loop() frage ich die Uhrzeit ab und anschließend den Wert eines analog-Pins.
Lese ich den analog-Pin ein, dann wird das Lesen unterhalb eines Wertes von ca. 578 von wire.h blockiert.
Entferne ich das Auslesen der Zeiten funktioniert auch analogRead wieder.

Sobald wire.begin in void setup() steht ist auch der niedrigste analogwert 15 und nicht 0.

Wie kann ich das Problkem umgehen oder lösen. Kennt das Problem jemand oder kann er es lösen.

Was du da vorhast, funktioniert so nicht.
Du musst zum Einlesen des Poti-Wertes einen anderen analogen Pin nehmen.
A4 und A5 werden für I2C verwendet, da kannst du nicht gleichzeitig ein analoges Signal einlesen.
@Hotsystems: Ich habs am Mega getestet. Der hat natürlich I2C wo anders.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2016, 17:52
Beitrag #5
RE: wire.h blockiert analogRead
(08.12.2016 17:47)Tommy56 schrieb:  
(08.12.2016 17:40)hotsystems schrieb:  [quote='Rupert' pid='34189' dateline='1481209597']
Hallo liebe Arduino-Freunde.

Ich bin auf ein Problem gestoßen, das ich euch nicht vorenthalten will.
Arduino Uno:
@Hotsystems: Ich habs am Mega getestet. Der hat natürlich I2C wo anders.

Gruß Tommy

Ja, dass ist dann kein Wunder. Wink
Damit funktioniert es auch mit A5.

Nur der TO nutzt den Uno, das geht da nicht.
Ich nehme an, wenn er es ändert, funktioniert es auch bei ihm.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2016, 17:56
Beitrag #6
[Gelöst] wire.h blockiert analogRead
(08.12.2016 17:40)hotsystems schrieb:  Was du da vorhast, funktioniert so nicht.
Du musst zum Einlesen des Poti-Wertes einen anderen analogen Pin nehmen.
A4 und A5 werden für I2C verwendet, da kannst du nicht gleichzeitig ein analoges Signal einlesen.

Danke!
Habe auf A2 umgestellt und es funktioniert. Schade, dass ich diese Randbedingung nirgends nachlesen konnte
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2016, 18:03
Beitrag #7
RE: [Gelöst] wire.h blockiert analogRead
(08.12.2016 17:56)Rupert schrieb:  
(08.12.2016 17:40)hotsystems schrieb:  Was du da vorhast, funktioniert so nicht.
Du musst zum Einlesen des Poti-Wertes einen anderen analogen Pin nehmen.
A4 und A5 werden für I2C verwendet, da kannst du nicht gleichzeitig ein analoges Signal einlesen.

Danke!
Habe auf A2 umgestellt und es funktioniert. Schade, dass ich diese Randbedingung nirgends nachlesen konnte

Oh doch, das steht im Datenblatt zum Uno.
Natürlich nicht, dass du kein Poti anschließen darfst, aber das es I2C ist.

Aber wichtig ist, es funktioniert jetzt.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  virtual wire empfänger-sender peterfried 30 1.259 17.04.2019 07:21
Letzter Beitrag: Tommy56
  Wire.requestFrom Blende8 7 402 27.03.2019 15:54
Letzter Beitrag: Blende8
  Gelöst beschroe 2 312 11.03.2019 22:56
Letzter Beitrag: Bitklopfer
  Gelöst ==> Arduino Nano, Kommunikation mit PC bringt nicht korrekten ASCII moehrle 4 403 02.03.2019 22:04
Letzter Beitrag: hotsystems
  Wire.write und Client Socket LiVe 3 477 11.01.2019 13:51
Letzter Beitrag: Tommy56
  '#' mit Leonardo/Micro [gelöst] Ardusil 10 856 25.11.2018 15:57
Letzter Beitrag: Ardusil
  [gelöst]String, char .... ich begreife es einfach nicht - char Array <> mit SDexist christian@schiltkamp.info 10 1.676 31.08.2018 23:05
Letzter Beitrag: Tommy56
  [selbst gelöst] Register von Inline-Assembler-Anweisung vorher nicht gesetzt => Bug? Addi 2 502 24.08.2018 08:11
Letzter Beitrag: Addi
  AnalogRead zwischendurch falsch Mathias 5 1.017 18.03.2018 17:07
Letzter Beitrag: Mathias
  328P geht nicht mehr [gelöst] Harry 37 6.775 04.03.2018 19:57
Letzter Beitrag: Harry

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste