Werbung
Das war ich. Im Datenblatt unter "quasi-bidirectional I/O" findet man beide sich ergänzende Aussagen: Zum einen sind alle Ports nach dem PowerUp per default High und damit Input-fähig; das trifft deinen Fall. Zum anderen sind Anwendungen denkbar, bei denen ein Port z.B. sowohl eine LED treiben als auch (zeitversetzt !) einen Schalter lesen soll. Dann gilt das Gesagte zum expliziten H-setzen.
Und das wollte ich ja nichtbei denen ein Port z.B. sowohl eine LED treiben als auch (zeitversetzt !) einen Schalter lesen soll. Dann gilt das Gesagte zum expliziten H-setzen.![]()
So, ich habe jetzt mal mit dem 24C16 einen kleinen Datenlogger für LDR Messwerte gebaut.
Das Aufnehmen der Messwerte klappt auch schon, doch kann ich sie weder abspielen, noch, wenn ich den Conroller wieder einschalte neu beschreiben. Also ich kann es nur einmal beschreiben. Danach wird irgendwie der Controller dumm (beim wiederanschalten gibt es keinen Summerklang mehr und ich bekomme nichts mehr auf der seriellen Schnittstelle angezeigt )
Woran liegt es ??
Code:$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 200 $swstack = 200 $framesize = 400 Config Portd.7 = Output Config Pind.6 = Input Pind.6 = 1 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Waitms 10 'TWI konfigurieren Config Sda = Portc.1 Config Scl = Portc.0 Config Twi = 100000 Dim X As Byte Dim A As Byte Dim B As Byte Dim Lesen As Byte Dim W As Word Sound Portd.7 , 400 , 450 Sound Portd.7 , 400 , 250 Sound Portd.7 , 400 , 450 Wait 2 If Pind.6 = 0 Then 'Taster für Moduswahl '---- schreibe in EEprom ---- For A = 1 To 10 W = Getadc(6) 'Messwert Print W X = W / 4 'damit der Speicher reicht Print "Durch 4 geteilt: " ; X Print Print Waitms 200 I2cstart 'Start I2C I2cwbyte &HA0 'Sende Slave Adresse I2cwbyte A 'Sende Speicheradresse I2cwbyte X 'Sende Wert I2cstop 'Stop I2C Waitms 10 'warte 10ms Print "ins EEprom = " ; X ; " " ' Ausgabe der geschriebenen Werte Waitms 500 Next A Sound Portd.7 , 400 , 450 'damit ich weiß, wann er fertig ist Waitms 40 Sound Portd.7 , 400 , 450 Else '--- 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 Lesen , Nack 'lese Adresse vom EEprom I2cstop 'Stop I2C Print "Lese EEprom= " ; Lesen ; " " 'Ausgabe der EEprom Werte Waitms 500 Next B End If End
Grüß dich 'Der Einsteiger',
ich habe zwar keine Ahnung vom Bascom und mache auch nur mit C, aber igendwie vermisse ich hier die Initialisierung mit "I2cinit". (Ob es das ist, kann ich noch nicht einmal sagen.)
Oder ich bin nur blind![]()
Gruß Sternthaler
P.S.: Im übrigen hat mir deine Fragerunde auch gut 'die Augen geöffnet'.
Also ein großes Dankeschön an alle Frageantworter
P.P.S: Und da das hier gerade (schon wieder) mein 1000'er Eintrag ist, verweise ich mal auf https://www.roboternetz.de/community...l=1#post487842
Geändert von Sternthaler (07.08.2013 um 20:11 Uhr) Grund: Schon wieder die 1000 erreicht.
Lieber Asuro programieren als arbeiten gehen.
Hallo Sternthaler,
Habe ich jetzt eingefügt, geht aber trotzdem nicht."I2cinit
?P.S.: Im übrigen hat mir deine Fragerunde auch gut 'die Augen geöffnet'.
Warum schon wieder ?? Du hast doch erst 1000.Und da das hier gerade (schon wieder) mein 1000'er Eintrag ist, verweise ich mal auf
Also zurück zu meinem Problem: Warum geht es nicht ?? Beim ersten Mal anschalten nach dem Proggen funktioniert es, wenn ich es dann aber ausschalte und wieder an dann geht gar nichts mehr! Weder Ton noch Text !
Kennt sich einer von den Fachleuten da aus ?? Ich würde mich über Antworten sehr freuen, da ich echt nicht weiter weiß.
Der Einsteiger
Schade. Aber da sieht man mal, dass ich wirklich keine Ahnung vom Bascom habe![]()
Ich habe die Antworten zu deinen Fragen mit Spannung gelesen, da meine I2C-Kentnisse, zwar in C, auch nur recht klein sind.
Genau das ist auch mein "Problem"!
Da bin auch ich auf eine funktionierende Antwort gespannt.
Gruß
Sternthaler
Lieber Asuro programieren als arbeiten gehen.
Hast du eine LED dran, mit der du die verschiedenen Programmphasen sichtbar machen kannst? Die LED sukkzessive immer später im Programmablauf einschalten.Vielleicht bleibt der Controller in einer der Funktionen stecken.
Wie ist der Reset realisiert? Über den Programmer, oder über das Spannung einschalten? Gibt es da unterschiedliches Verhalten? Die Initialisierung nach dem Reset kann (zumindest bei PICs) je nach Resetursache (PowerUp, BrownOut, WatchDog, Sleep) durchaus unterschiedlich sein.
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Hallo Einsteiger,
unter http://avrhelp.mcselec.com/ (bei "Newbie problems") habe ich noch folgendes gefunden:
Some bits on Port C are not working
Some chips have a JTAG interface. Disable it with the proper fuse bit . Or use DISABLE JTAG in your code.
Leider weiss ich nicht welcher AVR hinter deiner "m32def.dat"-Angabe steckt. Somit weiss ich auch nicht, ob da überhaupt ein JTAG vorhanden ist.
Gruß Sternthaler
Lieber Asuro programieren als arbeiten gehen.
Lesezeichen