Код: Выделить всё
void Wr_595(char d)
{
Port_Load_0;
for(char i = 0; i < 8; i++)
{
Port_SCLK_0;
if(d & 0x80) Port_SDATA_1;
else Port_SDATA_0;
d = d << 1;
Port_SCLK_1;
}
Port_Load_1;
}
Код: Выделить всё
void Wr_595(char d)
{
Port_Load_0;
for(char i = 0; i < 8; i++)
{
Port_SCLK_0;
if(d & 0x80) Port_SDATA_1;
else Port_SDATA_0;
d = d << 1;
Port_SCLK_1;
}
Port_Load_1;
}
а я подглядел у кого-то и теперь делаю чуть-чуть покрасивее:Ничегонеработает писал(а):У меня так:
Код: Выделить всё
void Wr_595(char d){
Port_Load_0;
for(unsigned char mask = 0x80; mask; mask >>= 1){
Port_SCLK_0;
if(d & mask)
Port_SDATA_1;
else
Port_SDATA_0;
Port_SCLK_1;
}
Port_Load_1;
}Не надо ничего туда вешать. А по поводу емкостей смотрим даташит, к примеру, на Мегу64:demiurg301 писал(а):Подскажите надо ли на SDA SCL i2c вешать конденсаторы фильтрующие. Где то проскакивало что надо , но от чего и какой ёмкости непонятно. На схемах нигде нет... А в голове чтото такое крутится( что гдето видел) ...
Код: Выделить всё
Note: Pull-up resistor values should be selected according to the SCL frequency and the capacitive bus
line load. See Table 133 on page 328 for value of pull-up resistor.

Вот-вот, об этом я недавно писал в теме про С и С++. Такие трюки, типа размещения внутри for() чего-либо непривычного, ухудшают читабельность программ. Никогда так не делаю.Мастер Ломастер писал(а):а я подглядел у кого-то и теперь делаю чуть-чуть покрасивее
Апно(у)ты - application note - описание(пример) применения. Обычные pdf файлы. Бывают с исходниками.Serhio писал(а):Всем доброго времени суток. Обьясните пожалуйста, что такое апноуты и где их искать? Мне необходимо для Atmega8
Ни в чем. USBasp, работает со своими оболочками, при чем замечательно.ANALOG писал(а):Господа, у меня такая проблема:
Я сделал программатор громова и USBasp. Мне нужно прошить контроллер (mega48) в USBasp. Подключаю громова, а USBasp втыкаю в ЮСБ (для питания) Пытаюсь прошить через Uniprof - пишет, что МК не откликнулся
Спаял всё правильно, дорожки прозванивал. В чём может быть проблема?
Код: Выделить всё
void main()
{
TRISC = 0; // Set PORTC output mode
PORTC = 0; // Clear port
ANS6 = 0; // Set RE1 as digital port
ANS12 = 0; // Set RB0 as digital port
TRISB0 = 1; // Set RB0 input mode
TRISA4 = 1; // Set RA4 input mode
TRISE1 = 1; // Set RE1 input mode
while(1) // Infinite loop
{
if(RB0==0) // Switch at RB0 press?
{
PORTC++; // Increase data of PORTC 1 time
Delay_ms(200); // Delay 0.5 sec
}
if(RA4==0) // Switch at RA4 press?
{
PORTC--; // Decrease data of PORTC 1 time
Delay_ms(200); // Delay 0.5 sec
}
if(RE1==0) // Switch at RE1 press?
{
PORTC = 0; // Clear data of PORTC
Delay_ms(200); // Delay 0.5 sec
}
}
}
Покажите схему, а еще лучше проект, так непонятно, что Вы хотите получить.AVT-28 писал(а):...Вроде делаю все правильно но не пашет.
И да, и нет. Достаточно нуля в ДДРХ для перевода на вход, а если записать единицу в ПОРТХ, то подключится подтягивающий резистор.Necroteeth писал(а):У меня очень глупый вопрос - чтобы нога МК атмега работала как вход, кроме нуля в соответствующем бите регистра DDRx надо ли что-то пихать в PORTx?
Если фьюзами выставлено внешнее тактирование, то соотв. нога (ноги) выпадают из списка линий ввода-вывода и работают на вход.Necroteeth писал(а):и надо ли вообще эти манипуляции проводить, если данная нога (T1) используется для внешнего тактового сигнала?
Это делал и это не помогает да и еще у 16ф887 только три вывода PORTE а не 8Chettuser писал(а):TRISE = 0xFF; Равносильно тому что TRISE = 0b11111111;
т.е. мне надо только выставить фьюзы и этот порт вообще не трогать, ес?Gudd-Head писал(а): Если фьюзами выставлено внешнее тактирование, то соотв. нога (ноги) выпадают из списка линий ввода-вывода и работают на вход.