Forum: Mikrocontroller und Digitale Elektronik Anfänger Einstieg in Osek


von der T. (derturke)


Lesenswert?

Hallo Zusammen

zurzeit versuche ich mich in Osek einzuarbeiten und habe mir das einzige 
gescheite buch von amazon dafür gekauft von "Matthias Homan OSek" meine 
aufgabe ist es ein lauflicht an einem Drucker Port zu realisieren! Das 
heist ich hab ein kleines Modul das folgende Bauteile hat: 2 von Texas 
Instrument
 Octal Buffer and Line Driver SNHCT541N und einen Philips 74HC 
high-speed Si-gate CMOS devices diese Teile steuern 12 LEDs 5 schalter.

Meine Frage wäre jetzt wie hau ich ne software auf mein Modul drauf es 
hat nen DruckerPort das habe ich mit nem USBtoCom und darauf noch en 
Druckerport adapter drauf verbunden!würde diese art von verbindung gehn!
Eine beispiel software habe ich ein lauflicht in C geschrieben nur der 
ganze vorgang wie ich was machen muss fehlt mir noch ein kleiner Tip 
würde mir echt sehr helfen da ich beim googlen net viel gefunden habe!!!

und folgende programme hab ich ProOeskWin32x86,OsekSimulation Gui waren 
auf der Cd vom buch dabei

MFG
derturk

von der T. (derturke)


Lesenswert?

Bitte leute bräuchte dringend mal hilfe hat vlt jemand wenigstens auch 
mal das Buch benutzt und die demos zum laufen gebracht weili ich krieg 
nicht mal die demos hin!!

von Otto (Gast)


Lesenswert?

Hallo,

es liegt wahrscheinlich an Deinen Informationen:

1. ein Lauflicht an einem Druckerport geht ohne OSEK

2. OSEK läuft normalerweise auf Mikrocontrollern

3. Die haben für gewöhnlich keinen Druckerport

Was möchtest Du uns mit:

> auf mein Modul drauf es hat nen DruckerPort
> das habe ich mit nem USBtoCom und darauf noch en
> Druckerport adapter drauf verbunden!

sagen ?

Gruss Otto

von der T. (derturke)


Lesenswert?

Also meine Aufgabe ist es anhand einer OSEK Emulation ein Lauflicht am 
Druckerport zu realisieren. Und am Druckerport habe ich ein Modul 
angeschlossen das diese Bauteile hat 2 von Texas
Instrument
 Octal Buffer and Line Driver SNHCT541N und einen Philips 74HC
high-speed Si-gate CMOS devices! Es ist ne kleine Plattine mit LED und 
Schalter und hat die oben genannten Bauteile und einem Druckerport.

Zur letzten Frage: Also ich arbeite mir einem Notebook das kein 
Druckerport hat deswegen möchte ich einen USB to COM/Druckeranschluß 
adapter benutzten umd ggf. irgendwie das modul zu flaschen falls das 
möglich sein sollte. Weis aber nicht wie ich vorgehn sollte. Ich habe 
mal ein demo Programm versucht zum laufen zu kriegen aber auch ohne 
erfolg.

Zuerst erstellt man ja eine .oil datei mit den Tasks ect. dann bekommt 
man ne oil.c und ne oil.h datei diese für ich in visual studio zusammen 
und kann diese mit ner Test funktion Debuggen aber was für datei typen 
sollte ich erstellen um sie dann auf das Modul zu flaschen damit das 
läuft?

von Otto (Gast)


Lesenswert?

Hallo,

wenn, wie ich das jetzt verstehe, das Modul nur aus LED-Treiber und evtl 
einem MUX oder "was-auch-immer" besteht, kannst Du da nichts "flashen".

Das sind nur Interface-Bausteine und das Programm läuft auf Deinem 
Notebook.

Unabhängig vom OSEK müsstetst Du erst einmal sehen, ob Du Deinen 
Druckerport ans Laufen bringst.

