An die Experten unter euch , es stellt sich folgendes Problem: Ich habe ein MyAVR Board light mit dem ATmega8 und Programiere mit dem AVR Studio 4 in Assembler und der m8def.inc . An den Controller sind 3 Sensoren angeschlossen : - Thermometer - Barometer - Gabellichtschranke In Assembler habe ich keine Probleme die Werte zu erfassen nur in VB habe ich nur Grundlagen Erfahrung und nun auch keine Zeit mich dort bis zu diesem Punkt Stück für Stück vor zu arbeiten. Ich brauche Hilfe bei : - Die Daten der Sensoren an den PC senden (mC per USB angeschlossen und per Treiber als COM3 erkannt) - Einzelne Daten an den mC vom PC senden wie Interrupts o-Ä Ich hoffe die Problematik ist nun zu erkennen. Ich bedanke mich für jede helfende Hand ! Lg
In welcher Form werden die Daten denn per serieller Schnittstelle übertragen? reicht vielleicht erst mal ein Terminalprogramm wie hTerm zum erkennen der Daten? Eine Anleitung, wie die serielle Schnittstelle unter VB anzusprechen ist, findet man vermutlich im Internet (Microsoft-Seite?!).
Wie man mit der seriellen Schnittstelle unter Visual Basic umgeht, dazu findet man viele Beispiele im Internet, z. B. hier: http://msdn.microsoft.com/en-us/library/7ya7y41k.aspx Zunächst musst Du Dir ein Protokoll überlegen, d. h. wie die Daten zwischen µC und PC "verpackt" werden. Beispiel: - Übertragung über den UART mit 115,2 kBaud, 8 Datenbits, 1 Stopbit, kein Paritätsbit. - Frame-Aufbau: 0xFF 0xFF [Datenbyte Thermometer] [Byte Barometer] [Byte Lichtschranke] [Byte für Ereignisse, z. B. Interrupt] [Prüfsummen-Byte] - Das Frame wird z. B. einmal alle 10ms vom µC gesendet. - Der PC erkennt ein gültiges Frame, wenn die notwendige Anzahl an Bytes empfangen wurde und das Prüfsummen-Byte korrekt ist. - Der PC hat z. B. einen Time-Out von 1ms, d. h. wenn noch Bytes für ein vollständiges Frame fehlen und für 1ms nichts empfangen wird, wird das Frame verworfen. Da bei Dir die Daten nur in eine Richtung (µC -> PC) "fließen" sollen, wäre das so völlig ausreichend. Alternativ könnte man z. B. über ein Protokoll nachdenken, bei dem der "Master" (= PC) zyklisch den "Slave" (= µC) pollt, d. h. einen "Request" schickt, den der Slave dann mit einem "Response" beantwortet. Hierbei würde ich mich aus dem Bauch heraus der Einfachheit halber an den Frameaufbau des LIN-Busses (bitte googlen) anlehnen, d. h. der Master sendet z. B. so etwas: [Sync-Byte (0x55)] [Message Identifier] Und der Slave antwortet mit seinen Daten (+ Prüfbyte). Damit könnten durch den Message Identifier die Daten in unterschiedliche Messages aufgeteilt werden. Vorteil wäre die Verringerung der Brutto-Datenrate, wenn unterschiedliche Daten mit unterschiedlicher Frequenz gepollt werden sollen (z. B. Daten vom Interrupt einmal je ms und Temperaturwert einmal alle 100ms). Außerdem könnten so auch Daten vom PC zum µC übertragen werden... Was Du letztendlich brauchst, musst Du jedoch selbst entscheiden.
BESTEN DANK ! Diese Grundlagen haben gefehlt. Super Forum !
Hallo Jan, um das Programmieren in Assembler zu erlernen, habe ich mal ein Programm für den Atmega8 geschrieben, damals in SiSy, heute benutze ich auch Studio 4. Es gibt ein paar Unterschiede, z.B. "equ." Variable --> "def." Variable. Das Programm kommuniziert mit einem in VB6 geschriebenen Programm. Beide findest Du im Anhang. Die Hardware ist im Kopf des Assembler-Programms hoffendlich ausreichend genau beschrieben. Ich habe einen MAX232 benutzt und keinen RS232-USB Umsetzer, weil ich noch einen PC mit einer 9poligen COM Steckdose besitze. Es funktioniert aber auch mit einem solchen Umsetzer. Alle 256 ASKII Zeichen können sowohl vom PC wie auch vom µC gesendet wie auch empfangen werden. Die Komponente comTest (rechts unten in der Form) muß entfernt und wieder vom Computer, der es benutzen wird, eingefügt werden, jedenfalls nach meiner Erfahrung. Zum leichten Einstieg: Klick das Option Button <txtSend> an, dann das Command Button <Man>. Damit werden die ASKIIs 0 bis 255 in die entsprechenden Textfelder geschrieben. Danach bitte alles ausprobieren. Man kann schön damit spielen. Eine Anleitung zu allen Funktionen gibts (noch) nicht. Für weitere Hifen: rodo38@t-online.de Ich würde mich freuen, wenn es Dir ein Wenig weiterhilft. MfG Klaus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.