Mit der Hilfe von Dirks Hinweisen habe ich die Ansteuerung des SpeakJet aus einem beliebigen Masterprogramm auf der M256 hinbekommen.
Wie so oft war es am Ende gar nicht so schwierig, wenn man weiß, wie's geht
Ziel war für mich den UART1 zu nutzen, da der UART0 schon benutzt wird und auch mechanisch ungünstiger angeordnet ist.
Hier die nötigen Schritte:
1. Nach der Anleitung (
Link von Dirk weiter oben) eine RP6M256uart1.c und eine RP6M256uart1.h erstellen.
2. Diese Dateien da abspeichern, wo auch die RP6M256uart.c und RP6M256uart.h liegen.
3. Die neue RP6M256uart1.h entweder in die RP6M256lib.h oder in's eigene Hauptprogramm eintragen, je nachdem ob sie immer oder nur für diesen speziellen Fall eingebunden werden soll.
4. Die neue RP6M256uart1.c in das makefile eintragen.
5. Die
UART1 im eigenen Programm initialisieren:
Code:
cli(); // Disable global interrupts
// UART1:
UBRR1H = UBRR_BAUD_LOW_WIFI >> 8; // Setup UART1: Baud is Low Speed
UBRR1L = (uint8_t) UBRR_BAUD_LOW_WIFI;
UCSR1A = 0x00;
UCSR1C = (0<<UMSEL10) | (0<<UMSEL11) | (1<<UCSZ11) | (1<<UCSZ10);
UCSR1B = (1 << TXEN1) | (1 << RXEN1) | (1 << RXCIE1);
clearReceptionBuffer1();
sei(); // Enable Global Interrupts
(
_WIFI ist wichtig, weil damit die Baudrate von 38400 auf 9600 umgestellt wird, das braucht der SpeakJet)
6. Mit writeChar1(
252) den Steuercode 252 auf die
UART1 schicken. 252 steht als Beispiel und erzeugt einen Sonar-Ping.
Hier noch ein Bild vom Aufbau des SpeakJet auf dem RP6:
Das war's. Wer Interesse an Details hat, findet sie hier.
Gruß Uwe
Lesezeichen