Това е рузултата от последното неработещо нещо

:
program Test_16F1824;
// Software I2C connections
var Soft_I2C_Scl : sbit at RC0_bit;
Soft_I2C_Sda : sbit at RC1_bit;
Soft_I2C_Scl_Direction : sbit at TRISC0_bit;
Soft_I2C_Sda_Direction : sbit at TRISC1_bit;
// End Software I2C connections
var USVal: array[20] of byte;
var b, I : byte;
procedure Beep_Sound(Beep_Num : byte);
begin
for b:= 1 to Beep_Num do
begin
RA4_bit:= 1;
VDelay_Advanced_ms(70, Clock_kHz);
RA4_bit:= 0;
VDelay_Advanced_ms(80, Clock_kHz);
end;
end;
procedure First;
begin
Beep_Sound(1);
I2C1_start; // issue I2C start signal
I2C1_wr($D0); // Command RTC write
I2C1_wr(0); // Set pointer to mins/secs
I2C1_Wr(0);
I2C1_Repeated_Start;
I2C1_wr($D1); // Command RTC read
I2C1_Wr(0);
for I := 0 to 7 do
begin
if I = 7
then UsVal[I] := I2c1_Rd(0) // no ack: last byte to read
else UsVal[I] := I2c1_Rd(1); // with ack
end;
I2C1_Stop;
VDelay_Advanced_ms(10, Clock_kHz);
EEPROM_Write(0, USVal[0]);
EEPROM_Write(1, USVal[1]);
EEPROM_Write(2, USVal[2]);
EEPROM_Write(3, USVal[3]);
EEPROM_Write(4, USVal[4]);
EEPROM_Write(8, 1);
Beep_Sound(2);
end;
procedure Second;
begin
Soft_I2C_Start(); // Issue start signal
Soft_I2C_Write(0xD0);
Soft_I2C_Write(0);
Soft_I2C_Write(0);
Soft_I2C_Start(); // Issue repeated start signal
Soft_I2C_Write(0xD1); // Address PCF8583 for reading R/W=1
for I := 0 to 7 do
begin
if I = 7
then UsVal[I] := Soft_I2C_Read(0) // no ack: last byte to read
else UsVal[I] := Soft_I2C_Read(1); // with ack
end;
Soft_I2C_Stop(); // Issue stop signal
EEPROM_Write(0, USVal[0]);
EEPROM_Write(1, USVal[1]);
EEPROM_Write(2, USVal[2]);
EEPROM_Write(3, USVal[3]);
EEPROM_Write(4, USVal[4]);
EEPROM_Write(5, USVal[5]);
EEPROM_Write(6, USVal[6]);
EEPROM_Write(7, USVal[7]);
Beep_Sound(2);
end;
procedure Init_main;
begin
PORTA:= 0;
PORTC:= 0;
TRISA:= 0;
TRISC0_bit:= 0;
TRISC1_bit:= 0;
INLVLC:= 3;
LATC:= 3;
SSP1CON1:= 59;
WPUC0_bit:= 0;
WPUC1_bit:= 0;
OPTION_REG.7:= 0;
SSPEN_bit:= 1;
CKP_bit:= 1;
SSP1IE_bit:=1;
VDelay_Advanced_ms(1000, Clock_kHz);
Soft_I2C_Init;
Soft_I2C_Start;
Soft_I2C_Write($D0);
Soft_I2C_Write(0);
Soft_I2C_Write(0);
Soft_I2C_Stop;
{I2C1_init(100000); // initialize I2C module 100 kHz clk, full master mode
I2C1_start; // issue I2C start signal
I2C1_wr($D0); // write to RTC
I2C1_wr(0); // set pointer to 0
I2C1_wr(0); // send data (data to be written)
I2C1_stop;}
end;
begin
Init_main;
while(TRUE) do
begin
// First;
Second;
end;
end.
Като гледам ще намразя и Филипс и Майкрочип и т.н.
Сега може би е добре да пийна някоя ракийка и да почна от началото!

А между другото тук се вижда процедурката за която става въпрос. Задал съм по 70 и 80 мсек. за вкл./изкл. на зумера и при различните честоти това време е различно. А пък в даташийта на DS-са пише че трябва да работи на 100 кHz, знам ли!?
Май пак ще се почва с четенето от начало до край и безброй проби-грешки.
П.П. То е**ти темата стана!