Versuche also zunächst, ob sich ein Drucker überhaupt ansprechen lässt.

Anschliessend versuche, den Druckerport mit Deinen LED unter C 
(oder-was-auch-immer) anzusprechen.

Die mit der OSEK-Konfiguration erzeugten "OIL"-Dateien werden in ein 
Projekt eingebunden, um dessen Echtzeitverhalten zu "managen".

Gruss Otto

von Frank L. (hermastersvoice)


Lesenswert?

Ich hab zwar keine Ahnung um was es hier eigentlich geht, OSEK hab ich 
noch nie gehört, aber meistens geht das mit den USB Adaptern schief. 
Diese Dinger bilden nunmal keine vollständig kompatiblen Schnittstellen 
nach. Meist sind nur die Grundfunktionen implementiert, also serielle 
Daten per RS232 austauschen oder eben einen Drucker an der parallelen 
Schnittstelle betreiben. Mit den "echten" Schnittstellen sind jedoch 
auch Nutzungen ausserhalb der eigentlichen Aufgabe möglich, man kann da 
einzelne Leitungen ansteuern, was ja auch reichlich für diverse 
Schaltungen benutzt wird. Bei den USB-Pseudo-Schnittstellen wird dies in 
den meisten Fällen nicht unterstützt, sodass solche Schaltungen damit 
einfach nicht funktionieren können. Nimm einen richtigen Rechner, der 
auch richtige Schnittstellen hat oder kauf dir ne PCMCIA-Karte. Letztere 
haben meist eine komplette Schnittstelle drauf und damit kann man dann 
auch an einzelnen Leitungen wackeln.

bye

Frank

von der T. (derturke)


Lesenswert?

Zum flaschen wenn ich das modul anschalte ohne das es am Pc 
angeschlossen ist lauft aber ein programm drauf LED blinekn also es tut 
sich was wenn ich mit den schaltern spiele !!! was hat das zu 
bedeuten???wäre es eventl. möglich jetzt statt ner EXE in Visual Studio 
einach mal ne Hex daraus machen und das ding versuchen irgendwie drauf 
zuhauen es  soll ja ein embedded system sein???

