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.
Werte Testweise ins Eeprom schreiben und auslesen (funktioniert nichtCode:$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)
Beim Schreiben/lesen des EEprom hab ich noch meine Probleme.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
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]







Zitieren
Lesezeichen