Jump to content

borg

Administrators
  • Gesamte Inhalte

    3.592
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    58

Alle erstellten Inhalte von borg

  1. Must be an error in the compiler, the comparision is probably removed as an optimization. The compiler didn't recognize the interrupt routine that sets the state and thought that the while condition is always true. What gcc version are you using? Have you tried making send_status volatile?
  2. Die Step-Down Power Supply kannst du vermutlich nur so richtig testen indem du die Spannungen misst. Wir haben es uns gerade genauer angeguckt, bei deiner Fehlerbeschreibung kann es eigentlich nur sein, dass eine der Ferritperlen auf dem Master Brick durchgebrannt ist. Dann würde die Stromversorgung über die Step-Down nicht mehr funktionieren und die Strom/Spannungsmessung auch nicht, da kein Massebezug mehr da ist. Eigentlich sollte so ein defekt aber nicht spontan auftreten, da muss eine zu hohe Spannung angelegen haben oder sowas . Bzgl. eines Austausches melde dich bei info@tinkerforge.com (mit zugehöriger Bestellnummer am besten).
  3. Ohje, da hat der Master Brick dann seinen Magic Smoke freigelassen . Weißt du denn was passiert ist? Hast du + und - verpolt oder die Spannung im grünen Stecker eingespeist? Die kaputte Spannung/Strommessung kann bedeuten, dass die Messwiderstände auf der Step-Down Power Supply kaputt sind, aber auch dass der Microcontroller auf dem Master Brick defekt ist. Da der Master selbst das Servo Brick und die WIFI Extension nicht mehr mit Strom versorgen kann, muss auf jeden Fall zusätzlich noch die Stromversorgung vom Master Brick in irgendeiner Weise defekt sein.
  4. Ich würde mal vorsichtshalber konservativ von 800 Nachrichten pro Sekunde ausgehen (Slots gehen verloren da das Betriebssystem scheduled und sowas). Dann sollten wir noch Nyquist anwenden (http://de.wikipedia.org/wiki/Nyquist-Frequenz). Dann komme ich auf 800*60/2 = 24000 Umdrehungen/Minute unter der Annahme dass Callbacks verwendet werden und sonst im System keine Nachrichten unterwegs sind .
  5. Es gibt jetzt set_wifi_hostname und get_wifi_hostname in Master Brick Firmware Version 2.0.5. Den Default Hostnamen kann man mit einem setzen eines leeren Strings wieder herstellen .
  6. Der Low Power Mode sollte jetzt zurückgesetzt werden bei einem Disassociate (in 2.0.5).
  7. Am einfachsten ist es wahrscheinlich wenn ihr eine weitere VM aufsetzt die einen Mutex implementiert (einfach über Sockets oder so). Das über einen Setter/Getter bei uns im System zu machen ist definitiv nicht sicher. Es könnte ja folgende Abrufreihenfolge passieren VM A: Get -> Ergebnis: Unlocked VM B: Get -> Ergebnis: Unlocked VM A: Set -> Lock VM B: Set -> Lock (kein Fehler) Um schon greifen beide VMs gleichzeitig drauf zu. D.h. ihr braucht eine TryLock Funktionalität, die einen Fehler zurückgibt wenn das Lock schon gesetzt ist. Es ist möglich das auf dem Master Brick zu implementieren, es gibt aber aktuell keinen Setter oder Getter bei uns im System der sowas leisten könnte.
  8. Firmwares: Master Brick 2.0.5 Low-Power-Mode wieder anschalten nach Disassociation API hinzugefügt für: SetWifiHostname GetWifiHostname SetCurrentCallbackPeriod GetCurrentCallbackPeriod SetVoltageCallbackPeriod GetVoltageCallbackPeriod SetUSBVoltageCallbackPeriod GetUSBVoltageCallbackPeriod SetCurrentCallbackThreshold GetCurrentCallbackThreshold SetVoltageCallbackThreshold GetVoltageCallbackThreshold SetUSBVoltageCallbackThreshold GetUSBVoltageCallbackThreshold SetDebouncePeriod GetDebouncePeriod Current (Callback) Voltage (Callback) USBVoltage (Callback) CurrentReached (Callback) VoltageReached (Callback) USBVoltageReached (Callback) Download Firmwares: Master Brick
  9. Firmwares: Master Brick 2.0.5 Reissue Low-Power-Mode after disassociate Add API for: SetWifiHostname GetWifiHostname SetCurrentCallbackPeriod GetCurrentCallbackPeriod SetVoltageCallbackPeriod GetVoltageCallbackPeriod SetUSBVoltageCallbackPeriod GetUSBVoltageCallbackPeriod SetCurrentCallbackThreshold GetCurrentCallbackThreshold SetVoltageCallbackThreshold GetVoltageCallbackThreshold SetUSBVoltageCallbackThreshold GetUSBVoltageCallbackThreshold SetDebouncePeriod GetDebouncePeriod Current (Callback) Voltage (Callback) USBVoltage (Callback) CurrentReached (Callback) VoltageReached (Callback) USBVoltageReached (Callback) Download Firmwares: Master Brick
  10. So you are using stock debian? We currently don't have armel builds, our .deb is for armhf. The difference is described here: http://www.memetic.org/raspbian-benchmarking-armel-vs-armhf/ You can either switch to Raspbian or you can build brickd yourself from source (https://github.com/Tinkerforge/brickd): sudo apt-get install libusb-1.0-0-dev libudev-dev build-essential cd src/brickd make
  11. Something around 1W seems reasonable, yes .
  12. Es ist abhängig von Master v2 + Extension im Stack. Er schreibt: Ich denke also, es war das gleiche Problem .
  13. Das hat nichts mit API Anfragen und Antworten zu tun. Wir kommunizieren mit dem WIFI Modul über SPI und bei SPI ist es so, dass bei jeder Flanke auf der Clock ein Bit von Slave zum Master und ein Bit vom Master zum Slave übertragen wird. Dadurch kann es passieren, dass ich Daten empfange während ich Daten sende. Dadurch brauchen wir den zusätzlichen Buffer. Ist ein reines Implementierungsdetail.
  14. Do you have an example for such a picture? I am not sure what kind of API we could describe with pictures.
  15. There is a marking in the sensor itself, you can see it here: http://www.inmotion.pt/store/images/3522.jpg
  16. Naja, ein "Connection Refused" kann man laut WIFI Modul Datenblatt nur bekommen wenn alle 15 Sockets belegt sind. Warum dies nach einem Dis-/Reassociation passiert wenn bestimmte APs verwendet werden, kann ich einfach nicht rausfinden. Ein resetten des WIFI Moduls scheint es auf jedenfall aus dem komischen Zustand zu bringen. Bzgl des Low-Power-Modes: Beim starten eines großen Stacks kann es im Low-Power-Mode zu Timeouts beim Enumerierungsprozess kommen, daher erlauben wir den Low-Power-Mode nicht beim starten. Nach einem Reset Aufgrund eines Disassociation Events spricht aber nichts dagegen den Low-Power-Mode direkt wieder zu setzen .
  17. Für die automatische ADC Kalibrierung vom Master 2.0 haben wir ein paar Leitungen im Stack auf andere Prozessorpinne gelegt. Dadurch scheint der Prozessor jetzt zu glauben er würde über JTAG angesprochen wenn er im Bootloader ist eine Extension auf dem Stack ist. Das ist definitiv ein ungewollter Nebeneffekt (ist auch nicht Dokumentiert im Datenblatt des Prozessors). Können wir jetzt aber nichts mehr gegen machen. Ich glaube The_Real_Black hatte in dem anderen Thread das gleiche Problem, wir sollten das mal genau durchprobieren und dokumentieren wann es die Probleme gibt.
  18. Um den internen WIFI Buffer zu füllen, musst du viele Callbacks aktivieren (damit der Sendebuffer immer voll ist) und gleichzeitig viele Setter oder Getter aufrufen (damit es passieren kann, dass der Empfangsbuffer voll ist während ich etwas senden möchte). Die Kommunikation von dem WIFI Modul ist so gebaut, dass ich immer gleichzeitig Daten empfange wenn ich welche sende. Dadurch kann es sein, dass ich Daten bekomme während mein Eingangsbuffer voll ist (weil ich gerade einen Callback sende). Dazu brauche ich den zusätzlichen Buffer wofür du dir die lowWatermark holen kannst. Eigentlich hat das WIFI Modul selbst intern genug Buffer. Wenn die das Kommunikationsprotokoll ein wenig cleverer gebaut hätten, hätte ich den zusätzlichen Buffer gar nicht gebraucht...
  19. Ich kann das Problem mit deinem Code nachstellen, allerdings nicht mit einem Minimalbeispiel: import com.tinkerforge.BrickMaster; import com.tinkerforge.IPConnection; public class ExampleStackStatus { private static final String host = "192.168.178.108"; private static final int port = 4223; private static final String UID = "68daHU"; // Change to your UID // Note: To make the example code cleaner we do not handle exceptions. Exceptions you // might normally want to catch are described in the documentation public static void main(String args[]) throws Exception { IPConnection ipcon = new IPConnection(); // Create IP connection BrickMaster master = new BrickMaster(UID, ipcon); // Create device object ipcon.connect(host, port); // Connect to brickd // Don't use device before ipcon is connected for(int i = 0; i < 10; i++) { // Get voltage and current from stack (in mV/mA) int voltage = master.getStackVoltage(); int current = master.getStackCurrent(); System.out.println("Stack Voltage: " + voltage/1000.0 + " V"); System.out.println("Stack Current: " + current/1000.0 + " A"); Thread.sleep(1950); } System.console().readLine("Press key to exit\n"); ipcon.disconnect(); } } Sag Bescheid wenn du herausfindest woran es genau liegt . Das ist OK, du musst nur neu initialisieren wenn der Stack aus war und seine Konfiguration vergessen hat.
  20. Das ist komisch. Wenn ich hier auf meinem PC und Laptop einen Brickv starte und die beide mit einem WIFI Extension verbinde und den Master Tab aufmache, klappt das einwandfrei. Der Brick Viewer macht in dem Fall nichts anderes als alle 100ms GetStackVoltage/GetStackCurrent aufzurufen. Machst du irgendwas besonderes? Womit ich das vielleicht reproduzieren kann?
  21. Du meinst von mehreren PCs per WLAN drauf zugreifen? Das geht, klar. Die WIFI Extension sollte sich da wie brickd verhalten. Brickd weiß zum Beispiel auch nicht für wen ein Callback bestimmt ist und schickt ihn überall hin. Bei WIFI können bis zu 15 IP Verbindungen gleichzeitig benutzt werden (das ist auch durchgetestet). Deine Problembeschreibung klingt so, als würdest du über einen PC per USB verbinden und über den anderen per WIFI: Das geht leider nicht und ist auch technisch nicht möglich. Wenn du zwei Schnittstellen gleichzeitig benutzt gehen Nachrichten immer an die Schnittstelle, die zuletzt etwas angefragt hat (das gilt sowohl für Getter als auch für Callbacks). Also wenn du z.B. per WIFI einen Stackteilnehmer abfragst und bevor der die Antwort zurück schickt fragst du etwas per USB ab, geht die Antwort der ersten Anfrage per USB zurück.
  22. Firmwares: Joystick Bricklet 2.0.2 Integrationszeit für Analogwert erhöht und Durchschnittsbildung verringert. Dadurch sollten Werte stabiler werden wenn das Joystick Bricklet über WLAN verwendet wird Download Firmwares: Joystick Bricklet
  23. Firmwares: Joystick Bricklet 2.0.2 Increase analog value integration time and decrease averaging to allow more stable joystick values if Joystick is used over WiFi Download Firmwares: Joystick Bricklet
  24. Da fehlt die Konfiguration der X/Y-Pinne auf Output: ... Pin pins_bricklet_a[] = {PINS_BRICKLET_A}; pins_bricklet_a[0].type = PIO_INPUT; pins_bricklet_a[1].type = PIO_INPUT; pins_bricklet_a[2].type = PIO_OUTPUT_1; pins_bricklet_a[3].type = PIO_OUTPUT_0; ...
  25. Der Treiber für den Bootloader liegt im brickv Verzeichnis, der Treiber für den Master Brick (wenn eine Firmware drauf geflasht wird) liegt im brickd Verzeichnis. Ich denke du hast den falschen Treiber installiert. Das müssen wir unbedingt mal besser Dokumentieren oder irgendwie anders offensichtlicher gestalten.
×
×
  • Neu erstellen...