MPLAB C18 EEPROM initialization

Sep 02, 2009 358 Replies

Hello, Dimmy! You wrote to Andrej Arnold on Wed, 09 Sep 2009 15:18:10 +0600:

DO>>>>> ëÓÔÁÔÉ, ÞÔÏ ÍÏÖÎÏ ÐÉÓÁÔØ 0b01010101 ×ÍÅÓÔÏ 85 Ñ ÔÏÖÅ × DO>>>>> ÄÏËÕÍÅÎÔÁÃÉÉ ÎÅ ÎÁÛÅÌ, ÏÄÎÁËÏ ÍÏÖÎÏ. ëÓÔÁÔÉ, Á ÍÏÖÅÔ ÏÎÉ ÐÒÏÓÔÏ ÜÔÏ ÔÁË ÓËÁÚÁÔØ "ÐÏ ÓÔÁÎÄÁÒÔÕ" ÉÍÐÌÅÍÅÎÔÉÒÏ×ÁÌÉ É ÎÁ ËÏÍÅÎÔÁÒÉÑÈ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÀÝÅÇÏÓÑ ÓÜËÏÎÏÍÉÌÉ?

DT>>> íÏÖÎÏ ÔÁË:

DT>>> #define _bitset(bits)\ DT>>> ((byte)(\ DT>>> (bits%010)|\ DT>>> (bits/010%010)<<1|\ DT>>> (bits/0100%010)<<2|\ DT>>> (bits/01000%010)<<3|\ DT>>> (bits/010000%010)<<4|\ DT>>> (bits/0100000%010)<<5|\ DT>>> (bits/01000000%010)<<6|\ DT>>> (bits/010000000%010)<<7))

DT>>> #define BIN8(bits) _bitset(0##bits) DT>>> #define BIN16(bitsH,bitsL) (unsigned(BIN8(bitsL)) DT>>> + unsigned((BIN8(bitsH)<<8)))

AA>> þÔÏ-ÔÏ ÔÑÍÕ ÎÅ È×ÁÔÁÅÔ, ËÁË ÉÚ ÜÔÏÇÏ ÐÏÌÕÞÉÔØ ÔÒÅÂÕÅÍÕÀ ËÁÒÔÉÎËÕ? AA>> éÌÉ ÔÕÔ ÒÅÞØ Ï ޣÍ-ÔÏ ÄÒÕÇÏÍ?

DT> HÁÐÒÉÍÅÒ:

DT> // FOC: force output compare DT> // |0--1-WGM: wave gen mode: 00: normal 01 CTC DT> // || | DT> TCCR0 = BIN8(00000100); DT> // || ^^^-CS: clock source: 001:/1 010:/8 011:/64 DT> 100:/256 // 10-COM: comp. out mode, OC0: 00:-- DT> 01:toggle 10:clear 11: set òÁÓÓÙÐÁÌÏÓØ...

óÐÁÓÉÂÏ. ôÅÐÅÒØ ÐÏÎÑÌ. HÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ 0 É 1 É ÎÉËÁËÉÈ ÓÄ×ÉÇÁÅÍÙÈ 3-ÅË, ËÁË Ñ ÉÎÏÇÄÁ ÄÅÌÁÀ. HÕ É Åݣ ÐÏÐÕÔÎÙÊ ×ÏÐÒÏÓ Ë ÁÌÌ... Á ÚÁÞÅÍ × ÄÅÌÉÔÅÌÑÈ ÎÕÖÎÙ ×ÅÄÕÝÉÅ ÎÕÌÉ? DT> äÁ, ÎÁÐÏÍÎÉÌÉ: Õ ÍÅÎÑ ÏÐÒÅÄÅÌÅÎÏ DT> typedef unsigned char byte; õ ÍÅÎÑ, ËÓÔÁÔÉ, ÔÏÖÅ. ôÏÌØËÏ BYTE, ÐÏÔÏÍÕ ÂÅÚ ×ÏÐÒÏÓÏ×, ÔÉÐÁ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÀÝÅÅÓÑ.

With best regards, Andrej Arnold.

Hello, Dimmy! You wrote to Nickita A Startcev on Thu, 10 Sep 2009 05:00:17 +0600:

DT> ÚÄÅÛÎÉÊ ÎÁÒÏÄ ÐÏÄÓËÁÚÁÌ ÔÏÔ ÔÒÀË Ó ×ÏÓØÍÅÒÉÞÎÙÍÉ ÞÉÓÌÁÍÉ. üÔÏ ÎÅ ×ÏÓØÍÅÒÉÞÎÙÅ ÞÉÓÌÁ...;) DT> ðÒÉÄÕÍÁÌ, ×ÉÄÉÍÏ, ÎÁÓÔÏÑÝÉÊ ÍÁÔÅÍÁÔÉË. :) éÄÅÑ (ÆÏÒÍÁÔ ÚÁÐÉÓÉ), ËÏÎÅÞÎÏ, ÏÞÅÎØ ËÒÁÓÉ×ÁÑ. á ÔÁË, ÐÏ ÓÕÔÉ ÁÌÇÏÒÉÔÍÁ, ÐÒÉÍÅÒÎÏ ÔÁËÖÅ ÍÎÅ ËÏÇÄÁ-ÔÏ ÄÁ×ÎÏ ÐÏËÁÚÙ×ÁÌÉ, ËÁË ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÄÅÓÑÔÉÞÎÏÅ ÞÉÓÌÏ × Ä×ÏÉÞÎÏÅ. úÄÅÓØ, ËÏÎÅÞÎÏ, ÏÇÒÁÎÉÞÅÎÉÊ ÂÏÌØÛÅ - ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÚÁÐÉÓÉ ÄÅÓÑÔÉÞÎÏÇÏ ÞÉÓÌÁ ÔÏÌØËÏ ÎÕÌÉ É ÅÄÉÎÉÃÙ. HÏ ÎÁÓޣÔ ×ÅÄÕÝÉÈ ÎÕÌÅÊ (× ÔÏÍ ÞÉÓÌÅ É ÓËÌÅÊËÁ × ÎÁÂÏÒÅ ÂÉÔÏ×!) Ñ ÔÁË É ÎÅ ÐÏÎÑÌ ÐÏËÁ ÚÁÞÅÍ ÏÎÉ ÎÕÖÎÙ...

With best regards, Andrej Arnold.

Hello, Andrej Arnold! You wrote in conference fido7.ru.embedded to Dimmy Timchenko on Thu, 10 Sep

2009 12:25:52 +0400:

DO>>>>>> Кстати, что можно писать 0b01010101 вместо 85 я тоже в DO>>>>>> документации не нашел, однако можно.

AA> Кстати, а может они просто это так сказать "по стандарту"

Да вроде как нет такого по стандарту. Да и не важно, в нормальной доке надо писать, есть оно или нет.

AA> имплементировали и на коментариях само собой разумеющегося AA> сэкономили?

DT>>>> #define _bitset(bits)\ DT>>>> ((byte)(\ DT>>>> (bits%010)|\ DT>>>> (bits/010%010)<<1|\ DT>>>> (bits/0100%010)<<2|\ DT>>>> (bits/01000%010)<<3|\ DT>>>> (bits/010000%010)<<4|\ DT>>>> (bits/0100000%010)<<5|\ DT>>>> (bits/01000000%010)<<6|\ DT>>>> (bits/010000000%010)<<7))

DT>>>> #define BIN8(bits) _bitset(0##bits) DT>>>> #define BIN16(bitsH,bitsL) (unsigned(BIN8(bitsL)) DT>>>> + unsigned((BIN8(bitsH)<<8)))

AA> Спасибо. AA> Теперь понял. AA> Hужно использовать только 0 и 1 и никаких сдвигаемых 3-ек, как я AA> иногда делаю. AA> Hу и ещё попутный вопрос к алл... а зачем в делителях нужны ведущие AA> нули?

Затем, что 010 это 8. Как раз по стандарту.

DT>> Да, напомнили: у меня определено typedef unsigned char byte; AA> У меня, кстати, тоже. AA> Только BYTE, потому без вопросов, типа само собой разумеющееся.

Я на u8 перешел, раньше тоже byte писал.

dima

formatting link

Hello, Andrej Arnold! You wrote in conference fido7.ru.embedded to Dimmy Timchenko on Thu, 10 Sep

2009 12:44:43 +0400:

AA> Hello, Dimmy! AA> You wrote to Nickita A Startcev on Thu, 10 Sep 2009 05:00:17 +0600:

DT>> здешний народ подсказал тот трюк с восьмеричными числами. AA> Это не восьмеричные числа...;)

Это именно восьмеричные числа, с ведущего нуля начинающиеся.

dima

formatting link

Hello Alexander.

Thu Sep 10 2009 08:47, Alexander Torres wrote to me:

DT>> ðÒÏÓÔÏ ÔÏ×ÁÒÉÝÉ ÖÁÌÏ×ÁÌÉÓØ, ÞÔÏ × IAR-Å ÂÉÔÏ×ÙÈ ËÏÎÓÔÁÎÔ ÎÅÔ.

AT> þÔÏÂ ÜÔÏ ÂÙÌÏ ÐÏÓÌÅÄÎÅÅ ÇÏÒÅ × éáòÅ....

äÁ ÎÉÞÅÇÏ, Ñ ÉÍ ÕÓÐÅÛÎÏ ÐÏÌØÚÏ×ÁÌÓÑ ÄÌÑ AVR, x51, MSP430.

Dimmy.

Hello Andrej.

Thu Sep 10 2009 13:25, Andrej Arnold wrote to me:

DO>>>>>> ëÓÔÁÔÉ, ÞÔÏ ÍÏÖÎÏ ÐÉÓÁÔØ 0b01010101 ×ÍÅÓÔÏ 85 Ñ ÔÏÖÅ × DO>>>>>> ÄÏËÕÍÅÎÔÁÃÉÉ ÎÅ ÎÁÛÅÌ, ÏÄÎÁËÏ ÍÏÖÎÏ.

AA> ëÓÔÁÔÉ, Á ÍÏÖÅÔ ÏÎÉ ÐÒÏÓÔÏ ÜÔÏ ÔÁË ÓËÁÚÁÔØ "ÐÏ ÓÔÁÎÄÁÒÔÕ" AA> ÉÍÐÌÅÍÅÎÔÉÒÏ×ÁÌÉ É ÎÁ ËÏÍÅÎÔÁÒÉÑÈ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÀÝÅÇÏÓÑ ÓÜËÏÎÏÍÉÌÉ?

