Hallo,
nach 3 intensiven Tagen fehlt mir jede Idee was verkehrt sein könnte.
Fast schon möchte ich eine Belohnung ausschreiben.
Es muss gehen aber es geht nicht ... oder "Ich schaff das nicht!"
Die strategische Lage:
Das Funkmodul läuft an einem STM32F407 ohne Probleme und war im ACK
Modus. Ok, also muss es auf einem F103 auch laufen. Vorher auch mal
Payload mit ACK aber das brauche ich eigentlich nicht. Die Software auf
beiden Systemen ist die Gleiche, bis auf die Hardware Unterschiede
zwischen der F1 und der F4 CPU. Da F103 Board ist so ein DIP40 Modul,
nur die CPU drauf und die Bootloader Pins über Jumper + USB. Ich debugge
es mit einem ST LInkV2, der an die Pins angesteckt ist. Geht prima, auch
im Debug RAM Modus.
Mit dem LA habe ich mir die Sigale angeschaut, alles bestens! Die SPI
tackert die Werte richtig in die Register des RF rein, ich habe sie auch
alle wieder ausgelesen, auch die Pipe Adressen, und es steht richtig
drin. Kanal ok, Pipes ok, Shockburst usw. Die Rgeister des Rf kann ich
inzwischen auch auswendig runterbeten. SPI auf 2.0 Mhz, AHB/APB1/APB2
Prescaler sind alle auf 1 derzeit (Maximale Drehzahl 72Mhz = HCLK).
Später ggf. größerer Teiler, spart Strom.
Piepsen am Board ergab einwandfreie Verbindungen, die Pins takten
einwandfrei, alle einzeln im SingleStep durchgetestet, 1,0,1,0 ....
Was geht nicht?
Der Sender (Arduino) funkt laufen ein paar Daten in den Raum. Er hat
keine Fehlerquelle, mein großes Board empfängt alles einwandfrei was er
sendet.
An zwei LED sehe ich, ob er ein ACK vom Empfänger bekam oder nicht. Rot
= kein ACK, grün = alles prima. Der STM32F103 reagiert nur leider nicht
mit einem INT darauf wenn eine Sendung kommt. Auch eine LED ist am INT
Pin, eine Blaue mit 100uA Strom damit er nicht belastet wird. Geprüft
wurde:
INT Auslösung manuell mit GND Kabel -> ok
INT Auslösung durch Flag MAX_RT des Funkmoduls -> OK
Also ist die INT Strecke vom RF Modul zur CPU in Ordnung. Der INT Pin
reagiert auf die Flanke und das RF Modul kann diese Flanke erzeugen.
Nur das RX_DS Flag im Stazus Register was ein Paket anzeigt wird nie
gesetzt. Denn das würde den INT auslösen. Aber auch manuelle Abfragen
zeigen, dass es nie gesetzt wird.
Und jetzt gehen mir die Ideen komplett aus :-(
Viellicht setze ich doch ne Belohnung aus, wert wäre es mir das schon..
Gruss,
Christian
Hallo,
Nur aus Neugier:
Was für einen Logik Analysator verwendet du?
Zur Sache:
1. Schau dir den Signalverlauf doch einmal bei der Funktionierenden
Lösung an,
und vergleiche mit der nichtfunktionierenden.
2.Versuche mal mit "Breakpoints", den Programm Ablauf in
"funktionierenden"
und "nicht funktionierenden" nachzu vollziehen und zu vergleichen.
Habe auch keine Antwort.
Bei keinen Ideen hilft nur:
1. Schritt für Schritt Vergleich
2. Mal Abschalten und zwischendrin was anderes machen ;-)
Gruß
Marc
Marc schrieb:> Nur aus Neugier:> Was für einen Logik Analysator verwendet du?
So ein China Teil, Selae irgendwas.
> Zur Sache:>> 1. Schau dir den Signalverlauf doch einmal bei der Funktionierenden> Lösung an,> und vergleiche mit der nichtfunktionierenden.
Das ist zwar mühsam aber vermutlich die einzige Chance die beiden
Konfigurations Bitströme nebeneinander zu legen, denn danach passiert
nix mehr, das Modul ist scharf und wartet. Und wenn die genau gleich
sind, dann muss es "anderswo" dran liegen.
PS: Board und RF Modul habe ich auch ausgetauscht, nüscht :-(
Christian J. schrieb:> So ein China Teil, Selae irgendwas.
Der Selae Logikanalysator kommt aus Californien/USA
https://www.saleae.com/
Was du da verwendest ist wohl eher ein Clone mit der Salea Software
Christian J. schrieb:> mein großes Board empfängt alles einwandfrei...
könnte es sich da nicht um einen kleinen Denkfehler handeln? Diese
Funkmodule sind doch nicht für Broadcast gedacht, sondern für
Einzelverbindung mit Handshake, bis das/die Paket(e) richtig
rübergekommen sind. Was passiert denn, wenn du dein "großes Board"
ausschaltest und nur mit deinem STM32F1xx arbeitest?
W.S.
W.S. schrieb:> Was passiert denn, wenn du dein "großes Board"> ausschaltest und nur mit deinem STM32F1xx arbeitest?
Das ist natürlich so! Es dürfen nicht zwei Empfänger mit der gleichen
Kennung online sein, das gibt Datenmurks.
Vergleiche grad die Bitströme der beiden Boards...... bin noch dran.
Blöd, dass man Funkwellen nicht debuggen kann.
Ergebnis: Niete! Die Konfigurationsdatenströme sind absolut identisch,
MOSI und MISO Antwort des RF Moduls.
Bullshit!
Ok,
Alibi Tätigkeiten beendet wie Nachlöten aller Pins und Header, sogar
Kupferfolie zwischen CPU und Funkmodul gehalten, wer weiss.... auch die
Linker Options mal geändert. Geguckt ob die Pins viellleicht noch eine
andere Funktion haben, die was blockiert....
Ende Gelände. Nach 3 Tagen und 3 Mal drüber schlafen fällt mir nichts
mehr ein, was an dieser überschaubaren Platine anders ist.
Naja,
ich habs gefunden. Wieder mal zurück an meine Lehrzeit erinnert als es
noch keine uC, DC/DC Wandler usw gab.
"Jung, wenn es nicht funktioniert prüf erstmal die Versorgungsspannung"
Denn 3.3V sind für die ebay Teile einfach nicht drin, auch wenn sie auf
dem Voltmeter stehen. Rappelvoll mit Spikes.
:-)
noreply@noreply.com schrieb:> Ich wollts nicht sagen. :-)
Und nun ist der linke grüne Klotz nur noch stromlose Deko, da ich ihn
nicht rausreissen will, des Loches wegen. Wegen der Optik, Auge des
Künstlers halt :-)
Wie war das noch mit dem Sachsen bei 200 Puls!
"Er gääääähhhht, das sch**** Ding gääääht!"
Christian J. schrieb:> Vergleiche grad die Bitströme der beiden Boards...... bin noch dran.> Blöd, dass man Funkwellen nicht debuggen kann.>
Kann man aber sniffen und analysieren :P
F. F. schrieb:> Auf dem Bild sah das Teil weiß aus und ich dachte das wäre ein> "besonderes" Steckbrett.
Ist einfach eine ROTH Epoxy FR4 1,5mm und eine Baumarkt Sprühdose
"weiss" :-)
Sieht besser aus als dieses braun/grau etc. Hab da so nen Tick, das Ding
hängt schliesslich nachher an der Wand ohne Gehäuse.