PC und Atmega8

  • Ich moechte mit VB ein Relais über einen Atmega8 schalten.
    Die com undsw. sind schon bei Programmstart offen.
    Wie muss das im ereignis Buton click aussehen und wo finde ich das dann im Atmel zum auslesen bzw. zum setzen des Ausgangs ( pin 26 oder so ) wieder. Soll ja mit uart und auch i²c gehen habe aber da keine Ahnung vom VB schon ein bischen.
    Danke Reinhard

  • Hallo Reinhard,


    beim VB kann ich Dir nicht helfen, aber beim Atmel kann ich Dir vielleicht weiter helfen.
    Die Atmels kann man sehr gut mit BASCOM-AVR programmieren. Das BASCOM-AVR gibt es als Demoversion im http://WWW. Die Demoversion hat zwar eine Programmbegrenzung von 4kB, aber für den Anfang ist das ausreichend.
    Auf der Seite http://www.roboternetz.de gibt es sehr gute Hilfestellungen, bzw. eine gute Einführung in Sachen BASCOM-AVR und Mega8 usw.
    Ein Programm mit gerade mal 12 Zeilen könnte Deinen Wunsch, ein Relais anzusteuern, erfüllen.
    z.B.
    ------------------------------
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 9600
    Dim In As String * 10
    Config Portc.3 = Output
    Portc.3 = 0
    Do
    Input In
    If In = "ein" Then Portc.3 = 1
    If In = "aus" Then Portc.3 = 0
    Loop
    End
    ------------------------------------


    Mehr ist es nicht.


    73 de Robert

  • Hallo Robert
    Danke für deine Antwort, das Problem mit dem Atmel sehe ich nicht sind ja wirklich nur ein paar spruenge. Das habe ich schon mit den einfachen Befehlen gemacht. Was mir auf dem Magen liegt ist was ich bei VB in die click Anweisung schreiben muss und in welchem Register ich das dann im Atmel auslesen kann bzw. wo ich dann sagen kann nimm den wert ist Knopf 1 und setze pin 26 auf plus.
    Und wenn der zweite gedrückt wurde dann vergleiche und schalte den auf plus und den andern wieder aus. Ich werde mal weiter suchen.
    Danke Reinhard

  • Hallo,


    zunächst, ich programmiere weder VB noch Bascom. Ich werde dennoch versuchen dir zu helfen. Welche Version von VB benutzt du denn? Und wie möchtest du die Kommunikation zwischen den beiden realisieren?


    Marcus

  • Hallo Reinhard,


    ich möchte noch ganz kurz auf das kleine Programm in BASCOM eingehen.
    Der PC sendet über sie COM Schnittstelle mit einer Baudrate von 9600
    das Wort "ein" an den Atmel, der empfängt das Wort und veranlasst das
    am PIN 26 der Pegel auf 5Volt geht. Sendet der PC das Wort "aus" wird
    PIN 26 auf Null gesetzt.
    Wenn Du nun die Sache in VB geregelt bekommst, also das die Worte
    "ein" bzw. "aus" gesendet werden, dann ist doch die Aufgabe gelöst.
    Voraussetzung ist natürlich, das Du eine Möglichkeit hast den Atmel
    zu Programmieren. Der Bascom-Compiler erzeugt eine HEX-Datei, die
    dann in den Atmel rein muss.
    Solltest Du so ein Dings nicht Dein Eigen nennen, dann will ich Dir gern helfen.
    Teile mir mit welche Daten an der seriellen Schnittstelle am Atmel ankommen
    und welcher Pin auf welchen Pegel gehen soll. Ich programmiere Dir dann einen
    Mega8 und schicke ihn Dir zu.


    Hier noch ein Hinweis für das VB-Problem, schau mal hier nach,
    http://www.roboternetz.de/wiss…VB.NET_.28SharpDevelop.29
    das ist sowas ähnliches wie Du es beschreibst.


    73 de Robert

  • Hallo Robert und Marcus
    Danke für eure Mühe. Den Atmel kann ich selber brennen und ich habe auch schon Programme geschrieben. allerdings mit den ganz einfachen befehlen sleep unsw. Das mit dem Programm ist mir schon klar aber ein und aus geht nicht da breuchte ich keinen riesigen atmel. Es sollen später dann noch einige knöpfe dazu kommen. Das das von der 1 oder 2 kommt muss er schon erkennen. Das geht schon mit einem string aber es kommt ja immer auf die richtige schreibweise im VB und auch im Atmel an sonst meckert ja der compiler rum da liegt auch das Problem. Und wie bekomme ich es zum Atmel mit dem UART oder I²C . Ich bin mit meinen fast 60 doch nicht mehr so schnell.hihihihi.
    Danke Reinhard

  • Hallo Reinhard,


    Denk dir einen Befehlsatz aus. Ich würde beispielsweise die Zahlen von 0-255 ( 1Byte) nehmen und jeder Zahl einen Befehl zuordnen. Die Kommunikation zw. PC und Controller ist am einfachsten über den UART zu realisieren. Welches VB benutzt du denn?


    Marcus

  • Hallo Reinhard,


    um die serielle Schnittstelle unter W... anzusprechen, ist die von B. Kainka verwendet RSAPI.DLL zu empfehlen. http://www.b-kainka.de/msrwin.htm


    Die geht für VB, VBA usw. ganz gut.


    Probiers mal damit.
    Viel Spaß

    73. Bernd, DB1BKA
    ______________________________________________________________________________
    "Das Denken gehört zu den größten Vergnügungen der menschlichen Rasse."
    Bert Brecht

  • Hallo Reinhard,


    die von DB1BKA erwähnte .DLL Datei brauchst Du nicht - das hat Visual Basic alles "an Bord".....das serielle Senden geht sogar viel einfacher als Empfangen, da es mit wenigen Basic Zeilen erledigt ist.


    Ich gehe mal davon aus, daß die Hardwareanbindung MEGA8-PC über die RS232 Schnittstelle (UART) bereits funktioniert (Du erwähntest ja auch, dass Du bereits den Atmel programmieren kannst) - richtig ?


    Das heißt Du könntest bereits die "Steuerbefehle" testweise über ein Terminalprogramm (anstelle von VB Software) vom PC zum MC schicken, um die Funktionalität grundsätzlich zu prüfen - richig ? (dies wäre nützlich zur Fehlersuche, bzw. um einige Fehler von vornherein auszuschliessen)


    Bei RS232 Anbindung bietet sich eigentlich nur die Steuerung über Textstrings (oder 1 Byte, wie vom Vorschreiber vorgeschlagen) an, denn das ist am einfachsten zu realisieren. Bei maximal 8 Steuerleitungen könnte man auch über den Parallelport gehen und direkt Relais ansteuern und sich den MC sparen.


    In Visual Basic wird die serielle Schnittstelle relativ einfach über das MSCOMM Control angesprochen (zumindest bis Version 6.0). Das COM Control Werkzeug musst Du auf deine Form (Programmfenster) ziehen und ist nur in der Entwicklungsumgebung sichtbar (unsichtbar im Hintergrund während der Laufzeit).


    Lese Dir dazu doch einfach mal die Visual Basic Hilfe Datei durch.....die hilft meistens auch mit Basic Code Beispielen weiter und man kommt sehr schnell dahinter wie es geht. Man braucht nur wenige Zeilen Code mit dem Button Click Event zu kombinieren um den gewünschten vorgesehenen String über die RS232 Schnittstelle auszusenden.


    Siehe ein Beispiel hier (mit Google findet man dutzende solcher Beispiele, wenn man nach den Begriffen "Visual Basic MSCOMM Daten senden" sucht)


    z.B. hier auf Deutsch:


    http://www.vbarchiv.net/tipps/details.php?id=393


    Viel Glück,


    Oscar DJ0MY