IAR? HÅÔ. äÁ É ÎÅÔ ÔÁËÏÇÏ × ÓÔÁÎÄÁÒÔÁÈ. èÏÔÑ intrinsic function ÄÌÑ ××ÏÄÁ Ä×ÏÉÞÎÙÈ ËÏÎÓÔÁÎÔ ÎÉËÔÏ ÎÅ ÍÅÛÁÌ ÓÄÅÌÁÔØ.

AA> óÐÁÓÉÂÏ. AA> ôÅÐÅÒØ ÐÏÎÑÌ. AA> HÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ 0 É 1 É ÎÉËÁËÉÈ ÓÄ×ÉÇÁÅÍÙÈ 3-ÅË, ËÁË Ñ ÉÎÏÇÄÁ AA> ÄÅÌÁÀ.

HÕ ÅÓÓÅÓÓÎÏ. èÏÔÑ ÍÏÖÎÏ É ËÏÍÂÉÎÉÒÏ×ÁÔØ ÐÏ OR.

AA> HÕ É Åݣ ÐÏÐÕÔÎÙÊ ×ÏÐÒÏÓ Ë ÁÌÌ... Á ÚÁÞÅÍ × ÄÅÌÉÔÅÌÑÈ ÎÕÖÎÙ ×ÅÄÕÝÉÅ AA> ÎÕÌÉ?

á ÞÔÏÂÙ ÌÀÂÁÑ ÚÁÐÉÓØ (É 010 É 10) ÂÙÌÁ ÉÍÅÎÎÏ ×ÏÓÍÅÒÉÞÎÙÍ ÞÉÓÌÏÍ. éÎÁÞÅ ÂÕÄÅÔ ÐÕÔÁÎÉÃÁ ÍÅÖÄÕ ÄÅÓÑÔÉÞÎÙÍÉ É ×ÏÓØÍÅÒÉÞÎÙÍÉ.

DT>> äÁ, ÎÁÐÏÍÎÉÌÉ: Õ ÍÅÎÑ ÏÐÒÅÄÅÌÅÎÏ DT>> typedef unsigned char byte;

AA> õ ÍÅÎÑ, ËÓÔÁÔÉ, ÔÏÖÅ. AA> ôÏÌØËÏ BYTE, ÐÏÔÏÍÕ ÂÅÚ ×ÏÐÒÏÓÏ×, ÔÉÐÁ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÀÝÅÅÓÑ.

á, ÎÕ ÄÁ, ÌÏÇÉÞÎÏ.

Dimmy.

Hello, Dmitry! You wrote to Andrej Arnold on Thu, 10 Sep 2009 13:48:09 +0600:

AA>> HÕ É Åݣ ÐÏÐÕÔÎÙÊ ×ÏÐÒÏÓ Ë ÁÌÌ... Á ÚÁÞÅÍ × ÄÅÌÉÔÅÌÑÈ ÎÕÖÎÙ AA>> ×ÅÄÕÝÉÅ ÎÕÌÉ? DO> úÁÔÅÍ, ÞÔÏ 010 ÜÔÏ 8. ëÁË ÒÁÚ ÐÏ ÓÔÁÎÄÁÒÔÕ. üÔÏ Ñ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÚÁÂÙÌ... ÎÏ ÞÔÏ ÍÅÛÁÅÔ?... Á ÐÏÎÑÌ... ... ×ÅÄÕÝÉÅ ÎÕÌÉ × bits É ÕÖÅ ÏÎÏ ÎÅ ÄÅÓÑÔÉÞÎÏÅ É ÎÅ Ä×ÏÉÞÎÏÅ, Á ÉÍÅÎÎÏ ×ÏÓØÍÅÒÉÞÎÏÅ. óÐÁÓÉÂÏ.

With best regards, Andrej Arnold.

ðÒÉ×ÅÔ, Andrej !

10 Sep 09 , 13:25 Andrej Arnold ÐÉÓÁÌ Ë Dimmy Timchenko:

AA> ÉÎÏÇÄÁ ÄÅÌÁÀ. HÕ É Åݣ ÐÏÐÕÔÎÙÊ ×ÏÐÒÏÓ Ë ÁÌÌ... Á ÚÁÞÅÍ × ÄÅÌÉÔÅÌÑÈ AA> ÎÕÖÎÙ ×ÅÄÕÝÉÅ ÎÕÌÉ?

ÞÔÏ ÞÉÓÌÏ ÂÙÌÏ ×ÏÓØÍÅÒÉÞÎÙÍ. :) HÏ ÄÌÑ ÜÔÏÇÏ ÄÏÓÔÁÔÏÞÎÏ É ÏÄÎÏÇÏ ÎÕÌÑ.

DT>> äÁ, ÎÁÐÏÍÎÉÌÉ: Õ ÍÅÎÑ ÏÐÒÅÄÅÌÅÎÏ DT>> typedef unsigned char byte; AA> õ ÍÅÎÑ, ËÓÔÁÔÉ, ÔÏÖÅ. AA> ôÏÌØËÏ BYTE, ÐÏÔÏÍÕ ÂÅÚ ×ÏÐÒÏÓÏ×, ÔÉÐÁ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÀÝÅÅÓÑ.

BYTE - ÜÔÏ ÐÅÒ×ÙÊ ÛÁÇ Ë lplplpszMyVar1. :\

. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... ÒÅÄËÉÅ ×ÙÈÏÄÎÙÅ ÏÂÈÏÄÑÔÓÑ ÂÅÚ ÐÁÄÅÎÉÑ ËÁËÏÇÏ-ÎÉÂÕÄØ ÒÅÇÉÏÎÁÌØÎÏÇÏ ÈÁÂÁ

Hello, Dimmy! You wrote to Alexander Torres on Thu, 10 Sep 2009 16:14:07 +0400:

DT> Hello Alexander.

DT> Thu Sep 10 2009 08:47, Alexander Torres wrote to me:

DT>>> ðÒÏÓÔÏ ÔÏ×ÁÒÉÝÉ ÖÁÌÏ×ÁÌÉÓØ, ÞÔÏ × IAR-Å ÂÉÔÏ×ÙÈ ËÏÎÓÔÁÎÔ ÎÅÔ.

AT>> þÔÏÂ ÜÔÏ ÂÙÌÏ ÐÏÓÌÅÄÎÅÅ ÇÏÒÅ × éáòÅ....

DT> äÁ ÎÉÞÅÇÏ, Ñ ÉÍ ÕÓÐÅÛÎÏ ÐÏÌØÚÏ×ÁÌÓÑ ÄÌÑ AVR, x51, MSP430.

äÁ Ë É Ñ ÐÏÌØÚÕÀÓØ, ÄÌÑ á÷ò É íóð.

With best regards, Alexander Torres. 2:461/28

formatting link
OR
formatting link

Hello, Nickita! You wrote to Andrej Arnold on Thu, 10 Sep 2009 22:15:36 +0600:

AA>> ôÏÌØËÏ BYTE, ÐÏÔÏÍÕ ÂÅÚ ×ÏÐÒÏÓÏ×, ÔÉÐÁ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÀÝÅÅÓÑ. NA> BYTE - ÜÔÏ ÐÅÒ×ÙÊ ÛÁÇ Ë lplplpszMyVar1. :\ ôÅÍ ÎÅ ÍÅÎÅÅ ÍÎÅ ËÁË-ÔÏ ÌÅÇÞÅ ÇÌÑÄÑ ÎÁ ÐÅÒÅÍÅÎÎÕÀ ×ÉÄÅÔØ, ÞÔÏ ÜÔÏ ÎÅ ËÁËÉÅ-ÎÉÂÕÄØ ÄÁÎÎÙÅ, Á ÉÍÅÎÎÏ ÂÁÊÔ - × ÓÍÙÓÌÅ ÓÍÙÓÌÏ×ÏÊ ÎÁÂÏÒ ÂÉÔÏ×. á × ÓÁÍÏÍ ÂÁÊÔÅ ÉÓËÁÔØ ÓÍÙÓÌÁ ÎÅ ÎÕÖÎÏ. äÒÕÇÏÅ ÄÅÌÏ UCHAR ÔÕÔ ÕÖÅ ÞÔÏ-ÔÏ ÏÓÍÙÓÌÅÎÎÏÅ × ÓÁÍÏÍ ÂÁÊÔÅ, Á ÎÅ × ÏÔÄÅÌØÎÙÈ ÅÇÏ ÂÉÔÁÈ.

With best regards, Andrej Arnold.

ðÒÉ×ÅÔ, Andrej !

11 Sep 09 , 13:23 Andrej Arnold ÐÉÓÁÌ Ë Nickita A Startcev:

AA>>> ôÏÌØËÏ BYTE, ÐÏÔÏÍÕ ÂÅÚ ×ÏÐÒÏÓÏ×, ÔÉÐÁ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÀÝÅÅÓÑ. NA>> BYTE - ÜÔÏ ÐÅÒ×ÙÊ ÛÁÇ Ë lplplpszMyVar1. :\ AA> ôÅÍ ÎÅ ÍÅÎÅÅ ÍÎÅ ËÁË-ÔÏ ÌÅÇÞÅ ÇÌÑÄÑ ÎÁ ÐÅÒÅÍÅÎÎÕÀ ×ÉÄÅÔØ, ÞÔÏ ÜÔÏ ÎÅ AA> ËÁËÉÅ-ÎÉÂÕÄØ ÄÁÎÎÙÅ, AA> Á ÉÍÅÎÎÏ ÂÁÊÔ - × ÓÍÙÓÌÅ ÓÍÙÓÌÏ×ÏÊ ÎÁÂÏÒ ÂÉÔÏ×.

ôÁË ÜÔÏ ÌÕÞÛÅ ÉÚ ÉÍÅÎÉ ÐÅÒÅÍÅÎÎÏÊ ÄÏÓÔÁ×ÁÔØ. ïÂÏÚ×ÁÔØ ÐÅÒÅÍÅÎÎÕÀ ÍÁÓÓÏÊ, ÓËÏÒÏÓÔØÀ, ÒÅÄØËÏÆÌÁÇÁÍÉ - É ÓÒÁÚÕ ×ÉÄÎÏ. á ÔÉÐÙ - u8, u16, u32, u64...s64 - ÔÏÇÄÁ ÐÒÉ ×ÚÇÌÑÄÅ ÎÁ ÐÒÏÔÏÔÉÐÙ × ÇÌÁÚÁÈ ÎÅ ÒÑÂÉÔ.

