RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBObee Nibobee - läuft, aber mit kleineren Macken

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Nibobee - läuft, aber mit kleineren Macken

Aw: Nibobee - läuft, aber mit kleineren Macken 11 Jahre 5 Monate her #1768

  • radbruch
  • radbruchs Avatar
  • OFFLINE
  • Junior Boarder
  • Beiträge: 12
Hallo

Danke fürs Interesse.

An dieser Stelle kommen wir wohl nicht weiter:
www.roboternetz.de/community/threads/48018-NiboBee-Spannungsmessung-mit-Hindernis?p=463617&viewfull=1#post46361
(Mit geänderter Formel?)

Das Prinzip kennen wir ja inzwischen: Man sollte die interne 2,56V-Referenz verwenden. Das konnte schon der asuro:
int  Batterie(void)
{
	ADMUX = (1 << REFS0) | (1 << REFS1) | BATTERIE;	// internal 2.56V reference with external capacitor
	ADCSRA |= (1 << ADSC);			// Start conversion
	while (!(ADCSRA & (1 << ADIF)));	// wait for conversion complete
	ADCSRA |= (1 << ADIF);			// clear ADCIF
	return ADCL + (ADCH << 8);
}
(Aus der asuro-Library. Ob das allerdings funktionierte kann ich nicht sagen, weil ich's bisher mit der Biene so noch nicht geschafft habe ohne dass sich das Programm aufhängt)

btw. werde ich, da ich ja nun eh in analog.c rumfummeln muss, die unsinnige zyklische Aktuallisierung der ADC-Werte entfernen. Ich werde den ADC nur auslesen, wenn ich einen Wert brauche. Das beseitigt den Overhead der ADC-ISR und gibt mir die Kontrolle über die LinienLEDs zurück.

Es gibt, auch bei der bee, noch viel zu erforschen.

Gruß

mic
Letzte Änderung: 11 Jahre 5 Monate her von radbruch.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Nibobee - läuft, aber mit kleineren Macken 11 Jahre 5 Monate her #1769

Hmm, mich würde mal interessieren, wie lange man zwischen umschalten der Referenz und dem Start der Messung warten sollte...
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Nibobee - läuft, aber mit kleineren Macken 11 Jahre 5 Monate her #1770

  • radbruch
  • radbruchs Avatar
  • OFFLINE
  • Junior Boarder
  • Beiträge: 12
Im Zweifel nach dem Umschalten zweimal einlesen und den ersten Wert wegwerfen?
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Nibobee - läuft, aber mit kleineren Macken 11 Jahre 5 Monate her #1772

Das reicht? Umso besser! Weil dann kann man das echt leicht in der Lib reinhauen :-)

Pseudocode:
messe_akk() {
   schalte_A/D_Wandler_IRQ_aus();
   schalte_Referenz_Kanal_um(); // geht ja eh übers gleiche Register
   start_Messung();
   warte_bis_fertig();
   start_Messung();
   warte_bis_fertig;
   temp = lese_Wert();
   schalte_A/D_Wandler_IRQ_an();
   return temp;
}
Letzte Änderung: 11 Jahre 5 Monate her von mifritscher.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Nibobee - läuft, aber mit kleineren Macken 11 Jahre 5 Monate her #1773

  • radbruch
  • radbruchs Avatar
  • OFFLINE
  • Junior Boarder
  • Beiträge: 12
Ganz so einfach ist es wohl nicht:

schalte_A/D_Wandler_IRQ_aus();
schalte_Referenz_Kanal_um(); // geht ja eh übers gleiche Register

... trotzdem läuft immer noch die aktuelle Messung! Jetzt müßte erst ein

warte_bis_fertig();
temp = lese_Wert(); // IRQ ist ausgeschaltet!

kommen. Da der ADC immer noch automatisch angetriggert wird, startet auch sofort die nächste Wandlung, diesmal aber mit der geänderten Referenz. Jetzt kommen die zwei Lesungen:

//start_Messung(); // ADC ist immer noch im Dauerlauf!
warte_bis_fertig();
temp = lese_Wert();
//start_Messung();
warte_bis_fertig;
temp = lese_Wert();

Vor dem abschliesenden

schalte_A/D_Wandler_IRQ_an();

sollten wir noch die 2,56V-Referenz abschalten und mit

//start_Messung();
warte_bis_fertig;
temp1 = lese_Wert();
warte_bis_fertig;
temp1 = lese_Wert();

nochmals einen Dummywert auslesen.

Zum Edit:
Der ADC wandelt ja weiterhin ununterbrochen weiter. Deshalb muss man auch nach dem Zurückschalten der Referenzspannung zweimal auslesen, weil beim Umschalten der Referenz die erste Wandlung schon gestartet sein könnte. Letztlich sollte man sich dann noch irgendwie mit der ADC-ISR syncronisieren...

Trotz allem bleiben bei diesem Ansatz die anderen Nachteile von analog.c
Letzte Änderung: 11 Jahre 5 Monate her von radbruch.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Nibobee - läuft, aber mit kleineren Macken 11 Jahre 5 Monate her #1774

Oops, Hast recht ;) Wohl im Eifer des Gefechts bissle was vergessen^^
Letzte Änderung: 11 Jahre 5 Monate her von mifritscher.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Ladezeit der Seite: 0.103 Sekunden

Werbung