Аlex тоже напишет тебе программу . Будет двое часов на халяву
Аlex тоже напишет тебе программу . Будет двое часов на халяву
Вы ни чего не перепутали ?ma5a97 писал(а):Аlex тоже напишет тебе программу
Пусть лучше код свой выложит, в котором он так сильно уверен.ma5a97 писал(а):Viper70 Выложи схему часов в протезе
Нет, не проблема. Но где я в этой теме обещал кому-то программу писать ?ma5a97 писал(а):Для такого спеца это проблема ?
Покажите, кого я тут грязью облил.ma5a97 писал(а):Или только остальных можем поливать грязью ?
Вы вообще посты читаете ? Такое ощущение, что нет, ну или через строчкуma5a97 писал(а):Выложу как будет схема.
Блин. Уже бы попробовали с батарейкой, но без кварца.ma5a97 писал(а):Специально отпаял кварц и батарейку , не работает без них . Постоянно пытается поднять шину , но она не поднимается (устройство одно). Потом впаял по очереди кварц и батарейку на место , и контроллер сразу загрузился
Viper70 писал(а):если кварца нет, ДС-ка будет отвечать на команды, пусть даже время стоит?
Код: Выделить всё
void WriteRTC(){ //Запись I2C RTC
SSPIF=0;
if(EEp==0) SEN=1; //Start
if(EEp==1) {SSPBUF=0b11010000;EEp++;} //RTC запись
if(EEp==3 && ACKSTAT==0) SSPBUF=EEadd;
if(EEp>=4 && EEp<11 && ACKSTAT==0) SSPBUF=bufEE[EEp-4]; //Отправка подтверждения
if(EEp==11) {SSPBUF=bufEE[EEp-4]; ACKDT=1; ACKEN=1;} //Нет подтверждения
if(EEp==12) PEN=1; //Stop
EEp++;
}Картинка класная, но там ошибка как по мне в последовательности передачиBOB51 писал(а):Я в СИ не соображаю...
![]()
Для работы по составлению прожек пользуюсь вот этой картой
http://img.radiokot.ru/files/20529/17hf9pt0nk.GIF
там внизу описание...
Вообще, не очень понятно, что и до куда доходит и где что останавливается.Viper70 писал(а):Вот кодПосле запуска подпрограммы заход в нее осуществляется по прерыванию SSPIF. Между операциями проц занят другими задачамиКод: Выделить всё
void WriteRTC(){ //Запись I2C RTC SSPIF=0; if(EEp==0) SEN=1; //Start if(EEp==1) {SSPBUF=0b11010000;EEp++;} //RTC запись if(EEp==3 && ACKSTAT==0) SSPBUF=EEadd; if(EEp>=4 && EEp<11 && ACKSTAT==0) SSPBUF=bufEE[EEp-4]; //Отправка подтверждения if(EEp==11) {SSPBUF=bufEE[EEp-4]; ACKDT=1; ACKEN=1;} //Нет подтверждения if(EEp==12) PEN=1; //Stop EEp++; }
EEadd - внешняя переменная равная 0. bufEE задается изначально
Остановка при EEp=4. Значит после отправки адреса заходит по прерыванию с EEp=3, ACKSTAT=1. Поэтому пропускает шаг и увеличивает EEp до 4
Напомню, что это кусок на Си для PIC
Я и не спешил выкладывать код, чтоб не морочить голову вам.Аlex писал(а): Если это автомат, то где изменение (инкремент, в данном случае) переменной EEp ?
Где обработка ошибки (как Вы выражаетесь "останов") ?
Каким образом смотрите что происходит ? Отладчик, или что ?
По этому куску тяжело судить о том, что в реальности происходит.