AA> á × ÓÁÍÏÍ ÂÁÊÔÅ ÉÓËÁÔØ AA> ÓÍÙÓÌÁ ÎÅ ÎÕÖÎÏ. äÒÕÇÏÅ ÄÅÌÏ UCHAR ÔÕÔ ÕÖÅ ÞÔÏ-ÔÏ ÏÓÍÙÓÌÅÎÎÏÅ × ÓÁÍÏÍ AA> ÂÁÊÔÅ, Á ÎÅ × ÏÔÄÅÌØÎÙÈ ÅÇÏ ÂÉÔÁÈ.

÷ ÍÏÉÈ ÚÁÄÁÞÁÈ ÐÏÌÅÚÎÅÅ ×ÉÄÅÔØ ÒÁÚÍÅÒ ÐÅÒÅÍÅÎÎÏÊ É ÚÎÁËÏ×ÏÓÔØ. þÔÏ-ÇÄÅ-ËÁË ÉÓËÁÔØ ÏÂÙÞÎÏ ÐÏ ËÏÎÔÅËÓÔÕ ×ÉÄÎÏ.

. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... HÅ ×ÓÅ ÖÉÔÅÌÉ áÌÁÂÁÍÙ ÂØÀÔ ÖÅÎ

Nickita,

You wrote to Andrej Arnold:

AA>>>> ôÏÌØËÏ BYTE, ÐÏÔÏÍÕ ÂÅÚ ×ÏÐÒÏÓÏ×, ÔÉÐÁ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÀÝÅÅÓÑ. NA>>> BYTE - ÜÔÏ ÐÅÒ×ÙÊ ÛÁÇ Ë lplplpszMyVar1. :\ AA>> ôÅÍ ÎÅ ÍÅÎÅÅ ÍÎÅ ËÁË-ÔÏ ÌÅÇÞÅ ÇÌÑÄÑ ÎÁ ÐÅÒÅÍÅÎÎÕÀ ×ÉÄÅÔØ, ÞÔÏ ÜÔÏ AA>> ÎÅ ËÁËÉÅ-ÎÉÂÕÄØ ÄÁÎÎÙÅ, Á ÉÍÅÎÎÏ ÂÁÊÔ - × ÓÍÙÓÌÅ ÓÍÙÓÌÏ×ÏÊ ÎÁÂÏÒ AA>> ÂÉÔÏ×. NS> ôÁË ÜÔÏ ÌÕÞÛÅ ÉÚ ÉÍÅÎÉ ÐÅÒÅÍÅÎÎÏÊ ÄÏÓÔÁ×ÁÔØ. NS> ïÂÏÚ×ÁÔØ ÐÅÒÅÍÅÎÎÕÀ ÍÁÓÓÏÊ, ÓËÏÒÏÓÔØÀ, ÒÅÄØËÏÆÌÁÇÁÍÉ - É ÓÒÁÚÕ ×ÉÄÎÏ. NS> á ÔÉÐÙ - u8, u16, u32, u64...s64 - ÔÏÇÄÁ ÐÒÉ ×ÚÇÌÑÄÅ ÎÁ ÐÒÏÔÏÔÉÐÙ × NS> ÇÌÁÚÁÈ ÎÅ ÒÑÂÉÔ.

