- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: ATMega8 -- PC: RS232

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.01.2006
    Ort
    Kirchdorf a. Inn
    Alter
    53
    Beiträge
    81

    ATMega8 -- PC: RS232

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,

    als Anfänger tu ich mich mit dem Datenaustauch vom Mega8 über RS232 zum PC noch etwas schwer.
    Wenn ich per Terminal ein Zeichen zum µC schicke, dort darauf warte und wiederum zum PC zurückschicke, kommts auch richtig an. Schicke ich jedoch per print-Befehl nur vom µC zum PC, kommt eigentlich nur Müll an. Einstellungen: 9600, 8, N, 1. Externer Quarz. Kann mir da jemand helfen?

    Ich möchte einfach größere aufgezeichnete Datenmengen "auf Knopfdruck" auslesen und auswerten.
    Hat vielleicht jemand ein Beispiel auf PC-Seite/µC (VB/Bascom) um ein bisschen mehr Einblick zu bekommen? Dass ich den COM-Port öffnen und dann einlesen muss, usw. weiss ich ja, aber was noch???

    wassermann

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    bravo, dreimal das gleiche thema erstellt ....

    tu mal deinen quellcode posten, dann kann dir sicher geholfen werden.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    24.01.2006
    Ort
    Kirchdorf a. Inn
    Alter
    53
    Beiträge
    81
    sorry für die dumme frage: post=attachment??
    deshalb ausnahmsweise hier.
    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000                                          ' used crystal frequency
    $baud = 9600                                                ' use baud rate
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 40                                               ' default use 10 for the SW stack
    $framesize = 50                                             ' default use 40 for the frame space
    
    Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Postd.5
    
    Config Lcd = 16 * 4
    
    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    
    Dim A As Byte
    Dim Text As String * 15
    Dim Laenge As Integer
    
    Text = "asd"
    Laenge = Len(text)
    
    Cls
    
    
    Config Serialout = Buffered , Size = 20
    
    Enable Interrupts
    
    
    Print "abcd";
    
    Do
     A = Waitkey()
     Print A
     Cls
     Locate 1 , 1
     Lcd A
    Loop
    End

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    40
    Beiträge
    40
    hey!

    wenn ich das richtig sehe geht es dir um den ausdruck der nicht ankommt
    Print "abcd";
    nehme mal das ; weg dann sollte es eigendlich gehen.

    gruß Nico
    Wer Rechtschreibfehler findet, darf sie behalten.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.01.2006
    Ort
    Kirchdorf a. Inn
    Alter
    53
    Beiträge
    81
    Ja es geht um den print-Befehl. Der Rest ist nur zum Test am LCD. Wenn ich's richtig verstanden habe, dann ist das ; ja nur für's CR/LF.
    Auch ohne seh ich nicht meinen gewünschten Text.
    Vielleicht liegt's auch am Steckbrett, da ich bei einer max-Wert-Erfassung per Interrupt um den Nulldurchgang des Signales auch ein Problem habe.
    Ab und zu kommt's auch zu einem nicht gewollten Reset.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.11.2005
    Beiträge
    321
    ....da ich bei einer max-Wert-Erfassung per Interrupt um den Nulldurchgang des Signales auch ein Problem habe....

    sag mal, verstehst du deinen eigenen text den du da geschrieben hast überhaupt? der kann technisch überhaupt nicht hinhauen.

    warum schreibt ihr keinen eigenen programme und kennt nur die copy- und paste-taste.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    23.02.2006
    Beiträge
    40
    Hast du daran gedacht die Fuse-Bits von deinem M8
    auf externen Quartz umzustellen, sonst hast du nur
    1 Mhz Takt und dann stimmt die Baud-rate nicht

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    24.01.2006
    Ort
    Kirchdorf a. Inn
    Alter
    53
    Beiträge
    81
    @super_castle:
    Danke für deine tolle Hilfe. Aber ein externes Signal (z.B. Analogwert/Wechselspg) abtasten ist allemal hilfreich in definierten Zeitintervallen ... also Interrupt. Ich bin zwar Anfänger bei den µC, aber meistens nicht ganz dumm ...

    @jojo3:
    Letzter Eintrag in der Liste, oder? Werd's nochmal kontrollieren...
    Hast du auf der PC-Seite schon mal die Ausleserei programmiert?
    Danke.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    23.02.2006
    Beiträge
    40
    Ich hab das mal in Excel gemacht.
    Man kann da ein Visul-Basic Macro erstellen;
    bisher hab ich es aber leider nicht geschafft die
    Serielle Schnittstelle "richtig" zu initialisieren.
    D.H. man muss mal kurz z.B Hyperterminal starten
    und wieder beenden.
    Beim richtigen VB6 klappts besser mit MSComm Steuerelement

    in excel gehts zb. so:
    (mag nicht professionell sein, funktioniert aber, hab damit mal
    einen AVR ausgelesen der als Daten-Logger fungierte)

    Was mir bei deinem Programm noch auffällt, lass mal testweise
    den serialbuffer weg, damit hatte ich mit bestimmten Konstellationen
    auch schon mal Probleme.
    Und geht das LCD wirklich mit: Db7 = Postd.5 statt Portd.5 ?

    Ich hoffe das mit dem Anhang hat geklappt

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    ....da ich bei einer max-Wert-Erfassung per Interrupt um den Nulldurchgang des Signales auch ein Problem habe....

    ich vermute mal er macht per Timer alle paar ms ne ad-wandlung um
    den Nulldurchgang einer Analogspannung zu messen ...
    ich vermute mal er hat schon gesehen, dass er mit dem
    integrierten ADC am Mega keine negativen Spannungen messen kann?

    Oder hat er gleichspannung entkoppelt und ne Mittenspannung angelegt
    wo er dann den Wechselanteil drüber legt?

    naja, wird wohl so sein, aber wofür er das hier drinn hat weiß ich nicht:

    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

    hat doch $baud gesetzt ...

    wenn die UART mist sendet hats idR Fehler bei entweder:
    a Einstellung des Terminalprogrammes
    b falsche Fuse-Einstellung für Taktrate des AVR
    c falsche Frequenzangabe ($crystal)
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests