mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Meshnetics Zigbee ZDM-A1281 zwei UARTs gleichzeitig öffnen mit eZeeNet Stack?


Autor: Holger M. (nezaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielleicht kann mir jemand helfen.

Ich nutze ein ZDM-A1281 Zigbee Modul von Meshnetics zusammen mit dem 
eZeeNet-Stack [1]. Der darauf verbaute Controller (ATMega1281) besitzt 
zwei UART, welche vom Stack auch unterstützt werden.

Wenn ich nur UART_0 mittels uart_open öffne funktioniert alles, ebenso 
wenn ich nur UART_1 öffne.
Ist jedoch bereits ein UART offen, bekomme ich beim Öffnen des anderen 
UART von uart_open den Rückgabewert -1. Dieser Rückgabewert bedeutet 
laut Datenblatt

1. incorrect UART channel oder
2. unsupported flags oder
3. insufficient resources.

Die ersten beiden Fehler können es nicht sein, da die UARTS einzeln mit 
den selben Parametern funktionieren. Bleibt also nur noch "insufficient 
resources" als Grund.

Hier mal der Code zum öffnen der UARTs.
int uart0;
int uart1;

UARTMode_t param;
param.baudrate = UART_BAUDRATE_9600;
param.data = UART_DATA8;
param.parity = UART_PARITY_NONE;
param.stopbits = UART_STOPBIT_1;

uart0=uart_open(UART_CHANNEL_0, &param, UART_FLOW_CONTROL_NONE,UART0RXByte,tx0Done);
uart1=uart_open(UART_CHANNEL_1, &param, UART_FLOW_CONTROL_NONE,UART1RXByte,tx1Done);

Meine Frage ist jetzt, was muss ich tun damit ich genügend Resourcen 
habe um zwei UARTs gleichzeitig zu öffnen. Mein Programm enthält bisher 
eigentlich sonst keinen weiteren Code. Es kann also nicht daran liegen, 
dass ich selbst zuviel Resourcen brauche. Gibt es eine Möglichkeit in 
Stack mehr Resourcen für den UART zu reservieren, oder geht das öffnen 
von zwei UARTS gleichzeitig generell nicht (und warum steht es dann 
nicht gleich im Datenblatt)?

Gruß Holger

[1] Datenblatt zum Stack: http://www.meshnetics.com/dl.php?id=17

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich glaube, du musst für beide ein eigenes Parameterset erstellen (zb. 
param1 und param2) und die ganzen Einstellungen für beide UARTs machen.

mfg
Andy

Autor: Holger M. (nezaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas Posch,

ich hab das mal so geändert, wie du es vorgeschlagen hast, das hat aber 
keine Besserung gebracht.

Ich hoffe irgendwo am Stack was einstellen zu können, habe aber bisher 
nix gefunden.

Gruß Holger

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frag doch mal deren Support.

Autor: Andreas Posch (andyp17)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Komisch. Normalerweise müsste es so klappen. Ich benutze nämlich die 
PWM-Kanäle und da muss man auch jeden Kanal separat initialisieren. Ich 
dachte, das wäre auch bei den UARTs so...

Autor: Juergen M. (bug)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Holger,

was ist denn UART0RXByte, tx0Done, UART1RXByte, tx1Done?
Läufts denn wenn du an den Stellen jeweils NULL einträgst?

Grüße, Jürgen.

Autor: Holger M. (nezaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

erstmal Danke für eure bisherigen Vorschläge.

>was ist denn UART0RXByte, tx0Done, UART1RXByte, tx1Done?
>Läufts denn wenn du an den Stellen jeweils NULL einträgst?

Nein, hatte ich inzwischen auch schon versucht. Daran liegt es aber 
nicht.

Inzwischen habe ich wohl gefunden, was ich suche. Es gibt im HAL 
(Hardware Aabstraction Layer) der zum Stack gehört in der Source 
(uart.h) ein
#ifndef NUM_USART_CHANNELS
#define NUM_USART_CHANNELS 1 // Number USART channels
#endif

Man muss wohl vorher einfach nur definieren, wieviele Kanäle man 
gleichzeitig öffen will. Dann wird vom HAL entsprechend Speicher 
reserviert. Dazu hatte ich leider keine Doku.

Denke das sollte die Lösung sein. Evt. muss man noch den HAL neu 
übersetzen. Ich werde es gleich mal ausprobieren und Wenn es klappt hier 
berichten. Vielleicht hilft es dann ja noch jemandem.

Gruß Holger

Autor: Holger M. (nezaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oben beschriebene Lösung hat funktioniert!

Autor: Alexander Jan (alexanderj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meshnetics support, nur mit dev kit. ansonsten vieeeeeeeeeele mail hin 
und her und vielleicht eine antwort.
p.s. bei atmel zigbee modulen gibts den support kostenlos

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.