Archiv verlassen und diese Seite im Standarddesign anzeigen : ...wieder mal I2C oder Mega128 defekt??
sebastian.heyn
08.03.2005, 10:10
Haallo,
habe ein Problem mit I2Cwbyte: hier ist mein programm, aber ab clock pin kommt nur immer ein negativer impuls raus (pullups habe ich dran). habe ich was falsch gemacht?
$regfile = "m128def.dat"
$crystal = 1000000
Config Portd = Output
Config Sda = Portd.1
Config Scl = Portd.0
Config I2cdelay = 100
Do
I2cstart
I2cwbyte &H70
I2cwbyte 8
I2cwbyte 1
I2cwbyte &H41
I2cwbyte &H42
I2cwbyte &H43
I2cwbyte &H44
I2cwbyte &H45
I2cwbyte &H46
I2cwbyte &H47
I2cwbyte &H48
Wait 1
Loop
End
sebastian.heyn
08.03.2005, 10:57
Ich da´chte der wär nicht unbedingt von nöten?
Stimmt schon, solange das ganze übersichtlich ist. aber normalerweise sind deine Pins für den Print da, und wer weiß schon, was der Kerl tut ?
EDIT Nehm ich zurück, du hast ja einen 128
Sonst fällt mir nur auf, daß das Delay mit 100 schon recht hoch ist
Stimmt es, daß du mit 1 MHZ fährst ?
Kontrolliere, ob er bei i2Cstart den Bus auch übernehmen kann (ERR <>0)
Vorsicht: Ich hatt auch schon einen Neuen Mega, wo die I2C-Pins kaputt waren
sebastian.heyn
08.03.2005, 12:20
der mega scheint nur mist zu machen. aber wieso? fuses sind auf internal 1mhz und habe das folgende froggi mal gebaut um die ports zu testen
do
set portb.0
waitms 250
reset portb.0
waitms 250
loop
end
der port bleibt dauerhaft high (gemessen mit oszi direkt am port). drücke ich reset setzt er kurz zurück
Wenn der Pin auch auf Output gesetzt war (?) , dann scheint das wirklich auf technische Probleme hinzuweisen.
Gibts einen test-alternativ-Mega ?
(wenn das Port kaputt ist, ist aber seltsam, wie er es dann bei reset schafft)
Haallo,
habe ein Problem mit I2Cwbyte: hier ist mein programm, aber ab clock pin kommt nur immer ein negativer impuls raus (pullups habe ich dran). habe ich was falsch gemacht?
$regfile = "m128def.dat"
$crystal = 1000000
Config Portd = Output
Config Sda = Portd.1
Config Scl = Portd.0
Config I2cdelay = 100
Do
I2cstart
I2cwbyte &H70
I2cwbyte 8
I2cwbyte 1
I2cwbyte &H41
I2cwbyte &H42
I2cwbyte &H43
I2cwbyte &H44
I2cwbyte &H45
I2cwbyte &H46
I2cwbyte &H47
I2cwbyte &H48
Wait 1
Loop
End
.. nach dem letzten I2Cwbyte sollte noch ein I2Cstop kommen.
Schau mal in die Bascom-Hilfe unter Stichwort "I2CStart"
mfg Gerhard
Hi
Hm. Bau mal wie gesagt i2cinit und i2cstop ein...
Den Port musst du meines Wissens nicht als Ausgang schalten, macht BASC. glaub ich autmomatisch. ?!?! K.A.
Mach mal ein
disable interrupts
in deinen Code, weil SCL und SDA beim M128 doppelt mit INT0 und INT1
belegt sind.
Ich habe auch Probs mit der Softwareemulation.
Werd das mit der Hardware lösen.
Liebe Grüße,
Tobi
sebastian.heyn
08.03.2005, 14:06
Habe jetzt mal nen anderen PORT genommen
Ich bin doch nicht zu blöd, oder? das signal bleibt immer high an allen pins des ports
$regfile = "m128def.dat"
$crystal = 1000000
Config Porte = Output
Do
Porte = 255
Waitms 250
Porte = 0
Waitms 250
Loop
End
EDIT!!
Habe den Fehler gefunden!!!!!!
Man muss die fuses auch so setzen das der 128er nicht im 103 modus läuft!! Wie blöd muss man sein!!
Jetzt glaub ich bald, daß der ganze Mega nicht läuft (irgendwas mit dem Oszillator)
Was ist denn der "103 Modus" ?
sebastian.heyn
08.03.2005, 15:49
du kannst einstellen ob er sich verhält wie ein atmega103. (ist in den fuses standardeinstellung)
dann müsstest du n anderes regfile verwenden.
normalerweise ist der m128 so eingestellt, dass er zum m103 kompaktibel ist. dann kann man aber nicht alle funktionen des m128 voll ausnutzen. daher muss man bei bedarf nen fusebit ändern!
Hi
Das dürfte bei BASCOM egal sein, weil das eine I²C-Softwareemulation ist.
Ausser die Register heißen anders!!
Aber wenn's so funzt...
Normalerweise heißen die Portregister (DDRx, PORTx und PINx) immer gleich.
Tobi
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.