Пт дек 15, 2017 18:40:17
Пт дек 15, 2017 19:01:53
Пт дек 15, 2017 19:25:10
Сб дек 16, 2017 21:48:33
Вс дек 17, 2017 02:27:50
Вс дек 17, 2017 02:37:24
Вс дек 17, 2017 07:17:46
vanyap1 писал(а):Странно, если последовательный порт включен то менять состояния его портов невозможно. Если не ошибаюсь.
Вс дек 17, 2017 17:55:44
Все правильно написали, за включение-выключение отвечают биты RXEN (RX ENable) и TXEN (TX ENable) регистра UCSRB. Выключается он записью нулей в соответствующие биты. И по умолчанию USART выключен.
Пн дек 18, 2017 04:42:23
goldskif писал(а):Я месяц нихрена добиться не мог. Потом наконец один великий гуру с несколькими тысячами постов соизволил снизойти до моей просьбы и высокомерно выдавил из себя кусок говнокода.
goldskif писал(а):Мое слово "НЕТ" в предыдущем посте означает, что предложенный вариант не работает. Вам что-то непонятно? И речь в моей просьбе шла об аппаратном UART, а не USART.
Ср дек 27, 2017 07:27:16
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 9600
Const Eeprom1w = 160 '&HA0 &B10100000
Const Eeprom1r = 161 '&HA1 &B10100001
Dim Adress As Word
Dim Tempi As Word
Dim Byte_h As Byte
Dim Byte_l As Byte
'PB5 SDA EEPROM
'PB7 SCL EEPROM
'PB6 1-Wire DS18B20
'PD0 Rx
'PD1 Tx
'PD2 INT0 Button
'PD4 T0 LED Anode
Dim Byte0 As Byte
Dim Byte1 As Byte
Dim Sign As String * 1
Dim T As Byte
Dim T1 As Byte
Dim T2 As Byte
Config 1wire = Portb.6
Config Sda = Portb.7 'I2C Data
Config Scl = Portb.5 'I2C Clock
Config Int0 = Falling
On Int0 Getout
Enable Interrupts
Enable Int0
Do
Gosub Temp
Loop
Getout:
Gosub Read_eeprom
Print "Aktual=" ; T1
Print "EEPROM=" ; T
Gosub Write_eeprom
Return
Write_eeprom:
For Adress = 0 To 511
Tempi = Adress
Shift Tempi , Left , 7
Byte_h = High(tempi)
Byte_l = Low(tempi)
I2cstart
I2cwbyte Eeprom1w
I2cwbyte Byte_h
I2cwbyte Byte_l
I2cwbyte T1
I2cstop
Next Adress
Return
Read_eeprom:
I2cstart
I2cwbyte Eeprom1w
I2cwbyte Byte_h
I2cwbyte Byte_l
I2cstart
I2cwbyte Eeprom1r
I2crbyte T , Nack
I2cstop
Return
Temp:
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
Byte0 = 1wread()
Byte1 = 1wread()
If Byte1 > 248 Then
Byte0 = &HFF - Byte0
Byte1 = &HFF - Byte1
Sign = "-"
Else
Sign = "+"
End If
T1 = Byte0 / 16
T2 = Byte1 * 16
T1 = T1 + T2
If Sign = "-" Then
T1 = T1 + 1
End If
If Sign = "+" And T1 = 0 Then
Sign = " "
End If
Return
End
Ср дек 27, 2017 16:14:15
'PB5 SDA EEPROM
'PB7 SCL EEPROM
Config Sda = Portb.7 'I2C Data
Config Scl = Portb.5 'I2C Clock
Чт дек 28, 2017 07:04:39
Чт дек 28, 2017 17:01:15
Вс дек 31, 2017 14:28:19
Пт янв 05, 2018 18:11:20
Сб янв 06, 2018 14:29:10
Пн янв 08, 2018 01:52:24
[1|0] : 27
[1|128] : 27
[2|0] : 27
[2|128] : 27
....
[35|0] : 27
[35|128] : 27
[36|0] : 27
Rw_eeprom:
Addrbyte = Addrbyte + 1
Tempi = Addrbyte
Shift Tempi , Left , 7
Byte_h = High(tempi)
Byte_l = Low(tempi)
I2cstart
I2cwbyte Eeprom1w
I2cwbyte Byte_h
I2cwbyte Byte_l
If Eestat = 1 Then 'Чтение
I2cstart
I2cwbyte Eeprom1r
I2crbyte T , Nack
Print "[" ; Byte_h ; "|" ; Byte_l ; "] : " ; T
Else 'Запись
I2cwbyte T1
Print "[" ; Byte_h ; "|" ; Byte_l ; "] : " ; T1
End If
I2cstop
Return
Чт янв 11, 2018 23:13:04
Пт янв 12, 2018 03:59:24
Config PORT.X = Input