mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TinyOS Programmierung


Autor: Mario Riesner (mario_123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich bin grade dabei mich in TinyOS einzuarbeiten. Für meine Masterarbeit 
entwickle ich ein Funk- Sensornetz und verwende dazu die ZigBit Module 
von Atmel bzw. das Eval Kit von Meshnetics (jetzt A.N. Solutions) 
welches das ZigBit Modul verwendet. In Fachkreisen wird das mini 
Betriebssystem TinyOS für solche Anwendungen verwendet, daher setzt auch 
mein Projekt auf TinyOS (TinyOS 2.1.1) auf.

Meine Frage an Euch: Kennt sich jemand schon mit TinyOS aus, der mir 
Tipps zur Programmierung und evtl. konkrete Beispielprogramme geben 
kann. Wenn jemand selber Fragen hat kann er sie auch an mich stellen, 
ich hab mir schon ein paar Grundlagen in diesem Bereich erarbeitet. Wenn 
ich eine Antwort weiß dann werde ich sie posten.

Konkrete Fragen:
Ich versuche über die UART Schnittstelle mit dem Modul Daten vom PC zu 
empfangen (Senden Modul -> PC funktioniert bereits). Das Problem liegt 
in der anderen Richtung. Der PC sendet ein TinyOS Frame entsprechend 
message_t Framestruktur aus TEP 111 und dem Paketformat in TEP 113 unter 
3.6.
Das Problem ist dass TinyOS auf dem höchsten Abstraktionslayer der 
Komponente SerialAMSenderC keine Daten empfängt. Das Event wird nie 
aufgerufen obwohl Datenframes an das Modul gesendet werden.
event message_t* Receive.receive(message_t* bufPtr, void* payload, uint8_t len) 
{
 Leds.led0Toggle();
}

Hat hier jemand Erfahrung an was das liegen könnte oder sogar ein Code 
der funktioniert? Mein Code ist aus dem Beispiel von TinyOS 
(TestSerial).

Meine zweite Frage ist:
An eine I2C Porterweiterung sollen Daten (z.B. Bytes) der Reihe nach 
geschickt werden. Das Prinzip von TinyOS ist dass es keine blockierenden 
Funktionen gibt. Das führt hier aber zu folgendem Problem: Der 
Funktionsaufruf Sende Daten_1 kehrt sofort zurück und es wird der zweite 
Funktionsaufruf Sende Daten_2 ausgeführt, obwohl Sende Daten_1 noch 
nicht fertig ist und das noch anstehende zu sendende Byte wird 
überschrieben. Irgendwann kommt natürlich das Event Send Done aber ich 
bräuchte eine blockierende Funktion die so lange wartet bis die Daten 
gesendet wurden und der Bus (I2C) wieder frei ist. Das System darf aber 
nicht komplett blockieren, da ich ja wissen muss wann der Bus wieder 
frei ist. Hier bräuchte ich einen Ansatz in Verbindung mit dem 
SplitPhase Prinzip oder wie es blockierend mit Busrückmeldung geht.

Vielleicht hat jemand ja hier die ein oder andere Idee oder sogar 
Erfahrung mit TinyOS.

Viele Grüße
Mario

Autor: Mario Riesner (mario_123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hab noch eine Datei vergessen hochzuladen.

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.