Falls das jetzt falsch wäre meine aussage muss ich wohl echt versuchen 
denn Druckerport anzusprechen ... :-(

von Frank L. (hermastersvoice)


Lesenswert?

Wie sollten an einem Modul mit nem Buffer und nem MUXer drauf von allein 
LEDs leuchten? In diese Chips kann man auch garantiert nix flashen, 
schon garnienicht irgendwelche .EXE Dateien. Ist da etwa noch mehr 
drauf? Wie wärs mal mit sinnvollen Informationen?

bye

Frank

von Otto (Gast)


Lesenswert?

Hallo,

> Zum flaschen wenn ich das modul anschalte ohne das es am Pc
> angeschlossen ist lauft aber ein programm drauf LED blinken
> also es tut sich was wenn ich mit den schaltern spiele !!!

dann ist aber mit Sicherheit mehr auf dem Modul als irgendwelche 
"74HCT".....

Wenn Du wirklich Hilfe erwartest, poste doch mal ein Foto und/oder noch 
besser Schaltplan von dem Modul.

Gruss Otto

von der T. (derturke)


Angehängte Dateien:

Lesenswert?

also so sieht das ganze gebilde aus hab es mal fotographiert!!! wenn ich 
es anschalte leuchten die LEDs ok ich muss zugeben von nem ablaufenden 
programm ist nicht die rede....

von Otto (Gast)


Lesenswert?

Hallo,

da ist nichts drauf, was Du "flashen" kannst.

Das Programm läuft auf Deinem PC und muss den Druckerport ansteuern 
können.

Notfalls hol den ältesten PC, den Du finden kannst, der einen 
Druckerport hat - damit sollte es gehten.

Gruss Otto

von der T. (derturke)


Lesenswert?

OK so langsam hab ich mich schon vertieft in das Ganze!! meine Aufgabe 
ist es jetzt den Druckerport (LPT) mit Osek anzusprechen kennt sih da 
jemand mit der API aus??? also ein lauflicht hatte ich schon hinbekommen 
aber nur zum teste in C++. Ich will das Demo Programm das ich hab jetzt 
so ändern das ich den Druckerport ansteuern kann??? hat jemand mit sowas 
erfahrung???
hierist der demo code ist ein laflicht auf osek aber halt da kommt es im 
Dosfesnter und spricht nix an!!!

#include  <conio.h>
#include  <stdio.h>
#include  <string.h>
#include  "LptTools.h"
#include "os.h"
#include <osekguielements.h>
/*********************************************************************** 
*****
 * Declarations
 ************************************************************************ 
****/

DeclareAlarm(AlarmActCyclic);

DeclareResource(Res_CounterVar);

DeclareTask(InitTask);
DeclareTask(Loop);
DeclareTask(Cyclic);

/*********************************************************************** 
*****
 * Global data
 ************************************************************************ 
****/

unsigned char counter;
int led_id;

/*********************************************************************** 
*****
 * Hooks (Remember to activate these in the ProOSEK configurator if 
desired!)
 ************************************************************************ 
****/


char *connectString ="DEMO share";


/*********************************************************************** 
*****
 * Tasks
 ************************************************************************ 
****/

/*********************************************************************** 
*****
 * InitTask
 * Initialize the system and terminate after activating Loop
 * Prio=1; Autostart=yes
 ************************************************************************ 
****/



TASK(InitTask)
{ int        i,j,key,bit,port,value[3];
  unsigned short   addr[16];


  LptDetectPorts(i,addr,3);

    AlarmBaseType albase;
    InitGuiInternal();

  LptInit();
  led_id = LEDInit( 8 );
  LEDS_INIT();

    (void)GetAlarmBase(AlarmActCyclic, &albase);

    /* we assume that the ticksperbase is the number of ticks needed to 
reach
     * one (1) second. Also assumes that this value is lower or equal to 
the
     * amxallowed value. */

    (void)SetRelAlarm(AlarmActCyclic,albase.ticksperbase 
,albase.ticksperbase  );
    (void)ChainTask(Loop);
}

/*********************************************************************** 
*****
 * Loop Task
 * Executes an infinite loop after activating Sensor
 * Prio=2; Autostart=no
 ************************************************************************ 
****/
extern CRITICAL_SECTION cs;

TASK(Loop)
{
    volatile unsigned int dummy;
    unsigned char toggle = 0;

   while(1)
    {
    int dummy2 = 5443;
        for (dummy=0; dummy<3000000; dummy++)
    {
      dummy2 = dummy2%((dummy%20)+1);
    }

      (void)GetResource(Res_CounterVar);

      if (toggle == 0)
            toggle = 1;
        else
            toggle = 0;

    LEDSet( led_id, ((toggle<<7)|((counter) & 0x0f)) );

    LEDS_SET(((toggle<<7)|((counter) & 0x0f)));

    (void)ReleaseResource(Res_CounterVar);

  }

    (void)TerminateTask();
}


/*********************************************************************** 
*****
 * Cyclic Task
 * Runs cyclicly activated by AlarmActCyclic
 * Prio=4; Autostart=no
 ************************************************************************ 
****/

TASK(Cyclic)
{
  (void)GetResource(Res_CounterVar);
    counter = ((counter+1) & 0x0f);

  LEDSet( led_id, counter );
  LEDS_SET(counter);

  (void)ReleaseResource(Res_CounterVar);

    (void)TerminateTask();
}

von Niels H. (monarch35)


Lesenswert?

Ich weiss nicht, was dieses OSEK sein soll, aber der direkte Zugriff auf 
LPT-Ports ist unter modernen Betriebsystem immer etwas problematisch.

Bitte kläre doch erstmal, ob dein OSEK überhaupt für dein verwendetes 
Betriebsystem geeignet ist. Danach kannst du noch folgendes abklären:

- BIOS Setting LPT-Modus sollte auf "Standard" stehen (Also kein ECP 
oder sonstiger DMA kram)
- Standardbasisadresse des LPT1 ist 0x378. Sowohl BIOS als auch dein 
Programm sollten diese Einstellung irgendwo haben.
- Laptops sind immer problematisch weil sie häufig entweder die 
Standardpotentiale (Spannung) haben oder nicht den vorgesehenen Strom 
liefern können. daher: LAPTOPs meiden.

von der T. (derturke)


Lesenswert?

Ja das mit dem Laptop hab ich jetzt auch eingesehn deswegen benutze ich 
wieder meinen alten PC da hab ich auch schon erfplgreich auf den LPT 
port über C++ undeien Tool zugreifen können!!! Ja OSEK ist das 
Betriebssytem! und es ist denk ich mal sehr gut geeingnet um ein LPT 
port anzusprechen das Wie ist aber nur die Frage!!! In der Simulation 
funktioniert es !!! nur die Hardware beschreibung des LPT für OSEK fehlt 
mir...!!!

von Niels H. (monarch35)


Lesenswert?

irgendwie bezweifele ich das Osek ein Betriebsystem sein soll....

von Otto (Gast)


Lesenswert?

Hallo,

OSEK ist eine Art "Betriebssystem" für Mikrocontroller und nicht für PC 
es "kümmert" sich hauptsächlich um die Echtzeitfähigkeit.

Da dieses "OSEK" aber bei einem Buch dabei war, ist es möglich, dass 
dies so angepasst ist, das es geht.

Gruss Otto

von Niels H. (monarch35)


Lesenswert?

Ich lese gerade eine Beschreibung von OSEK:

"Besonderes Merkmal dieses Buches ist eine zeitlich unbegrenzte 
Demoversion eines OSEK-Betriebssystems auf CD für den Test auf 
Windowsrechnern."

So ein Unsinn hab ich ja schon lange nicht mehr gelesen.

Jedenfalls steht hier auch, das dieses OsekPro nur unter Windows 2000 
und XP läuft...NT4 lass ich jetzt mal absichtlich unter den Tisch 
fallen.

Wenn das immer noch nicht funktioniert, wirst du nicht drumrumkommen, 
meine BIOS-Tipps zu berücksichten.

von der T. (derturke)


Lesenswert?

OK Bios Einstellungen sind OK!!! Bin an der API dran !! Kennt jemand die 
OSek API??? wie man hardware ansteuert???LPT ???

da gibts Dieses OSEK COM kann das vlt die lösung sein!!!

ein kollege meinte ich soll es mit Dispatcher Task versuchen die 
schnittstellen anzusprechen schön gesagt aber ohne sich in der api 
auszukennen hat man da keine chance kennt siche jemand mit der osek API 
gut aus???

von Matthias (Gast)


Lesenswert?

mit diesem USB to LPT Umsetzer könnte es funktionieren:
http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/index.html

von der T. (derturke)


Lesenswert?

ne das war ja net gefragt USB to LTP sondern ansprechen des LPT port in 
OSEK!!
und ob sich jemand mit der api auskennt!!!

von Dirk D. (dirkd)


Lesenswert?

Im OSEK findest Du keine Treiber zum Ansprechen von Hardware.

In dem Buch ist doch die API von OSEK erklärt. Mehr als dort erklärt 
wird gibt es nicht.

Die Windows Simulation von ProOSEK ist mehr dazu gedacht mit einem 
speziellen Simulationsprogramm (dem OsekSimulation Gui) 
zusammenzuarbeiten. Dort kann man das "OSEK-System" mit simulierten 
Komponenten (z. B: LEDs DIP-Schalter usw.) verbinden und ein "echtes" 
System simulieren.


Gruß

  Dirk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.