- 12V Akku mit 280 Ah bauen         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: Atmega16 mit pc verbinden?

  1. #21
    Erfahrener Benutzer Roboter-Spezialist Avatar von Thegon
    Registriert seit
    21.01.2011
    Beiträge
    562
    Anzeige

    Praxistest und DIY Projekte
    Ich kenne mich jetzt mit PuTTY nicht aus, als Terminalprogramm kann ich dir HTerm sehr empfehlen, da hat man sozusagen die Vollmacht über seine Schnittstelle einfach mal danach googlen

    Mit HTerm kann man nicht nur ASCII Zeichen Senden, wie bei anderen Terminalprogrammen, sondern auch Hexadezimal, Dezimal, Binär usw.

    Man könnte also immer zwei Zahlen senden, eine ist die Nummer der Variable und die zweite der Inhalt.
    Im Programm des AVR kann man dann abfragen:

    If ersteZahl = 1 then
    'Inhalt in die erste Variable schreiben
    Variable1 = zweiteZahl
    elseif ....
    (Pseudocode)

    Man würde dann per UART die beiden Zahlen "ersteZahl" und "zweiteZahl" einlesen, und dann entscheiden, welche Variable, (im Bsp. Variable1) jetzt "adressiert" wurde oder so. Bei diesem Beispiel handelt es sich um Bytevariablen, weil bei UART imm er ein Byte nach dem anderen gesentet wird, wenn man beispielsweise eine 32bit Zahl übertragen möchte, müsste man halt tricksen.
    Ist jetzt natürlich nur ein minimalistisches Beispiel aber so vom Prinzip her macht man das ja so

    Mfg Thegon

  2. #22
    Erfahrener Benutzer Begeisterter Techniker Avatar von Andre_S
    Registriert seit
    26.06.2005
    Beiträge
    360
    Zitat Zitat von Zardest Beitrag anzeigen
    Hallo

    Ich habe die Platine jetzt fertig sie funktioniert auf einwandfrei mit dem RS232 USB Adapter und die Frage wie kann ich variablen übertragen ich hab mir das so vorgestellt ich tippe den Namen bei putty ein und dahinter die Zahl die in die variable rein soll
    wie muss ich das Programmieren habt ihr da eine Seite oder könnt ihr mir ein Beispiel geben?

    mfg Zardest
    Hallo,

    für die Test's ist ein Terminalprogramm sicherlich ausreichend, aber wolltest Du später nicht "richtig" steuern?

    Eventuell schreibst Du Dir gleich ein passendes Programm. Von MS bekommt man die Visual Studio Express Version kostenfrei hier:
    http://www.microsoft.com/germany/exp...d/default.aspx
    zum Download (Basic; C#; C++)

    Ein paar Daten ohne weiteren Komfort kann man dann in C# in "etwa" so übertragen:
    http://www.mycsharp.de/wbb2/thread.p...3&hilight=COM1

    Geholfen wird Dir sicher auch dabei...
    Welchen Umfang muss das Programm den besitzen, also in welcher Form (wie Auslösen) willst Du die Befehle/Daten (welchen Umfang) mal senden ...


    Gruß André

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    22.03.2012
    Beiträge
    80
    Danke erst einmal

    Ich will eigentlich nur die Variablen auslesen können was ich schon schaffe aber ich will einen wert eingeben und diesen dann in der Variable speichern also im Grunde nur die variablen verändern

  4. #24
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    In welcher Sprache programmierst du den? In Basic macht dieser Befehl sowas:

    Input "Neuer Wert der Variable: " , Variable

    Da erscheint im Terminal der Text zwischen den "" und das was du eingibst wird in der Variable "Variable" gespeichert. Allerdings bleibt das Programm solange stehen bis du was eingegeben hast. Wenn du das nicht möchtest, musst du den Rx Interrupt nutzen.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #25
    Erfahrener Benutzer Begeisterter Techniker Avatar von Andre_S
    Registriert seit
    26.06.2005
    Beiträge
    360
    Zitat Zitat von Zardest Beitrag anzeigen
    Danke erst einmal

    Ich will eigentlich nur die Variablen auslesen können was ich schon schaffe aber ich will einen wert eingeben und diesen dann in der Variable speichern also im Grunde nur die variablen verändern
    Hallo,

    hatte ich schon prinzipiell so verstanden allerdings ist mir zum Zeitpunkt der Umfang noch unklar da Du auch immer wieder von "Variablen" in der Mehrzahl sprichst. Vieleicht noch mal kurz von meiner Seite ein sehr vereinfachtes Beispiel:

    Sollte prinzipiell mehr als ein einzelnes Byte übertragen werden ist es meist sinnvoll, nicht nur bei dynamischen Datenmengen, die Übertragung mit Start und einem Endbyte zu kennzeichnen welche in den Informationen nicht vorkommen , dies vor allen Dingen wenn mehrere Byte’s übertragen werden sollen. Eine Bestätigung in Richtung PC, also Kommunikation, lasse ich mal außen vor. (Ist aber aus meiner Sicht bei vielen Anwendungen sehr wichtig!)

    Überträgst Du allerdings nur einen einzelnen Wert ist der folgende „Aufwand“ nicht nötig und Du musst nicht weiter lesen.

    Wir müssen als erstes unterscheiden ob die Variablenwerte jeweils gemeinsam oder getrennt übertragen werden sollen. Gemeinsam wäre zu Bsp. ein Hexstring mit 5 in der Reihenfolge fest angeordneten Variablenwerten. Im folgenden im Wertebereich 0 – 250. Der Einfachheit halber können wir so Daten/Werte von „FC“ und „FF“ ausschließen und diese für Start- und End-Byte nutzen.
    Beispielstring:

    „FC 33 4A 01 F0 AA FF“

    „FC“ wäre das Start-Byte, dann kommt „Variablenwert_1“ = 0x33 (dez 51),… bis „Variablenwert_5“ = 0xAA (dez 170), und das End-Byte „FF“ zur Orientierung im MC wann die Daten komplett aus dem „Empfangspuffer“ gelesen und verarbeitet werden können.


    Übertragen wir allerdings getrennte Variablenwerte (wie @Thegon schon schrieb) müssen wir den jeweiligen Variablen zur Unterscheidung einen Namen = Wert zuordnen. "Nennen" wir dem Variablenwert_1 = 0x01; usw…, Variablenwert_5 wäre dann 0x05.
    Beispielstring:

    „FC 01 33 FF“

    „FC“ wäre dann wieder das Start-Byte. 0x01 wäre der „Name“ für Variable zwecks Zuordnung zum „Variablenwert_1“ und der folgende Wert wäre also dieser Variablen zugeordnet… usw. Wollen wir nun den Werte „AA“ (dez 170) der „Variablen_5“ übertragen würde der String so aussehen:

    „FF 05 AA FF“


    Je nach Aufgabe musst Du nun noch den Sendevorgang am Computer auslösen oder automatisieren. Das kommt jetzt auf die Aufgabe an. Natürlich auch bei einzelnen wenigen oder gar einem Wert mit „händischer“ Eingabe des selben.


    Deshalb meine Frage, was möchtest Du denn eigentlich genau steuern? Wie viele unterschiedliche Variablen benötigst Du und wie groß sind die entsprechenden Wertebereiche bzw. „Zahlen“? (Byte, Word etc.) Eventuell kannst Du ja der Einfachheit halber ein passendes PC Programm bekommen, dazu wären aber mehr Informationen notwendig.


    Gruß André

  6. #26
    Benutzer Stammmitglied
    Registriert seit
    22.03.2012
    Beiträge
    80
    Also eigentlich will ich nur 5 Variablen verändern
    sind alles integer:

    dim p1 as integer
    dim p2 as integer
    dim p3 as integer
    usw.

    Und nun will ich mit dem pc einfach die werte und den variablen verändern z.b. 1,1023 das wäre dann 1 variable und der wert 1023
    so hab ich es mir vorgestellt

  7. #27
    Erfahrener Benutzer Begeisterter Techniker Avatar von Andre_S
    Registriert seit
    26.06.2005
    Beiträge
    360
    Zitat Zitat von Zardest Beitrag anzeigen
    Also eigentlich will ich nur 5 Variablen verändern
    sind alles integer:

    dim p1 as integer
    dim p2 as integer
    dim p3 as integer
    usw.

    Und nun will ich mit dem pc einfach die werte und den variablen verändern z.b. 1,1023 das wäre dann 1 variable und der wert 1023
    so hab ich es mir vorgestellt
    Hallo,

    das wäre kein Problem...
    Wenn Du Netframework 3.5 auf Deinem Windows Rechner hast kann ich Dir ein Testtool geben:
    Klicke auf die Grafik für eine größere Ansicht

Name:	RS232_senden.jpg
Hits:	8
Größe:	24,0 KB
ID:	22319

    Habe ich gerade mal "zusammengeklickt" und würde wie folgt funktionieren:

    Es erkennt Deine zur Verfügung stehenden Ports beim Start, Du müsstest zuerst die Baudrate (9600 voreigestellt) und anschließend den passenden Port auswählen.
    Danach kannst Du Variable 1 bis 5 auswählen, (1 voreingestellt) den Wert 0-65535 (sind ja immer zwei Bytes,... nur bis 255 würde eins reichen) eingeben und per "senden" in folgendem Format über die Schnittstelle schicken:

    Es wären immer 3 Byte:
    1 byte (Variable) 00-05
    2 Byte High-Byte des Wertes
    3 Byte Low-Byte des Wertes

    Variable 2 mit dem Wert 1023 würde dann folgende Bytes senden:
    "02 03 FF"

    Der Wert 1023 = 3 x High (256) + LOW (255)

    Wenn Du es irgendwie anders brauchst auch kein Problem...
    Allerdings musst Du mit dem AVR ohne mich klar kommen, da ich nur PIC in Assembler programmiere, aber im Forum gibt es ja viele AVR Kundige die da weiterhelfen können.


    Gruß André

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. ATmega16 mit LCD EA DIP122-5NLED verbinden
    Von milanlu im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 24.11.2008, 15:21
  2. AVR via USB mit PC verbinden
    Von NemesisoD im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 29.07.2007, 07:57
  3. 2 avr´s verbinden
    Von Tom K im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 17.12.2006, 21:58
  4. CFK und GFK verbinden
    Von dudenz im Forum Mechanik
    Antworten: 6
    Letzter Beitrag: 23.11.2005, 15:40
  5. ATmega16 u. ATtiny26 Verbinden
    Von Fichte im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 19.04.2004, 02:59

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress