[gelöst] LED's an einer A590is ansteuern...

Fragen zur Bedienung und Funktionsweise des CHDKs
Forumsregeln
Überprüfe folgende Dinge:
Bist stets der Dokumentation gefolgt?
Hast du im Forum schon nach ähnlichen Problemen gesucht?
Hast du bei deiner Frage das Problem umfassend beschrieben?
Welche Kamera und CHDK-Version betrifft das Problem?

Probleme mit einem Skript sollten möglichst und wenn vorhanden in dem zugehörigen Thema zum Skript besprochen werden.

LED's an einer A590is ansteuern...

Beitragvon vklaffehn » 09.03.2009, 17:09

geht nicht.... :-)
Mittlerweile habe ich einen portablen Panorama-robot für meine handliche A590is fertig, allerdins stehe ich wieder einmal vor dem selben Problem wie beim letzten mal, es geht um ein Feedback der Kamera über irgendeine LED, aber anscheinend funktioniert SET_LED auf der A590is nicht?

Hier gibt es irgendwo so ein kleines Testscript, welches einfach alle LED's nacheinander an und wieder ausshalten soll, das Script läuft auch, aber es rührt sich keine einzige Lampe.

Kann mir da jemand weiterhelfen?

MfG
Volker

übrigens, hier der Link zum MiniPanoBot :-)
http://www.roboternetz.de/phpBB2/viewtopic.php?p=429455#429455
vklaffehn
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 16.10.2008, 17:52

Beitragvon msl » 09.03.2009, 20:13

Hallo vklaffehn,

bei der A590 sind einige Sachen noch nicht richtig funktionstüchtig. Dazu zählt auch die LED-Ansteuerung.

Die Portierung ist da wohl nicht vollständig abgeschlossen. Das ist nicht so gut. Trotzdem muss man ja froh sein, dass es überhaupt CHDK für diese Kamera gibt.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4077
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon vklaffehn » 10.03.2009, 12:47

Moin!
Das hatte ich nach meiner Googlelei fast schon befürchtet, allerdings bin ich auch seeehr froh, daß das CHDK auf der kleinen sonst wunderbar läuft :-)

Dann arbeite ich erst einmal mit verstellbaren Zeiten und hoffe, daß irgendwann die eine oder andere LED leuchtet :-)

MfG
Volker
vklaffehn
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 16.10.2008, 17:52

Beitragvon rudi » 13.10.2009, 16:05

Hallo,
ich möchte das Thema nochmal aufgreifen.

Die nicht ansteuerbaren LEDs der A590 haben mich auch gestört, deshalb habe ich das Problem wie folgt gelöst.
Laut WIKI sind keine LED-Adressen bekannt. Diese habe ich daher erst einmal ermittelt (sie entprechen fast der A720).
Code: Alles auswählen
A590IS - LED-Adressen

 #define AF 0xC02200c0    // AF-Beam (red)
 #define DP 0xC02200c4    // direct-print (blue)
 #define OR 0xC02200c8    // orange state-led (bi-state with green)
 #define GR 0xC02200cc    // green state-led (bi-state with orange)
 #define YE 0xC02200d0    // yellow state-led

Nach dem Vorbild der "/platform/generic/lib.c" habe ich die Funktion "ubasic_set_led" in "/platfoprm/A590/wrappers.c" geändert:
Code: Alles auswählen
#define LED_AF 0xC02200C0

void ubasic_set_led(int led, int state, int bright)
{

  int leds[] = {12,16,4,8,4,0,4};
  if(led < 4 || led > 10 || led == 6) return;
  volatile long *p=(void*)LED_AF + leds[led-4];

    if (state)
   p[0]=0x46;
    else
   p[0]=0x44;

}

Diese Variante funktioniert bei mir fehlerfrei und die LED-Nummern für set_led stimmen auch mit denen der Handbuchbeschreibung überein.
Ich weiss nur nicht was LED_TIMER bedeutet. In meiner Umsetzung leuchted dort ebenfalls die blaue DirectPrint-LED.

Was macht eigendlich die ursprüngliche Routine? Müssen evtl. nur die LED-Adressen irgendwo anders hinterlegt werden?

Gruß Rudi
Zuletzt geändert von rudi am 16.10.2009, 16:01, insgesamt 1-mal geändert.
Benutzeravatar
rudi
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 456
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B

Beitragvon msl » 13.10.2009, 22:23

Hallo rudi,

wiedermal ein Problem gelöst.Bild

Für die LED-Ansteuerung gibt es scheinbar keine einheitliche Lösung. Selbst die Definition mit den dazugehörigen kameraspezifischen Adressen ist nicht einheitlich.

Mit der Timer-LED wird eine blinkende LED gemeint sein, die beim Auslösemodus Timer blinkt. Bei meiner Kamera blinken alle LEDs außer Power- und Print-LED.

Wünschenswert wäre natürlich eine einheitliche Lösung für alle Kameras. Dann wären auch Skriptbefehle besser nutzbar.

Mach doch bitte mal eine Patch-Datei oder ein Paket mit dem veränderten Dateien fertig, damit wir diese Lösung wenigstens im Bugtracker eintragen können. Vielleicht erbarmt sich dann auch irgendjemand, diese Lösung einzupflegen.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4077
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon rudi » 15.10.2009, 23:59

Hallo,

ich bin noch auf einen Beitrag von ewavr im int. Forum vom Dezember 2008 gestoßen, aber das hat wohl keiner in den trunk eingepflegt.
Maybe I found replacement of PostLedMessage for A590:

int _LEDDrive(int led, int action); // only for a590 !!!

so, try this function:

void ubasic_set_led(int led, int state, int bright)
{
_LEDDrive(led, state<=1 ? !state : state);
}

Address of LEDDrive is 0xFFC34CE0 for 1.00E

Mit Hilfe von CHDKLover kann ich die dort angegebene LEDDrive-Adresse auch für die Firmware 1.01B bestätigen.

Bei neueren Kameras wird der uBasic-Befehl SET_LED(led status helligkeit) mit der Codezeile
Code: Alles auswählen
_LEDDrive(led, state<=1 ? !state : state);
umgesetzt. Der Parameter "helligkeit" bleibt dabei ungenutzt. Dafür kann "status" weitere Werte annehmen. Diese habe ich im Quelltext der SX1 entdeckt und auch bei meiner A590 erfolgreich getested. Die dort angegeben Wiederholfrequenzen könnten passen.
Code: Alles auswählen
Gültige Werte für STATUS bei Portierungen mit _LEDDrive:
0 - LED aus
1 - LED ein
2 - LED blinkt mit 2 Hz (ist kürzer ein als aus)
3 - LED blinkt sehr schnell (etwa 5 Hz)
4 - LED blinkt etwa mit 2,8 Hz (ist länger ein als aus)
5 - LED blinkt 3 mal sehr schnell und bleibt dann aus
6 - LED blinkt mit 1 Hz (ein und aus sind gleichlang)


Ich habe eine Diff-Datei (erstellt mit CHDKShell) für die A590 Firmware 1.00E und 1.01B angehängt. Dabei habe ich die FW1.00E nicht testen können. Aber die Routinenadresse stammt ja von dieser Version und der Compiler (CHDKShell) hat keine Fehler gemeldet.

Gültige Parameter für "led" sind 4, 5, 7, 8, 9 mit den Zuordungen des Handbuches.

Gruß Rudi
Dateianhänge
A590_LED_BUILD816.diff
(2.08 KiB) 34-mal heruntergeladen
Benutzeravatar
rudi
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 456
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B


Zurück zu Probleme

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste