Autor |
AVR PC verbindung, hab kein peil... |
|
|
|
|
BID = 102270
MinceR Stammposter
Beiträge: 277
|
|
hallo zusammen,
bin noch ziemlich neu hier und hoffe ich bin hier mit der frage richtig.
also ich bin in sachen AVR kein anfänger mehr, aber in sachen pc proggn ein ziemlicher dummie..
hintergrund:
ich möchte eine schaltung bauen die ich in mein mopped einsetze und dann messwerte ermittelt. öltemperatur, motortemperatur, km/h bzw umdrehung der reifen pro sekunde(is in assembler einfacher), und rpm des motors. das soll der µC in xx zeit abständen messen und am liebsten im sram lassen. (3V batteriebetrieb) zur not pack ichs auch ins eeprom..
dann möchte ich das ganze nach einer ausgibigen fahrt in meinen pc übertragen und auswerten lassen.
hier mein eigentliches problem:
also das messen usw in xx abständen usw ist alles kein problem, krieg ich locker flockig hin. nur die datenübertragung. wollte die platine so bauen und das proggi so schreiben das ich einen schalter betätige, daraufhin rödelt das µC proggi nur in einem unterprogramm rum zur übertragung..
ich hab visual basic mal gelernt und kann damit ein bisschen umgehen. also ein diagramm erstellen und die daten vorher fürs diagramm aufbereiten ist kein ding.
nur wie krieg ich die daten am besten da rein? ein traum wäre wenn mir einer einfach sagen könnte wie ich in VB einzelne pinne im lpt auf 0/1 ziehen kann und einen weiteren auslesen kann.
(bräuchte 2 ausgänge und 1 eingang, angelehnt das ganze an den I2C bus, aber möchte ich selber entwickeln. hab mich davon nur inspirieren lassen.. ).
aber vielleicht wisst ihr noch was einfacheres oder könnt mir irgendwie anders helfen.
was noch sein sollte, am liebsten wäre mir keine zusätlichen ICs für die datenübertragung. kleinleistungstransistoren hab ich genug hier, aber irgendwelche "speziellen" ics nicht... :(
MfG MinceR |
|
BID = 102272
MinceR Stammposter
Beiträge: 277
|
|
ach, ich hab bis jetzt alle messwerte im eeprom gespeichert und mit meinem programmiergerät mir die hex datei ausgelesen.
möchte aber nun eine richtige komunikation um nacher auch einfach gesagt dem µC befehle zu geben. z.b. VB proggi öffnen knopf drücken damit der µC den befehl "blablablupp" bekommt um pinX am portY auf 0 oder so zu schalten. |
|
BID = 102317
Henne02 Stammposter
Beiträge: 493 Wohnort: Aachen
|
...blub? ??
Hendrik
|
BID = 102321
Midnight Stammposter
Beiträge: 256
|
Also ich habe bisher nur etfernt ähnliche Dinge realisiert, deswegen muß ich etwas theoretisch bleiben.
Zum ersten: warum möchtest Du das ganze per Parallelport machen, Dir Protokolle überlegen usw. Jeder AVR hat ne serielle, die Protokolle sind daher genormt, und bieten sich ja nun förmlich an. Fehlt halt nur nen Pegelwandler (MAX-232).
Vorteil wäre noch das man die Serielle auch als Interruptquelle nutzen kann, und somit der AVR in der Unterroutine von selbst anfangen würde zu plaudern sobald Dein VB Programm ihn anspricht so wie Du das auch willst.
Zum zweiten Problem, was damit wesentlich einfacher würde: Der AVR fängt dann in der Unterroutine einfach der Reihe nach an jedes Byte aus Deinem SRAM/EEPROM zu übertragen. (Falls es einfacher wird kannst Du da noch Kommas oder sonstwas anhängen um die einzelnen Datensätze zu trennen, Reihenfolge und art der Daten wie Strings, Integer usw. weißt Du dann auch).
Dein VB Programm plottet die Daten erst einmal nur mit, und legt sie ab (falls Du vorher weißt was kommt, dann schon in entsprechende Variablen). Das Programm muß dann nur noch die Daten interpretieren, und entsprechend Deinen Wünschen auswerten (Verbrauchskurven oder was Dir sonst noch so vorschwebt).
Gruß
Simon
|
BID = 102354
ERDI-Soft Stammposter
Beiträge: 200 Wohnort: Offenburg
|
Würde das auch über die serielle erledigen. Schließlich hat die der AVR schon in Hardware implementiert. Da reichen ein paar einfache Befehle, um die in Gang zu setzen.
Wenn du dann ein VB-Programm oder ähnliches dazu schreibst (darfst mich jetzt aber nicht fragen, wie man die serielle in VB anspricht, hab ich noch nicht gemacht), dann sendet das Programm so ne Art Ping an den Controller, und der merkt dann per Interrupt (den ja die serielle des Controllers bei Empfang eines Zeichens auslöst, sofern der aktiviert wurde), dass das Programm aktiv ist und schickt dann die Daten automatisch Stück für Stück an das VB-Programm.
_________________
Wie immer gilt: Erst googeln, dann fragen!
(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.)
|
BID = 102391
Jornbyte Moderator
Beiträge: 7178
|
Ja, seriell. Dazu gib es hier in diesem Forum auch ein paar Beispiele. Mal suchen.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 102394
MinceR Stammposter
Beiträge: 277
|
das problem ist ja wie gesagt nicht so sehr irgendein standart sondern allgemein das auswerten durch VB.
[ Diese Nachricht wurde geändert von: MinceR am 16 Sep 2004 1:37 ]
|
BID = 102443
ERDI-Soft Stammposter
Beiträge: 200 Wohnort: Offenburg
|
Solange du nicht weißt, WIE du die Daten übertragen willst, kann dir auch keiner dabei helfen, wie du das mit VB auswerten kannst.
_________________
Wie immer gilt: Erst googeln, dann fragen!
(Für ICQ bitte erst Anfrage per PM, da alles andere nicht angenommen wird.)
|
BID = 102579
MinceR Stammposter
Beiträge: 277
|
ich wollte die daten syncron übertragen. also nicht mithilfe des uarts sondern wie gesagt was eigenes.
ich hab mich warscheinlich falsch ausgedrückt. mein problem ist das auslesen und das setzen des ports mit hilfe von VB. also ein proggi das mir einfach den zustand des LPT mitteilt und setzt krieg ich nicht hin..
ich hab heute morgen was gefunden das inpout32.dll heisst.
ist leider nur für win95 aber ich denke es wäre genau das richtige.. wenn ich das in mein VB projekt einbinde kann ich mit den befehlen
out adresse wert den port setzen
und mit
in adresse auslesen...
aber ich hab xp :(
|
BID = 102608
Futzel Neu hier
Beiträge: 38
|
|
BID = 103160
MinceR Stammposter
Beiträge: 277
|
jou super, sowas in der richtung hab ich gesucht. bin momentan aber mit meinem pc am kämpfen. wollte SP2 installieren da mir das aber zuviel wurde mit isdn hab ich abgebrochen. nu erscheint sobald ich ein microsoft proggi starte die fehlermeldung das ich ein servicepack installation abgebrochen habe und kann nix mehr machen(weder start, noch neuinstallation von VB, office oder sonstiges)..
der absolute oberscheiss.. hab ich ja noch nie erlebt...
ach das mit dem mopped wurde auf eis gelegt. bin seit 2 tagen im slotcar-racing fieber. werde wohl mein eigenes rennteam gründen und versuchen ein berühmter rennfahrer zu werden. um zu beweisen das ich hier in der gegend der schnellste rennfahrer bin werde ich einen rundenzeitnehmer für slotcars bauen
|
BID = 103789
MinceR Stammposter
Beiträge: 277
|
hallo zusammen.
es klappt es klappt.. also das rein und rauskriegen in VB.
hab die inpout32.dll ins system32 kopiert und in VB das modul inpout.bas eingefügt.
nu kann ich das byte das ausgegeben werden soll eingeben und krieg gleichzeitig den wert den ich an den eingängen liegen hab als binärcode mitgeteilt.
hab das ganze in VB für aplications gemacht weil ich die ausgewerteten daten in meine excel tabellen kriegen will. wie das ging hab ich zwar vergessen aber das krieg ich spätestens morgen raus. einzig blöde ist das das VBA keinen timer hat. muss wohl über die systemzeit gehen um nen anständigen clock hinzkriegen... :(
werd bis mi bestimmt die beta meines übertragungsproggis fertig haben und dann natürlich sehr stolz hier presentieren..
also danke für eure tipps..
MfG MinceR
|
BID = 106793
MinceR Stammposter
Beiträge: 277
|
hallo zusammen,
ich hab ein problem. ich fersuche einen clock hinzukriegen aber ich komm irgendwie nicht an eine ordentliche zeitnahme.
also ich möchte einen ausgang immer zu einer bestimmten zeit ein und ausschalten. zuerst hab ich es geschafft mit der time funktion einen tackt in 1 sekunde hinzukriegen.
einfach mal erklärt:
schleifenanfang..
variable= second(time)
solange wie variable sich nicht endert gehe zur schleife.
clock ausgeben
abbruchbedingung zum schleife nach xx sekunden zu beenden.
zurück zu schleifenanfang.
da ich so nur 0.5 Hz hinkriege ist das ein bissl scheisse
so das ganze nun mit (timer) statt time gemacht. timer ändert sich genau 64 mal pro sekunde.. also würde diese schleife den clock ein/aus schaltet ich einen clock hinkriegen der 32 nal pro sekunde 1 ist. das wären also 32bit/s die ich senden/empfangen könnte. da pro 8 bit 8 adressbits+befehlbits hinzukommen sind das ganze 16 datenbits pro sekunde.
heisst also ich würde wenn ich 100 datenbytes senden empfangen möchte brauch ich ganze 50 sekunden....
lange rede kurzer sinn.. kennt wer eine funktion mitdessen hilfe ich zeit in ms messen kann oder wie ich irgendwie an eine zeit rankomme die sich öfter ändert als 64 mal pro sekunde?
ich hab mir schon überlegt den clock per µC laufen zu lassen, aber das ist auch quatsch weil im µC so wenig resourcen wie möglich genutzt werden sollen.
|