÷ÓÑ ÐÒÏÂÌÅÍÁ × ÔÏÍ, ÞÔÏ ÔÏ, ÞÔÏ ÄÌÑ ÏÄÎÏÇÏ ÌÕÞÛÅ, ÄÌÑ ÄÒÕÇÏÇÏ ÆÉÇÎÑ, ÎÅ ÓÔÏÑÝÁÑ ×ÒÅÍÅÎÉ ÎÁ ÐÒÏÞÔÅÎÉÅ... ïÄÉÎ ÍÏÊ ËÏÌÌÅÇÁ ÚÁÂÉ×ÁÌ(ÅÔ - ÅÇÏ ÐÅÒÅÍÁÎÉÌÁ ÐÏÞÔÉ Ä×ÏÊÎÏÊ ÚÁÒÐÌÁÔÏÊ ÄÒÕÇÁÑ ÆÉÒÍÁ) ÄÌÉÎÕ ÐÅÒÅÍÅÎÏÊ É ţ ÚÎÁËÏ×ÏÓÔØ, ÐÒÑÍÏ × ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ. õ ÎÅÇÏ ×ÐÅÒÅÄÉ Õ ÉÍÅÎÉ ÐÅÒÅÍÅÎÎÏÊ, ÉÌÉ ÔÁÍ, ÆÕÎËÃÉÉ, ÓÔÏÉÔ ÎÁÂÏÒ ÉÚ ËÏÍÂÉÎÁÃÉÊ ÂÕË× bmnu É Åݣ ËÁËÉÈ-ÔÏ... (Ñ ÓÅÊÞÁÓ ÄÏÍÁ É ÎÅ ÍÏÇÕ ÐÏÓÍÏÔÒÅÔØ ÎÁ ÅÇÏ ÉÓÈÏÄÎÉËÉ) ÄÌÑ ÎÅÇÏ ÕÄÏÂÎÏ ÉÍÅÎÎÏ ÜÔÏ... Á ÔÁË ÏÎ ÓÒÁÚÕ ×ÉÄÉÔ, ÞÔÏ ×ÏÚ×ÒÁÝÁÅÔ ÌÀÂÁÑ ÆÕÎËÃÉÑ É ×ÓÅ ÆÏÒÍÁÔÙ ×ÈÏÄÑÝÉÈ × ÆÕÎËÃÉÀ ÁÒÇÕÍÅÎÔÏ×, Á ÚÁÏÄÎÏ É ÉÈ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ... äÁ É ×ÏÏÂÝÅ ÅÍÕ ÕÄÏÂÎÅÅ ÐÏÞÔÉ ÌÀÂÕÀ ÐÒÏÇÒÁÍÍÕ ÏÂÉÌØÎÏ ÕÄÏÂÒÑÔØ callback-ÁÍÉ, × "ÆÉÌÏÓÏÆÉÀ ÍÙÛÌÅÎÉÑ" ËÏÔÏÒÙÍÉ Ñ ×ÏÏÂÝŠΊרÅÄÕ, ÈÏÔÑ, ×ÒÏÄÅ, É ÐÏÎÉÍÁÀ ÎÅÍÎÏÖËÏ ÄÁÖÅ, ÞÔÏ ÔÁËÏÅ ÆÕÎËÃÉÑ ÎÁÄ ÆÕÎËÃÉÅÊ (ÎÅ ÐÕÔÁÔØ Ó ÆÕËÎÃÉÅÊ ÏÄÎÉÍ ÉÚ ÐÁÒÁÍÅÔÒÏ× ËÏÔÏÒÏÊ ÍÏÖÅÔ ÂÙÔØ ÄÒÕÇÁÑ ÆÕÎËÃÉÑ - ÞÔÏ É ÜËÓÐÌÕÁÔÉÒÕÅÔ callback), ÅÓÌÉ ÉÍÅÔØ ××ÉÄÕ ðáÌ (ðÏÚÉÃÉÏÎÎÕÀ áÌÇÅÂÒÕ ìÏÇÉËÉ). üÔÏ ÓËÁÚÁÎÏ ÂÅÚÏÔÎÏÓÉÔÅÌØÎÏ Ë ÔÏÍÕ, ÞÔÏ Ñ É ÓÁÍ ÐÏÌØÚÕÀÓØ ÔÅÍÉ ÖÅ u16, É ×Ï×ÓÅ ÎÅ ÐÏÔÏÍÕ, ÞÔÏ ËÏÍÕ-ÔÏ × ÔÁËÏÍ ÓÌÕÞÁÅ, ÞÔÏ-ÔÏ "×ÉÄÎÏ ÓÒÁÚÕ", Á ÐÏÔÏÍÕ, ÞÔÏ ÚÁÐÉÓØ ÐÏÌÕÞÁÅÔÓÑ ËÏÒÏÞÅ.

AA>> á × ÓÁÍÏÍ ÂÁÊÔÅ ÉÓËÁÔØ AA>> ÓÍÙÓÌÁ ÎÅ ÎÕÖÎÏ. äÒÕÇÏÅ ÄÅÌÏ UCHAR ÔÕÔ ÕÖÅ ÞÔÏ-ÔÏ ÏÓÍÙÓÌÅÎÎÏÅ × AA>> ÓÁÍÏÍ ÂÁÊÔÅ, Á ÎÅ × ÏÔÄÅÌØÎÙÈ ÅÇÏ ÂÉÔÁÈ. NS> ÷ ÍÏÉÈ ÚÁÄÁÞÁÈ ÐÏÌÅÚÎÅÅ ×ÉÄÅÔØ ÒÁÚÍÅÒ ÐÅÒÅÍÅÎÎÏÊ É ÚÎÁËÏ×ÏÓÔØ. NS> þÔÏ-ÇÄÅ-ËÁË ÉÓËÁÔØ ÏÂÙÞÎÏ ÐÏ ËÏÎÔÅËÓÔÕ ×ÉÄÎÏ.

÷ÏÔ Ñ É ÇÏ×ÏÒÀ, ÜÔÏ Ô×ÏÉ ÐÏÔÒÅÂÎÏÓÔÉ - ÄÌÑ ÄÒÕÇÉÈ (Ô×ÏÉÈ ËÏÌÌÅÇ) ÍÏÖÅÔ ÂÙÔØ É ÐÏÌÅÚÎÏ ÚÎÁÔØ Ô×ÏÉ ÎÁËÌÏÎÎÏÓÔÉ, ÎÏ ÎÅ ÓÔÏÉÔ ÐÒÅÕ×ÅÌÉÞÉ×ÁÔØ ÓÏÂÓÔ×ÅÎÎÙÅ ÐÒÅÄÐÏÞÔÅÎÉÑ. ëÁË É ÔÅ ÖÅ _BV(), int16_t É ÔÐ. ÉÚ ÂÉÂÌÉÏÔÅË winavr...

Andrey

Kirill,

You wrote to Nickita A Startcev:

NAS>> TCCR0 = _BV(CS2) | _BV(FOC); NAS>> ÅÝÅ ËÏÒÏÞÅ É ÎÁÇÌÑÄÎÅÅ. :) KF> TCCR0 = 1<<CS2 | 1<<FOC;

èÒÅÎ ÒÅÄØËÉ ÎÅ ÓÌÁÝÅ...

Andrey

Kirill,

You wrote to Andrej Arnold:

NA>>> BYTE - ÜÔÏ ÐÅÒ×ÙÊ ÛÁÇ Ë lplplpszMyVar1. :\ AA>> ôÅÍ ÎÅ ÍÅÎÅÅ ÍÎÅ ËÁË-ÔÏ ÌÅÇÞÅ ÇÌÑÄÑ ÎÁ ÐÅÒÅÍÅÎÎÕÀ ×ÉÄÅÔØ, ÞÔÏ AA>> ÜÔÏ ÎÅ ËÁËÉÅ-ÎÉÂÕÄØ ÄÁÎÎÙÅ, Á ÉÍÅÎÎÏ ÂÁÊÔ - × ÓÍÙÓÌÅ ÓÍÙÓÌÏ×ÏÊ AA>> ÎÁÂÏÒ ÂÉÔÏ×. á × ÓÁÍÏÍ ÂÁÊÔÅ ÉÓËÁÔØ ÓÍÙÓÌÁ ÎÅ ÎÕÖÎÏ. KF> âÁÊÔ -- ÜÔÏ uint8_t. á × C ÅÓÔØ ×ÓÔÒÏÅÎÎÙÊ ÔÉÐ char. ëÏÔÏÒÙÊ ÎÉ ÒÁÚÕ KF> ÎÅ ÂÁÊÔ.

á ÍÎÅ ÐÌÅ×ÁÔØ. ÷ ÍÏÊ PC ÎÅ ×ÓÔÒÏÅÎÙ AVRÙ. úÁÏÄÎÏ É uint8_t ÐÏÎÉÍÁÅÔ ÄÁÌÅËÏ ÎÅ ËÁÖÄÙÊ ËÏÍÐÉÌÑÔÏÒ, Á ×ÏÔ ÍÏÊ BYTE ÐÏÊͣÔ ËÁÖÄÙÊ, ÐÏÓËÏÌØËÕ "ÓÁÍÏÄÅÌØÎÙÊ ÈÉÄÅÒ" ×ÓÅÇÄÁ Ó ÓÏÂÏÊ...

AA>> äÒÕÇÏÅ ÄÅÌÏ UCHAR ÔÕÔ ÕÖÅ ÞÔÏ-ÔÏ ÏÓÍÙÓÌÅÎÎÏÅ × ÓÁÍÏÍ ÂÁÊÔÅ, Á ÎÅ AA>> × ÏÔÄÅÌØÎÙÈ ÅÇÏ ÂÉÔÁÈ. KF> éÚÏÂÒÅÔÅÎÉÅ ÓÁÍÏÄÅÌØÎÙÈ

ôÅÂÅ-ÔÏ ËÁËÁÑ ÐÅÞÁÌØ? ôÙ ÖÅ ÎÅ ÌÀÂÉÛØ ËÏÐÁÔØÓÑ × ÞÕÖÉÈ ÉÓÈÏÄÎÉËÁÈ!(ó) ðÏÌÁÇÁÅÛØ ÏÓÔÁÌØÎÙÅ ÇÏÒÑÔ ÖÅÌÁÎÉÅÍ ÐÏËÏÐÁÔØÓÑ × Ô×ÏÉÈ "ÐÒÁ×ÉÌØÎÙÈ"?

KF> ÜÌÅÍÅÎÔÁÒÎÙÈ ÔÉÐÏ× -- ÐÒÉÚÎÁË ÇÏ×ÎÏËÏÄÁ.

HÕ ×ÏÔ É ÎÅ ÐÉÛÉ ÇÏ×ÎÏËÏÄ Ó ÜÔÉÍÉ ÓÁÍÏÄÅÌØÎÙÍÉ uintx_t.

KF> èÏÔÑ ÂÙ ÐÏÔÏÍÕ, ÞÔÏ ÔÁËÏÊ ËÏÄ ÎÅÌØÚÑ ÐÏ×ÔÏÒÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ (Ctrl-C, KF> Ctrl-V) ÇÄÅ-ÌÉÂÏ Åݣ.

ó ÞÅÇÏ ÂÙ ÜÔÏ?

Andrey

Wed Sep 09 2009 22:19, Nickita A Startcev wrote to Dimmy Timchenko:

NAS> TCCR0 = _BV(CS2) | _BV(FOC); NAS> еще короче и нагляднее. :)

TCCR0 = 1<<CS2 | 1<<FOC;

Thu Sep 10 2009 00:05, Dmitry Orlov wrote to Nickita A Startcev:

DO> Hе короче и не нагляднее. Если запись 0b00000100 не вызывает вопросов

Запись 0b00010 HЕ ЯВЛЯЕТСЯ КОРРЕКТHОЙ для языка C, не поддерживается большинством компиляторов. Дальше можно не продолжать. Годится только для hello-world'ов. Хотя бы потому, что алгоритм иногда неплохо бы проверять на PC, до использования на контроллере, что с таким кодом попросту невозможно.

DO> вообще, важно только само значение. В записи TCCR0 = BIN8(00000100); DO> можно поверить, что макрос раскрывается правильно и тоже обращать DO> внимание только на значение, хотя уже возможны варианты и побочные

Макрос -- работает. Проверено электроникой.

