- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 10

Thema: Datenaustausch bei zwei ATMEGA32?

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467

    Datenaustausch bei zwei ATMEGA32?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    ich habe zwei ATMEGA32, die ich über TX und RX verbunden habe (wie wo anders schon beschrieben).
    Jetzt die Frabe:
    Ich möchte von meinem zweiten ATMEGA zum ersten ATMEGA ein Signal schicken, dass beim zweiten ein Taster betätigt wurde und der erste eine LED anschalten soll.
    Wie geht das?
    So?:
    zweiter ATMEGA:
    wenn Taster betätigt, dann print TASTERON

    erster ATMEGA:
    ???????????????????????????,dann mache LED an

    Ich habe keinen Plan ob das so geht, deswegen hoffe ich auf Antworten!

    jon

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    43
    Beiträge
    464
    Dazu brauchst du eine Interruptroutine.
    Jedesmal wenn über RXD was in den Puffer ankommt dann musst du eine String Variable mit vordefinierter Länge befüllen und danach auswerten.
    Das beigefügte Beispiel ist aus meinem Projekt und muss natürlich angepassr werden.
    Ist nur ein Beispiel aber die Vorgehensweise ist gleich.

    Schau ,mal in der Hilfe

    MFG

    Bertl



    Code:
    Enable Interrupts
    Enable Urxc
    On Urxc Onrxd
    Dim S_cmd As String * 4 'für RS232
    Dim B_cmd(5) As Byte At S_cmd Overlay 'Liegt auf der Adresse des Strings s! RS232
    Dim N As Byte 'zähl variable RS232
    
    Main:
    If N > 3 Then 'Wenn String Komplett Empfangen
    Select Case S_cmd
    Case "PC01" '
    Print "MC01";
    Print "|"; ' + Chr(13);
    Porta.4 = 1
    Case "PC99"
    Porta.4 = 0
    Porta.5 = 0
    Case "PC02"
    Porta.5 = 1
    Gosub Messen
    
    Case Else
    Print "MC99"; ' + Chr(13);
    End Select
    N = 0
    S_cmd = " "
    End If
    Goto Main
    
    'Interruptroutine für RS232
    
    Onrxd:
    Incr N
    B_cmd(n) = Udr
    Return

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Zitat Zitat von bertl100
    Schau, mal in der Hilfe
    Was soll das heißen? Wo?
    Bei welcher Sprache?
    Ich programmiere in BASCOM.

    Sonst ist das denke ich einigermaßen klar. Ich werde es jetzt einfach mal ausprobieren und schauen, was passiert.

    jon

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    43
    Beiträge
    464
    Die Bascom Hilfe!!

    Suche nach On

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    32
    Beiträge
    3.467
    Hallo,
    ich habe mir das in der Hilfe mal angeschaut. Nur schlau werde ich daraus auch nicht (meine Englischkenntnisse sind nicht sehr gut).

    Ich fände es schön, wenn jemand mit mir zusammen ein Programm machen könnte, dass ich auch verstehe und verwenden kann.

    Meine Hardware für den zweiten ATMEGA:
    ATMEGA32 mit 16Mhz Quarz und an Pin C0 eine Taster, der an 5V angeschlossen ist.


    Mein Programm vorschlag für den zweiten ATMEGA:

    $regfile="m32def.dat"
    $crystal=16000000
    $baud=9600

    config Pinc.0=Input
    Taster alias Pina.0
    Portc.0=1

    Do
    if taster=0 then

    'Hier weiß ich nicht weiter und bräuchte Hilfe


    loop



    Das war der zweite ATMEGA, ob das so geht und auch so verwendbar ist weiß ich nicht.
    -------------------------------------------------------------------------------------
    Für den ersten ATMEGA habe ich überhaupt keine Idee (außer den Anfangsdefinitionen).

    Hardware des ersten ATMEGA:
    ATMEGA32 mit 16Mhz und an Pin C0 eine LED mit 1kOhm Widerstand

    Mein Anfang:

    $regfile="m32def.dat"
    $crystal=16000000
    $baud=9600

    config Pinc.0=Output

    '????????????????????????????????

    Ich würde mich freuen, wenn mir jemand mir bei meinem Programm helfen könnte, da ich Anfänger bin und kaum Erfahrung habe.

    jon

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    43
    Beiträge
    464
    Wieso machst du am Anfang schon so komplexe Sachen??
    Ich glaube nicht dass irgendjemand in diesem Forum dir ein komplettes Programm schreiben wird.
    Versuch doch zuerst mal die Megas über RS232 an den PC anzuschliessen und diverse LEDs vom Terminal aus zu steuern und verwende PWM und Timer.......................
    Du wirst sicherlich so wie ich Unterstützung bekommen, die Leute hier in diesem Forum sind diesbezüglich SEHR HILFREICH.
    Mach immer kleine Sprünge und du wirst zum Robotervisionär.

    MFG

    Bertl

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    das soll komplex sein ?!

    Ich denke mal, bei nem Tastendruck was über die USART rausschicken und bei nem 2. Mega bei nem USART Interupt mit den entsprechenden Daten was anstellen ist net schwer ....

    zumindest nicht in Assembler :P

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    43
    Beiträge
    464
    Für einen Anfänger wie du dich selbst betitelst schon.
    Anfänger lassen einfach nur LEDs leuchten und schicken an den PC einen String und so.
    Als ich anfing wusste ich nicht wie ich zwei Megas miteinander reden lassen kann.

    MFG

    Bertl

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    43
    Beiträge
    464
    Glaubst du denn dass ein Anfänger den Code den ich hier reingestellt habe einfach so ausdenken kann???
    Das setzt schon einiges an Controller ung Registerkenntnissen voraus.
    Abgesehen davon willst du ja ein bestimmtes Wort übertragen welches vom 2. Mega ausgewertet werden muss. Einfach irgendwas zu senden ist ja kein Problem. Wenn es keinen Unterschied macht ob du "Hello World" oder "Schwigermutter" überträgst dann ist mein Code total übertrieben. Dann brauchst du nur den Befehl "Input" oder so.

    MFG

    Bertl

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    35
    Beiträge
    470
    Tja da muss ich Hanni recht geben,in ASM ist das ein klacks.

    Aber damit du jetzt nicht gleich weinen musst habe ich dir was vorbereitet, ist ja ostern:

    Ich habe dir mal ein kleines Porgramm geschrieben, dass eine LED via RS232 ein/ausschaltet. Zum einschalten der LED musst du nur an den AVR "E" senden und zum ausschalten irgen ein anderes zeichen zb "A" für Aus. Den rest musste selber rausfinden, aber ich denke mit meinem Prog kannste ne menge lernen.

    Code:
    $regfile = "2313def.dat"                                    
    $crystal = 3686400                                          
    $baud = 9600                                                
    
    Dim I As Byte                                               
    
    Ddrd = &B00100000                                           'Pin PD5 Ausgang
    Led Alias Portd.5                                           'LED als Portd.5 festlegen
    
    On Urxc Onrxd                                               'Interrupt-Routine setzen
    Enable Urxc                                                 'Interrupt URXC einschalten
    Enable Interrupts                                           'Interrupts global zulassen
    
    
    '***************************************************
    
    Main:                                                       'Hauptschleife [Endlos]
    
    Goto Main
    
    '***************************************************
    
    
    OnRxD:
      I = Udr                                                   'Byte aus der UART auslesen
      If I = "E" Then                                           'Wenn UART-Byte = E, dann LED an
        Led = 1                                                 'ansonsten aus
      else
        LED = 0
      endif
    Return
    Sorry leute das ich ich mich wieder dabei erwischt habe den AT90S2313 zu benutzen, aber ich hab noch genug von!!! NAja auf M23 umzustellen wird nicht die welt sein.

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad