um den Pullup einzuschalten, muss das Portregister gesetzt werden.Zitat:
Code:Config Pind.6 = Input
Pind.6 = 1
Gruß, Michael
Druckbare Version
um den Pullup einzuschalten, muss das Portregister gesetzt werden.Zitat:
Code:Config Pind.6 = Input
Pind.6 = 1
Gruß, Michael
Für die Led habe ich ja den Summer ...Zitat:
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.
Das sage ich ja: und zar nach dem zweiten mal anschalten direkt am Anfang. Oder ??Zitat:
Vielleicht bleibt der Controller in einer der Funktionen stecken.
Beim Proggen macht das der Progger selbst. Wenn ich es im Verlauf ändern möchte, habe ich dafür einen Taster.Zitat:
Wie ist der Reset realisiert?
Nur mal zur Info : Ich verwende RN-Control, also müsste Hardwaremäßig alles passen. Ich habe auch ein anders Board mit Mega 32 probiert, doch es hat sich genau so verhalten. Das würde dann ja auch für ein anders Problem sprechen. Es liegt bestimmt an der Software, nur was ist die Frage ???
Wie ??Zitat:
um den Pullup einzuschalten, muss das Portregister gesetzt werden.
Ich hoffe einer von euch findet die Lösung ...
Also, ich konnte mir nun ein wenig selbst weiterhelfen (nach längerem testen...)
Zur Info noch mal ich verwende RN-Control, USB-AVR-Progger von robotikhardware und ftdi Board für seriell 5V-Pegel
Das ist der Code:
Und jetzt haltet euch gut fest ! Der Code (leicht verändert) funktioniert auch, aber was anderes ist ganz komisch:Code:$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 200
$swstack = 200
$framesize = 400
Config Portd.7 = Output
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
Dim Inpu As Byte
Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
I2cinit
Waitms 10
Input "1 = schreiben und 0 = lesen" , Inpu
Select Case Inpu
Case 1
'---- 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
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
Case 0
'--- 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
Sound Portd.7 , 400 , 450 'damit ich weiß, wann er fertig ist
Waitms 40
Sound Portd.7 , 400 , 450
Next B
End Select
End
Als ich es jetzt getestet hatte habe ich erst das Programm geproggt, seriell angesteckt, lesen oder schreiben gedrückt, den M32 machen lassen, dann ausgeschaltet, seriell abgesteckt, wieder angesteckt, wieder angeschaltet, und wieder einen Taster gedrückt.............
So hat der Code funktioniert. Wenn ich aber den seriellen Anschluss dran lasse und dann direkt wieder anschaltet funktioniert gar nichts mehr. ???? :confused:
Meine Vermutung (die hört sich ein wenig blöde an): Es muss irgendwie die Leitung beim seriellen Kram "verstopft" sein oder irgend sowas ?????
Danke, aber trotzdem gibt es diese komische Störung :)
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
nur hast du keinen Taster im Programm berücksichtigt, den man drücken könnte.Zitat:
Als ich es jetzt getestet hatte habe ich erst das Programm geproggt, seriell angesteckt, lesen oder schreiben gedrückt, den M32 machen lassen, dann ausgeschaltet, seriell abgesteckt, wieder angesteckt, wieder angeschaltet, und wieder einen Taster gedrückt.............
Hier wäre es nur folgerichtig, wenn du erstmal deinen Taster überprüfst, eine systematische Arbeitsweise führt bei mir immer zum Erfolg.
Dein letztes Programm krankte ja an der falschen Tasterabfrage (Ergebnis immer Null), jetzt muss es die serielle sein.
Kannst du erläutern, warum?
@Sternthaler:
Nichts für ungut, du schreibst selbst, dass Bascom nicht dein Gebiet ist und weisst auch nicht was hinter m32 stecken könnte, warum antwortest du dann?
Gruß, Michael
Vielen Dank für den Hinweis, aber das war mir schon bekannt.Zitat:
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.
Hinter der m32def.dat Angabe steckt ein Atmega 32...... :)Zitat:
Leider weiss ich nicht welcher AVR hinter deiner "m32def.dat"-Angabe steckt. Somit weiss ich auch nicht, ob da überhaupt ein JTAG vorhanden ist.
Doch, in dem Prog. davor war ein Taster. Diesen habe ich ja jetzt durch die Serielle ersetzt.Zitat:
Als ich es jetzt getestet hatte habe ich erst das Programm geproggt, seriell angesteckt, lesen oder schreiben gedrückt, den M32 machen lassen, dann ausgeschaltet, seriell abgesteckt, wieder angesteckt, wieder angeschaltet, und wieder einen Taster gedrückt.............
nur hast du keinen Taster im Programm berücksichtigt, den man drücken könnte.
Der Taster hatte ja auch funktioniert.Zitat:
Hier wäre es nur folgerichtig, wenn du erstmal deinen Taster überprüfst, eine systematische Arbeitsweise führt bei mir immer zum Erfolg.
Da hast du recht.Zitat:
Dein letztes Programm krankte ja an der falschen Tasterabfrage (Ergebnis immer Null)
Das hatte ich doch jetzt schon geschrieben ( weiß ich nicht genau, muss aber daran liegen, da alles andere funktioniert.Zitat:
jetzt muss es die serielle sein.
Kannst du erläutern, warum?
So, da mein Datenlogger ja nun funktioniert, habe ich noch mal ne neue Frage :
Wie kann ich zwei Atmegas über I2C verbinden ?? Im Wiki habe ich schon geschaut, doch habe ich das nicht so ganz verstanden (wegen diesen Twsr und so weiter Befehlen ).
Könnt ihr mir da weiterhelfen ?? Bitte ?
Das ist schön, aber magst du dafür keinen neuen Thread aufmachen?Zitat:
So, da mein Datenlogger ja nun funktioniert, habe ich noch mal ne neue Frage
I2C-Slave hat mit I2C-Einstieg nichts mehr zu tun und der Thread hier ist auch schon recht lang.
Gruß, Michael