Микроконтроллеры | Поясните по Си |
|
---|---|---|
А какая разница???? |
|
|
Вот тут - http://pro-radio.ru/controllers/3473/ все хорошо разжевали про "volatile" . |
|
|
>Тоесть слово на слово - OCR0A=255 это встроенная в компилятор команда - так ? Не совсем. OCR0A - имя регистра. То что туда записано определяет скважность сигнала на выходе. В AVR Studio тип кристала задается в описании проэкта а не в тексте программы, хотя можно было бы и там. volatile - значит может поменяться "сама". Т.е. либо это железный регистр (скажем ADC) либо память которую может поменять процедура обработки прерывания. Возможно эта процедура описана в другом файле, но ключевое слово volatile говорит компилятору не пытаться оптимизировать. > а что значит ххх_t ? в типе - unit8 как-то понятнее - значит _t это какое-то добавление ? Ничего не значит. Просто подсказка человеку что это тип а не имя переменной. и теперь компилятор знает что когда видит unit8 надо понимать unsigned char |
|
|
Атрибут volatile используется для объявления переменных, которые могут быть изменены где-то вне обычного русла программы, напр. в обработчике прерывания. Этот атрибут заставляет компилятор всегда брать значение переменной из памяти, а не использовать значение когда-то загруженное в регистр и оставшееся там. Wladimir_TS: а что значит ххх_t ? в типе - unit8 как-то понятнее - значит _t это какое-то добавление ? Это значит, что данных типы где-то переопределены именно таким образом. uint8_t равноценно unsigned char |
|
|
Pedantic mode ON: Угу, только это не гарантирует, что это будет 8 бит. В теории верно лишь, что sizeof(char) меньше или равно sizeof (int). Так что может зависеть от аппаратной платформы. Кроме того, поскольку uint8_t это не встроенный тип, то надо поглядеть, что там накорябано в соответствующем typedef. Блин, что за хрень ? при сохранении смайликов и последовательности символов "меньше, равно" сообщение корежится... |
|
|
> поскольку uint8_t это не встроенный тип, то надо поглядеть, что там накорябано в соответствующем typedef. А почитать одно сообщение выше? Skeptic mode ON: можете назвать микроконтроллер с "С" компилятором для которого char не 8 бит? |
|
|
Весьма приличный справочник по С - http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/main.htm |
|
|
Swamp_Dok: я больше по С++ Ужос полный... "...а красные это скажу я вам вообще полный п....ц" (с) неофициальная озвучка одного известного фильма alexf58: : можете назвать микроконтроллер с "С" компилятором для которого char не 8 бит? DSPic - там внутренняя шина данных и регистров большая часть - 32 разряда... и соответственно если мы храним в памяти 8 бит, то отжираем все-равно вчетверо больше, как я понял. Кстати AVR Studio при хранении констант в памяти программ постоянно пытается использовать по пол ячейки, так как разрядность шины данный памяти программ - 16, а памяти данных - 8... |
|
|
Толи крыша не едет, тоди одно из 2х #define PORT_(port) PORT ## port Можно разжевать сию конструкцию - зачем (1 и 3 строка) переприсваивать друг-другу ? В тексте программы например есть команда SET_DDR(OCR0B) - это эквивалентно LDI Rх, $FFh (SER Rx) |
|
|
Wladimir_TS: 32 разряда... и соответственно если мы храним в памяти 8 бит, то отжираем все-равно вчетверо больше, как я понял. Это к делу не относится - сколько памяти используется. Результаты операций зависят от типа данных. Некоторые программы написанные на х86 перестают работать на 64 битных ОС потому что логика программы предполагает что int 32 бита, а тут - 64. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |