Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Register lesen und schreiben/ports ansprechen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
06.06.2003, 12:28 Uhr
Jogibaer



Hallo Forum,

ich bin sehr neu auf dem Gebiet C (quasi keine Ahnung außer printf, scanf und so). Muss aber demnächst einem µC unter C programmieren.
Jetzt meine erste Frage: Wie kann ich unter C die Register auslesen und beschreiben? Wie sehen die benötigten Programmzeilen aus und brauche ich dazu eine spezielle Headerdatei?

Meine zweite Frage wird einige Leute in den Wahnsinn treiben , denn sie ist hier schon so oft gestellt worden:

Wie kann ich den seriellen und den parallelen Port unter C ansprechen?
Hilfreich wäre ein ganz kleiner abgespeckter Quellcode, an dem ich mal sehe, was alles dazugehört. Pins ein-und ausschalten und Pins abfragen.
Bitte nicht so kompliziert und eventuell mit ein paar Randbemerkungen.

Ich benutze Win 98 und MS Visual C++ ("programmiere" aber nur C, habe keine Ahnung von C++).

Vielen Dank für Eure Hilfe

MfG und frohe Pfingsten
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.06.2003, 13:05 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Hi um direkt auf register zu schreiben gibst es eigentlich den Befehl outp.

Der funzt aber glaube ich nur bis win95 danach erlaubt das Betriebssystem das nicht mehr (vielleicht gehts auch unter 98 will mich da nicht festlegen, musst du halt probieren)

Ich vermute aber mal eher das du die register nicht mehr direkt beschreiben kannst.
Das geht dann nur wenn du direkt assembler verwendest oder
wie hier
Gruss Heiko
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 06.06.2003 um 13:06 Uhr von Heiko editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.06.2003, 13:24 Uhr
ao

(Operator)



Zitat:
Jogibaer postete
µC unter C programmieren.
Wie kann ich unter C die Register auslesen und beschreiben?


Du meinst Hardware-Register im µC? Das kommt stark auf den Controller selber an. Üblicherweise kommen mit dem C-Compiler die nötigen Header und Libraries.

Oder die Register sind in den Adressraum der CPU eingemappt und werden über Pointer angesprochen, das ist der Trivialfall, für den es u.U. keine Header-Unterstützung gibt.

Welcher µC ist es denn?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.06.2003, 13:40 Uhr
~Jogibaer
Gast


Hallo alle.

Also das wird ein 16 BIT µC von Motorola.
Genaue Bezeichnung: HC9S12DG256B

Ist also aus Motorolas HCS12 Familie.

Muss eine Motorsteuertung entwickeln, die aus CAN-Daten (Drehwinkel-Sollwert) die Leistungs-H-Brücke eines Gleichstrommotors mit nem PWM Signal so taktet, dass es zu einer Drehwinkelregelung kommt (Regelkreis)
Der µC hat 2 CAN-Module (muss nur ein Treiberbaustein davor gesetzt werden) und 8 PWM Module, die ich über Register ansprechen muss (denke ich).
Wollte eigentlich bevor ich mit dem µC anfange mal so das grobe (also den Steueralgorithmus und das PWM Signal) auf nem Win-PC zum laufen bekommen, um zu trainieren und zu sehen, obs denn geht wie ich es mir vorstelle.

MFG

PS: Was bedeutet eigentlich, wenn ein Beitrag verschoben wurde und wie finde ich heraus, wohin? Oder bin ich hier etwa falsch und muss woanders hin?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.06.2003, 14:03 Uhr
ao

(Operator)



Zitat:
Jogibaer postete
Hallo Forum,
Wie kann ich den seriellen und den parallelen Port unter C ansprechen?
...
Ich benutze Win 98 und MS Visual C++.



Für serielle Ports:

Abgesehen von der Möglichkeit, direkt auf der Hardware rumzufummeln - wovon ich abraten würde (*) - gibts hierfür ein Windows-API. Der Port wird als File geöffnet und dann mit WriteFile und ReadFile beschrieben und ausgelesen. Für die Spezialitäten, die Serielle Ports von Files unterscheiden, gibts noch einige Extras. Siehe MSDN-Hilfe unter Platform SDK / Base Services / File Storage / File I/O für die File-Funktionen und Platform SDK / Base Services / Hardware / Communications Resources für die Port-spezifischen Sachen. Beispielcode ist auch dabei.

(*) Folgende Gründe sprechen dagegen:
1. Es geht nur mit Win95, 98 und ME; falls das Programm mal unter NT / 2000 / XP laufen soll, hast du ein Problem.
2. Diese Arbeit hat sich schon jemand gemacht, und zwar (wahrscheinlich) besser, als du es auf die Schnelle könntest. Konzentriere dich lieber auf deine eigentliche Aufgabe.
3. Serielle Ports sollten zwar eigentlich alle gleich sein, aber manchmal gibt es eben doch kleine aber feine Unterschiede. Glaub mir, damit willst du dich nicht wirklich herumschlagen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.06.2003, 14:05 Uhr
ao

(Operator)



Zitat:
~Jogibaer postete
Muss eine Motorsteuertung entwickeln


Diplomarbeit oder Job?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.06.2003, 14:07 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Hi,
wenn du es nur mal von windows aus testen willst, kannst du das mit leicht mit Assembler machen.
folgender Code setzt dir jede Millisekunde jeden zweiten pin des Parallelports auf 1 und dann wieder auf 0;


C++:
UINT portid,value;
portid =0x0378;


while(true){

value = 0x55;
__asm mov edx,portid;
__asm mov eax,value;
__asm out dx,ax;
Sleep(1);   //wenn du kleiner Zeiteinheiten als Millisecunden brauchst, solltest du dir mal QueryPerformanceFrequency und QueryPerformanceCounter anschauen
value = 0;
__asm mov edx,portid;
__asm mov eax,value;
__asm out dx,ax;
}



Hoffe das hilft

Gruss Heiko
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 06.06.2003 um 14:08 Uhr von Heiko editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.06.2003, 14:30 Uhr
~Jogibaer
Gast


@ ao

weder noch, bin Maschinenbauer (deshalb kaum Ahnung von C, mehr Konstruktion usw.) und arbeite gerade am großen Beleg. Finde das Thema eigentlich sehr interessant, wenns klappt und man vorankommt, hänge aber z.Z. ein bisschen an den grundsätzlichen Sachen rum.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.06.2003, 14:47 Uhr
ao

(Operator)



Zitat:
~Jogibaer postete
Hallo alle.
Wollte eigentlich bevor ich mit dem µC anfange mal so das grobe (also den Steueralgorithmus und das PWM Signal) auf nem Win-PC zum laufen bekommen, um zu trainieren und zu sehen, obs denn geht wie ich es mir vorstelle.



Von der Idee her nicht falsch, aber Windows ist für zeitkritische Anwendungen wie Motorregelungen nicht zu gebrauchen. NT geht noch, aber 98 hat Latenzzeiten jenseits von Gut und Böse. PWM halbwegs zuverlässig aufm Parallelport zu programmieren halte ich für ausgeschlossen.

Gut, du könntest den Regelalgorithmus ohne jede Hardware mit irgendwelchen Testdaten versorgen und aufm PC testen. Fragt sich, wieviel Framework du dazu drumherum basteln mußt, was du hinterher wegwirfst.

Zum Kennenlernen von C ist natürlich ein PC mit VC++ besser geeignet als ein Mikrocontroller, aber auch hier gibts mitunter echt schöne Entwicklungsumgebungen, z.B. bei www.keil.com für 8051 und Konsorten. Wenn du was von dem Kaliber hast und die Remote-Anbindung mit deinem µC-Board gut funktioniert, lohnt sich der Umweg über VC++ vielleicht nur für die allerersten Schritte mit C (meiner Meinung nach).

Viel Erfolg!

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.06.2003, 15:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@ao
Ich habe mal einen Schrittmotor unter win2000 (also nt) angesteuert und musste dafür auch in den unter millisecunden bereich kommen. Das war überhaupt kein problem (habs nur mit auflösungen rund 1/10 ms ) probiert.
Das Singnal sah auf dem oszi gut aus (will sagen die Zeiten haben gepasst).

Ich würde mich also nicht gleich entmutigen lassen.

Wenn man also nicht in den nahen microsecunden bereich muss ist das auch mit windows (zu 98 kann ich da nicht viel sagen) durchaus zu machen. allerdings nur zum testen. Man darf während des ablaufs natürlich keine anderen Applicationen öffnen oder ähnliches machen.

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: