Forum: Mikrocontroller und Digitale Elektronik Attiny85 mit Analog Messung stellt arbeit ein bei zu Niedrigem wert


von Fabian Spottog (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ich habe einen Helligkeitssensor OPT101 welchen ich mit einem 
ATTiny85 einlesen will.
das Funktioniert auch in der Theorie.
Problem sobald es zu dunkel wird, stellt der Attiny seine Arbeit ein.
Also ein Blinken der LED auf zeit bzw. Taster Hört ebenfalls auf.
Quellcode ist hier zu Finden: 
https://gitlab.com/attinyplatine/PlatineComplete

ich gehe davon aus, das es nur eine Kleinigkeit ist, und mir nur jemand 
vom Schlauch runterhelfen muss :-D
Vielen Dank dafür schonmal

: Verschoben durch Moderator
von Dieter (Gast)


Lesenswert?


: Bearbeitet durch Moderator
von DAVID B. (bastler-david)


Lesenswert?

Möglich das die Hauptspannung kutz zusammen stakt und sich der attiny 
sich daswegen aufhängt ?

von Fabian S. (fapo)


Lesenswert?

Wie kann ich ein Beitrag Verschieben?

an die Versorgungsspannung habe ich schon ein Oszi angeschlossen und es 
bleibt die ganze zeit bei Konstanten 5V

von Stefan F. (Gast)


Lesenswert?

Es könnte ein Fehler im nicht gezeigten Quelltext sein.

PB5 ist normalerweise der Reset Eingang. Hast du die Reset-Disable Fuse 
gesetzt?

Aber Achtung: Ohne Reset funktioniert die ISP Schnittstelle nicht mehr, 
dann brauchst du einen High-Voltage Programmieradapter.

PS: Der Schaltpan ist grausam unübersichtlich und die Details der 
"Messstelle" fehlen.

von Fabian S. (fapo)


Lesenswert?

Ich habe den Quellcode im verlinkten Git.
https://gitlab.com/attinyplatine/PlatineComplete
die Initialisierung des ADC ist folgende:
1
 //Analog Comparator (vergleich von 2 Spannungen) Ausschaltgen, Verbraucht nur Strom.
2
  //ACSR = 1 << ACD;
3
  // Pin Konfiguration für den ADC Auswählen.
4
  // VCC Als AREF und PB5 als Eingang.
5
  //ADMUX = 0x00;
6
  ADMUX = (1<<ADLAR); // 8Bit Linksshift mode
7
  ADCSRB = 0;  //FRee Running Mode
8
  // ADC Control and Status Register A
9
  // ADC Einschalten (ADEN), MEssvorgang Starten (ADSC), FreeRUN Aktiviert(ADATE), Teilungsfaktor 64.
10
  // es sollte als Takt am ADC ein wert zwischen 50-200 khz anliegen.
11
  // bei 8 MHZ und einen Teiler von 64 sind wir bei 125 khz (ADPS...)
12
  // bei 16 MHZ und einen Teiler von 128 sind wir bei 125 khz (ADPS...)
13
  ADCSRA = (1 << ADEN) | (1<< ADSC) | (1<<ADATE) | (0<<ADPS2) | (1<ADPS1) | (1<ADPS0);  //Teiler 8
gelesen wird dann einfach mittels:
1
uint8_t  lightGetADCValue(){
2
  return ADCH;
3
}

von Stefan F. (Gast)


Lesenswert?

Das ist viel zu viel Quelltext, um ihn "mal eben" schnell per 
Sichtkontrolle zu prüfen. Reduziere den Code auf ein minimal knappes 
Beispiel, wo der Fehler noch auftritt.

Wahrscheinlich wird du bei der Schrittweisen Reduktion schon den Fehler 
finden.

Was ist mit PB5, zieht deine Messstellen den Pin runter? Wolltest du ihn 
als Reset-Eingang oder als I/O Pin nutzen?

Wir brauchen den Schaltplan oder detaillierte technische Daten der 
Messstelle, um abzuschätzen, was sie mit den Leitungen anstellt.

von Fabian S. (fapo)


Lesenswert?

die Sache mit dem Reset war es.
Wenn ich das Reset-Disable bit setze Funktioniert es.

wie ist das mit den High Voltage Programmern?
welcher ist da zu Empfehlen?
Haben die irgendwelche Nachteile?

von Stefan F. (Gast)


Lesenswert?

Ich habe für so etwas einen Atmel Dragon verwendet.

Aber ich bin ganz schnell dazu über gegangen, lieber größere 
Mikrocontroller zu verwenden, damit ich den Reset Pin und die ISP 
Schnittstelle nicht deaktivieren muss.

> Haben die irgendwelche Nachteile?

Du muss den Chip zum Programmieren aus der Schaltung entfernen. Und sie 
sind viel empfindlicher, als der unkaputtbare Klassiker Atmel ISP mkII.

von Fabian S. (fapo)


Lesenswert?

Vielen Dank für deine Hilfe.

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.