Peter Hacke schrieb:
> Die STM32 sind spott billig und es gibt viel
> Support.
[Meine Meinung]
Dafür sind die Datenblätter bei STM grütze, und das sich 2, völlig
verschiedene, Interrupts eine ISR teilen find ich auch daneben.
Mit Atmel Studio hat man unter Windows eine hochwertige IDE die a)
nichts kostet und b) keine limitierungen hat, wie z.B. die Trial
Versionen von Keil/IAR.
Warum fahren die Leute Audi, BMW und Co. wo es doch einen Dacia
praktisch geschenkt gibt? :)
Warum nutzen Leute Apple/Microsoft-Produkte, wo Linux/BSD doch nichts
kostet? Und der Support ist auch Bombe.
Selbe Aussage, andere Beispiele.
So, genug davon!
[/Meine Meinung]
So, zurück zum Problem:
mr. mo schrieb:
> Ich habe deine Initialisierung bei mir eingebaut und konnte immer noch
> nichts versenden ... :(
Ich hab nie versucht, nicht interruptgesteuert zu senden...
Du müsstest den Sender erst noch einschalten.
Meine Initialisierung ist darauf ausgelegt, per Interrupt zu
senden/empfangen, und ich sende nur, nachdem ich etwas empfangen habe.
Deswegen ist TX in meiner Initialisierung noch deaktiviert.
Es sollte dann so aussehen:
1 | USART0->US_CR = 0x00000050; // Datenblatt, Seite 836: Bit 6: TXEN, Bit 4: RXEN
|
Vielleicht war's das schon, was dir fehlte.
Weitere Hinweise:
Du musst den Watchdog abschalten! Mit dem Arduinozeug macht das halt das
Arduinozeug im Hintergrund für dich, so musst du das selber machen.
Watchdog: Datenblatt Seite 272/273 WDT_MR, Bit 15 (WDDIS) auf 1 setzen.
Weiter ist die Stackgröße in den Linkerscripten definiert, zu begin
steht diese auf 1k (wenn ich mich recht erinnere).
Wird dein Stack größer, so läuft der Controller in den Hard-Fault
Interrupt. vielleicht musst du die Stackgröße an deine Bedürfnisse
anpassen, vielleicht nicht jetzt, aber später mal. :)