PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : selbst reset aber wie?



demlinger
27.11.2007, 22:40
hab aus eienem ander beitrag das prog für einen i2c ausgabe slave auf einem atmega 8 probiert hat auch alles gefuntzt
dann hab ich es auf einen atemega 16 geladen und es hängt sich regelmäsig auf die aktuelle portstelleung bleibt erhalten (nicht so gut hab relais drann die meine beleuchtung steuern)

$regfile = "m16def.DAT"
$crystal = 1000000 '11.059 MHz Quarz
Config Portb = Output ' 1200 Baud zum PC


Dim Twi_status As Byte
Dim Twi_data As Byte

Declare Sub Twi_init_slave
Declare Function Twi_wait() As Byte

Twi_data = 0
Call Twi_init_slave ' TWI aktivieren

' Hauptschleife
Do


Twi_status = Twi_wait()
If Twi_status = &H80 Then
Gosub Relais
' Daten auf PortD ausgeben

End If

Loop

Relais:

Portb = Twi_data


Return

End

' Unterprogramme

' TWI als slave aktivieren
Sub Twi_init_slave
Twsr = 0 ' status und Prescaler auf 0
Twdr = &HFF ' default
Twcr = &B00000100 ' erstmal nur TWI aktivieren
Twar = &H50 ' Slaveadresse setzen
Twcr = &B01000100 ' dann ACK einschalten
End Sub

' schauen ob was gekommen ist, Status zurückgeben, Daten in globale variable
Function Twi_wait() As Byte
Local Twcr_local As Byte
Twi_wait = &HF8
' warten bis TWINT gesetzt ist
Twcr_local = Twcr And &H80
If Twcr_local = &H80 Then
Twi_data = Twdr ' Daten sichern
Twi_wait = Twsr And &HF8 ' status zurückgeben
Twcr = Twcr Or &B10000000 ' TWINT löschen, erzeugt ACK
End If

End Function

hab mal irgendwo gehört das da standart mäsig auf internes quartz gestellt ist hab deshalb keines dran
ich benutze ponyprog

wie verwendet man den watchdog könnte das helfen?