-         

Ergebnis 1 bis 9 von 9

Thema: Eeprom speichern/lesen und über uart daten an excel senden

  1. #1
    Neuer Benutzer
    Registriert seit
    01.05.2008
    Alter
    29
    Beiträge
    2

    Eeprom speichern/lesen und über uart daten an excel senden

    Anzeige

    Hallo zusammen,
    ich bin in Sachen Microcontroller ein ziehmlicher Neuling, habe mich aber in letzer Zeit stark damit beschäftig und komme bei ein paar Problemen einfach nicht weiter.

    Somit ersuche ich die Hilfe der Alwissenden

    Grundsätzlich geht es darum, dass ich eine Spannung messe, diese im Eeprom speichere, sie später am PC wieder aus dem Eeprom auslese und dann über ein Hyperterminal(denke es geht nur so, habe Hterm probiert) an Exel übertrage bzw in eine Exel datei speichere.

    Ich verwende einen Atmega8 mit 512Bytes EEprom--> 512*8 = 4096bit = 4kbit, also müsste der Eeprom vom Typ 24C04 sein.

    mein Grundcode mitdem ich die Spannung messe, was auch gut klappt.
    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    
    
    
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 16 * 2
    
    
    Admux = &B01100000                                          'ADC Data Register nach links justieren, ADC0 als Input
    Adcsra = &B11100100                                         'ADC aktiv, dauerhafte Messung, Freeruning Modus,Teilungsfaktor 16
    
    Dim Voltbit As Byte
    Dim Volt As Single
    
    Cls
    Do
       Voltbit = Adch                                           'kein ADCL auslesen--> 8bit ergebnis--> besser im Eeprom speicherbar
       Volt = 5 / 256
       Volt = Volt * Voltbit
       Lcd Voltbit
       Lowerline
       Lcd "U= " ; Fusing(volt , "#.##") ; "V"
       Waitms 200
       Cls
    
    Loop
    Werte Testweise ins Eeprom schreiben und auslesen (funktioniert nicht )

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 9600
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 16 * 2
    
       'SDA und SCL definieren
    Config Sda = Portb.0
    Config Scl = Portb.1
    
    
    Admux = &B01100000                                          'ADC Data Register nach links justieren, ADC0 als Input
    Adcsra = &B11100100                                         'ADC aktiv, dauerhafte Messung, Freeruning Modus,Teilungsfaktor 16
    
    Dim Voltbit As Byte
    Dim Volt As Single
    
    Dim A As Byte
    Dim B As Byte
    Dim Ausgabe As Byte
    
    Cls
    Do
     For A = 1 To 10
    
    
       Voltbit = Adch                                           'kein ADCL auslesen--> 8bit ergebnis--> besser im Eeprom speicherbar
       Volt = 5 / 256
       Volt = Volt * Voltbit
       'Lcd Voltbit
       'Lowerline
       'Lcd "U= " ; Fusing(volt , "#.##") ; "V"
    
    
    
    '---- schreibe in EEprom ----
                                                               '1 bis Überlauf zählen
    I2cstart                                                    'Start I2C
    I2cwbyte &HA0                                               'Sende Slave Adresse
    I2cwbyte A                                                  'Sende Speicheradresse
    I2cwbyte Voltbit                                            'Sende Wert
    I2cstop                                                     'Stop I2C
    Waitms 10                                                   'warte 10ms
    
    
    Lcd " " ; Voltbit ; "ins Eeprom  "                          ' Ausgabe der geschriebenen Werte am LCD
    Waitms 500
    Next A
    
    '--- lesen vom EEprom ----
    For B = 1 To 10
    
    I2cstart                                                    'Start I2C
    I2cwbyte &HA0                                               'sende Slave Adresse
    I2cwbyte B                                                  'sende Speicheradresse
    
    I2cstart                                                    'Start I2C
    I2cwbyte &HA1                                               'sende Slave Adresse +1 für Lesen
    I2crbyte Ausgabe , Nack                                     'lese Adresse vom EEprom
    I2cstop                                                     'Stop I2C
    
    
    Lowerline
    Lcd " " ; Ausgabe ; "aus dem Eeprom gelesen "               'Ausgabe der EEprom Werte
    Waitms 500
    Next B
    
    
    Loop
    Beim Schreiben/lesen des EEprom hab ich noch meine Probleme.
    Hier zu meinen fragen..

    'SDA und SCL definieren
    Config Sda = Portb.0
    Config Scl = Portb.1

    müssen sich diese Befehle genau auf die Ports beziehen, die am MC mit sda,sdl gekenntzeichnet sind?

    ---------------------------------------
    I2cwbyte 0 'H address of EEPROM
    I2cwbyte 0 'L address of EEPROM
    Was muss ich für Highadress und Lowaddress eingeben(würde mir komisch vorkommen, wenn der wert egal wäre), bzw brauche ich das beim 24C04 überhaupt?

    --------------------------------------


    Mit welchem Hyperterminal Programm ist es möglich die per Print befehlt über den UART zum PC gesendeten werte am besten direkt in eine exeltabelle umzusetzen?

    ----------------------------------------
    Ich habe vor, per Taster die Messung der Spannungswerte und das Schreiben in den Eeprom beginnt, per Taster wieder beendet wird und mit einem andern Taster die Daten aus dem EEprom gelesen und per Print an den PC geschick werden.

    Wie regel ich es am besten, dass nur soviele Werte ausgelesen werden, wie auch reingeschrieben werden?

    Gedankengang:Es wird gezählt wie viele Werte geschrieben wurden, diese Anzahl wird an eine bestimmte Speicherstelle(z.B. die erste im eeprom) geschrieben. Diese wird nun ausgelesen und genau so viele weitere Werte ausgelesen wie es der Inhalt der Stelle besagt.

    Ich hoffe das Ihr ein paar hilfreiche Tipss für mich habt



    MFG MAX[/code]

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    Naja wenn Du in den internen EEPROM schreiben willst wie kommst Du darauf das es ein 24C04 sein soll nur weil der die gleiche Speichergröße hat.

    Schaue mal nach den Befehlen

    WRITEEEPROM
    READEEPROM
    oder auch "Dim A As Eram Byte "
    Signatur??? kann ich mir nicht leisten!!!

  3. #3
    Neuer Benutzer
    Registriert seit
    01.05.2008
    Alter
    29
    Beiträge
    2
    hat jemand vielleicht einen Tipp wie ich die Daten am besten in Excel bekomme?

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    mit visual basic ein kleines programm schreiben

    serialport1.open()
    serialport1.readbyte()
    ...
    serialport1.close()

    musst dich halt ein bissel einlesen, sollte aber schnell machbar sein

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    10.04.2008
    Ort
    Reit im Winkl
    Beiträge
    16
    Hallo Max,

    anbei eine kleine Tabelle in VBA mit Eventsteuerung, es werden also immer
    die Daten am COMport ausgelesen sobald welche im Buffer sind.
    Ich habe auch lange noch so was gesucht.

    Du musst nur das "NETComm.ocx" in dein VAB einbinden. Da findest du daber genug im Netz. Gruß Ronny.


    P.S.
    Und noch was zum EEPROM von mir.

    Code:
    ' Die gemessene Spannung wird in der Variablen W gespeichert.
    ' Channel ist der Pin, an dem die Spannung gemessen werden soll.
    $regfile = "m32def.dat"
    $crystal = 3686400
    $baud = 9600
    
    Config Adc = Single , Prescaler = Auto
    Start Adc
    
    Config Pinb.0 = Input
    Portb.0 = 1
    
    Dim W As Word , T As Single , T2 As Byte , Z As Integer , Z2 As Integer
    
    Do
    W = Getadc(0 , 20)
    Z = Z + 2
    Writeeeprom W , Z                                           'ADC 0 Adresse 2
    
    W = Getadc(1)
    Z = Z + 2
    Writeeeprom W , Z                                           'ADC 1 Adresse 4
    
    W = Getadc(2)
    Z = Z + 2
    Writeeeprom W , Z                                           'ADC 2 Adresse 6
    
    W = Getadc(3)
    Z = Z + 2
    Writeeeprom W , Z                                           'ADC 3 Adresse 8
    
    W = Getadc(4)
    Z = Z + 2
    Writeeeprom W , Z                                           'ADC 4 Adresse 10
    
    W = Getadc(5)
    Z = Z + 2
    Writeeeprom W , Z                                           'ADC 5 Adresse 12
    
    W = Getadc(6)
    Z = Z + 2
    Writeeeprom W , Z                                           'ADC 6 Adresse 14
    
    W = Getadc(7)
    Z = Z + 2
    Writeeeprom W , Z                                           'ADC 7 Adresse 16
    
    
    
    Z2 = Z
    
    
    If Pinb.0 = 0 Then
    For Z = 2 To Z2 Step 2
    Readeeprom W , Z
    Print W
    Waitms 100                                                  'sehr wichtig, sonst kommt Excel nicht mit dem Auslesen nach
    Next Z
    Z = 0
    Z2 = 0
    End If
    
    Wait 1
    
    Loop
    End
    Angehängte Dateien Angehängte Dateien

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2004
    Ort
    Thüringen
    Beiträge
    133
    Hallo Ronny81,

    kannste mir das mal genauer erklären, wie das mit Excel geht? Suche da schon seit Monaten. Egal, was ich bei den beiden Downloads anklicke, es kommen immer nur Fehlermeldungen.

    Habe leider keine Informatik studiert, ist mir zu hoch. Gibt es etwas, was man einfach nur anwenden kann???

    Danke, Andreas

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    10.04.2008
    Ort
    Reit im Winkl
    Beiträge
    16
    Hallo Andreas,

    ich habe auch nur Heizungsbauer gelernt .
    Man muss eben viel suchen und lesen, dann geht alles!
    Also die Downloads funktionieren sicher!
    Einfach rechte Maustaste "Ziel speichern unter" uns los.


    Bevor du Excel mit dem VBA startest (meine RS232 Mappe) musst du
    das Netcomm in VBA einbinden.

    http://www.office-loesung.de/ftopic131739_0_0_asc.php

    http://www.google.com/cse?cx=0063819...&cof=FORID%3A0

    Mach es so:
    http://www.herber.de/forum/archiv/648to652/t650026.htm

    einfach nur so geht es am PC leider nunmal nicht

    Gruß Ronny

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    10.04.2008
    Ort
    Reit im Winkl
    Beiträge
    16
    P.S. hätte ich bald vergessen.
    Du muss "MSCOMM32.OCX" auch auf deinem System einbinden damit
    "NETComm.ocx" funktioniert.
    Verwenden kannst du aber dann nur "NETComm.ocx".

    "MSCOMM32.OCX" ist kostenpflichtig und läuft nur wenn du VB auf dem PC hast.

    Gruß Ronny
    Angehängte Dateien Angehängte Dateien

  9. #9
    Hi eistee,
    im AVR Geschäft bin ich ja recht neu. Habe bisher mit C-Control gearbeitet.
    Für C-Control hat B. Kainka ein Buch geschrieben. Messen Steuern Regeln mit Word und Excel. Er verwendet hier zur Datenübertragung eine Dll namens RSAPI.dll. Mit dieser habe ich alle meine Daten von C-Control in Excel und Excel-VBA übertragen. Auf seiner Home page habe ich auch schon eine Rsapi für xp gesehen. Einfach mal googeln und wenns nichts wird mail an mich
    mfg.juli

Berechtigungen

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