DO> эффекты, то в записи DO> TCCR0 = _BV(CS2) | _BV(FOC); DO> непонятно что такое и _BV() и CS2 и FOC - нало лезть искать определения DO> всего, чтобы понять какое же число все же попадает в регстр.

Программисту знать какое число попадает в регистр -- HЕ HУЖHО. В регистр попадает CS2 и FOC. А за константы в коде -- пожизненный эцих с гвоздями...

Хотя запись 0xe5 вполне наглядна. Кому не наглядна -- пусть займутся чем-нибудь другим в жизни...

Fri Sep 11 2009 14:23, Andrej Arnold wrote to Nickita A Startcev:

NA>> BYTE - это первый шаг к lplplpszMyVar1. :\ AA> Тем не менее мне как-то легче глядя на переменную видеть, что это не AA> какие-нибудь данные, AA> а именно байт - в смысле смысловой набор битов. А в самом байте искать AA> смысла не нужно.

Байт -- это uint8_t. А в C есть встроенный тип char. Который ни разу не байт.

AA> Другое дело UCHAR тут уже что-то осмысленное в самом байте, а не в AA> отдельных его битах.

Изобретение самодельных элементарных типов -- признак говнокода. Хотя бы потому, что такой код нельзя повторно использовать (Ctrl-C, Ctrl-V) где-либо ещё.

Fri Sep 11 2009 20:21, Nickita A Startcev wrote to Andrej Arnold:

NA>>> BYTE - это первый шаг к lplplpszMyVar1. :\ NAS> Так это лучше из имени переменной доставать. NAS> Обозвать переменную массой, скоростью, редькофлагами - и сразу видно.

lpzstrBlaBlaBla имеет смысл в совершенно другом виде, для чего в оригинале и было изобретено. Говнокодеры всё облажали. Смысл был (применительно к массе) указать, что в переменной, например, килограммы, а не граммы, в скорости метры в секунду, а не километры в час и т.п. Это действительно полезно, иначе когда используется для одного и того же много размерностей легко наделать ошибок.

NAS> В моих задачах полезнее видеть размер переменной и знаковость. NAS> Что-где-как искать обычно по контексту видно.

Потому беззнаковость имеет очень узкое применение: только там где она критична (uint8_t, 8-битные контроллеры где в int ничего не лезет и знаковое сравнение чисел заметно тяжелее...) В остальном signed int заменяет и вносит МЕHЬШЕ проблем, когда вот это вдруг при расчётах что-то из чего-то отняли и получили ПЕРЕПОЛHЕHИЕ и неверное значение (отрицательное).

Hello, Kirill Frolov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 12 Sep

2009 07:33:58 +0000 (UTC):

DO>> Hе короче и не нагляднее. Если запись 0b00000100 не вызывает DO>> вопросов

KF> Запись 0b00010 HЕ ЯВЛЯЕТСЯ КОРРЕКТHОЙ для языка C, не KF> поддерживается большинством компиляторов. Дальше можно не

И что с того? В тех, что поддерживают такую запись она вполне корректна.

KF> продолжать. Годится только для hello-world'ов. Хотя бы потому, что KF> алгоритм иногда неплохо бы проверять на PC, до использования на KF> контроллере, что с таким кодом попросту невозможно.

Это попросто не возможно потому, что на PC нт таких регистров.

DO>> вообще, важно только само значение. В записи TCCR0 = DO>> BIN8(00000100); DO>> можно поверить, что макрос раскрывается правильно и тоже обращать DO>> внимание только на значение, хотя уже возможны варианты и побочные

KF> Макрос -- работает. Проверено электроникой.

DO>> эффекты, то в записи DO>> TCCR0 = _BV(CS2) | _BV(FOC); DO>> непонятно что такое и _BV() и CS2 и FOC - нало лезть искать DO>> определения всего, чтобы понять какое же число все же попадает в DO>> регстр.

KF> Программисту знать какое число попадает в регистр -- HЕ HУЖHО.

Программисту - нет. А вот инженеру, который видит, что делается не то, что должно - нужно.

KF> В регистр попадает CS2 и FOC. А за константы в коде -- пожизненный KF> эцих с гвоздями...

KF> Хотя запись 0xe5 вполне наглядна. Кому не наглядна -- пусть KF> займутся чем-нибудь другим в жизни...

Вот и займись.

dima

formatting link

Hello, Kirill Frolov! You wrote in conference fido7.ru.embedded to Andrej Arnold on Sat, 12 Sep

2009 07:39:29 +0000 (UTC):

NA>>> BYTE - это первый шаг к lplplpszMyVar1. :\ AA>> Тем не менее мне как-то легче глядя на переменную видеть, что это AA>> не какие-нибудь данные, а именно байт - в смысле смысловой набор AA>> битов. А в самом байте искать смысла не нужно.

KF> Байт -- это uint8_t. А в C есть встроенный тип char. Который ни KF> разу не байт.

AA>> Другое дело UCHAR тут уже что-то осмысленное в самом байте, а не в AA>> отдельных его битах.

KF> Изобретение самодельных элементарных типов -- признак говнокода. KF> Хотя бы потому, что такой код нельзя повторно использовать (Ctrl-C, KF> Ctrl-V) где-либо ещё.

Его по куче других, куда более веских причин нельзя где-либо еще использовать.

dima

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required