Свежие обсуждения
Микроконтроллеры

5V -> RS232C

1 3 4
Да шутка это - извиняюсь я...
Самого коробит, когда пишут неграмотно на полном серьезе...

Ну вот - исправил. На картинке - разряд конденсатора 22000 мкФ через 24 кОм...

 
Класс  
По Turbo С, к тому же, полно учебников в электронном виде. Если надо, могу все это хозяйство выложить на narod.ru.
-------------------------------------
Выложите, если не сложно.
 
Выложил. В архиве пакет Turbo C 2.0 + две книги, "Язык С" K&R и "Турбо Си" (в кодировке DOS).

http://sirdvm.narod.ru/download/turboc.rar
(1.29МБ)
Есть опасение, на narod.ru с файлом такого размера может выйти чего-нибудь нехорошее..

Несколько пояснений:

"Турбо Си" - учебник, ориентированный на этот пакет. Первая часть - в основном, описание пользовательского интерфейса, меню и т.д. Все это можно просмотреть бегло, т.к. на сегодняшний день Turbo C (пакет, а не язык) безнадежно устарел как средство разработки. Собственно описание языка и библиотечных функций начинается с главы 6. Существует продолжение этой книги, выложу позже (если найду).

Талмуд K&R - полное и очень подробное описание "C", составленное его создателями (в виде учебника). Первоисточник, так сказать. Но, есть несколько особенностей (связанных с тем, что на момент написания книги Си был довольно молодой и "сырой" язык). Примеры набраны в верхнем регистре, по этой причине будут компилироваться с ошибками. Кроме того, нет директив #include. Короче говоря, эта книга - хорошее пособие для изучение элементов языка (операторов и т.д.) и его идеологии, но к листингам следует относится с осторожностью.

Знакомство с языком следует начинать, разумеется, с компиляции примера "hello.c" : ) Натренировавшись, можно переходить на компиляторы Си для микроконтроллеров.

Может возникнуть вопрос: хорошо, на персоналке есть возможность ввода-вывода при помощи printf/scanf и т.п. функций, а что же делать на МК? Моргать светодиодами? : ) К счаcтью, эти функции - часть стандарта, и работают на любой платформе. В частности, на микроконтроллерах, как правило, есть возможность перенаправить ввод-вывод в окно терминала. Но это уже другая история..

Хотелось бы упомянуть ресурс
http://avr123.by.ru
Но -- я это не изучал, поэтому судить о полезности/ошибках/недочетах сложно. Замечу только, что ImageCraft C - отвратительный с т.з. оптимизации компилятор. Если есть желание строго соблюдать закон, но нет лишних денег, разумный выбор для AVR - AVR-GCC (WinAVR).

 
DVM, Спасибо! Скачал, почитаем. Книгу Б.Кернигана, Д.Ритчи «Язык программирования СИ» 3е –издание купил сегодня в бумажном варианте.

разумный выбор для AVR - AVR-GCC (WinAVR).

Если можно, по шагам, как скомпилировать и отладить программу в WinAVR?

 
А вот очень полезная ссылка - очень здорово мне помогла
http://pro-radio.ru/controllers/427
 
Итак, как создать hex при помощи WinAVR 20040404, по шагам (довольно сжато и без всяких подробностей, если возникнут вопросы – лучше уточнить конкретно по ним).

1) Проверить, прописаны ли папки WinAVR/bin и WinAVR/utils/bin в PATH (autoexec.bat).

2) Создать папку для своего проекта.

3) Подготовить исходники в любом текстовом редакторе. Предположим, файл всего один и назван test.c

4) Скопировать WinAVR/sample/makefile в свою папку. Это, в некотором роде, аналог BAT-файла. Для начала в подробности вникать не обязательно, достаточно сделать следующее:

Заменить строку
MCU = atmega128
на соответствующую выбранному контроллеру, например
MCU = atmega16

Заменить строку
TARGET = main
на
TARGET = test
(по имени единственно модуля, test.c)

5) Набрать команду make (в командной строке). При этом папка проекта должна быть текущей. Собственно все, hex готов. Кроме hex, в папке проекта появится куча других файлов, в т.ч. листинги с ассемблерным кодом. Что есть что, нетрудно понять, посмотрев эти файлы в текстовом редакторе. Для очистки папки проекта от всей этой фигни (включая hex) можно набрать команду
make clean

6) Для отладки можно использовать AVRStudio. Необходимо получить файл в формате COFF, набрав команду
make coff
или
make extcoff
для AVRStudio версии 4.07 и выше.

В результате в папке проекта появится файл test.cof. Его и надо загрузить в AVRStudio, дальше все должно быть понятно. Для примера, см. скриншот в прикрепленном файле (AVRStudio 3.56).

 
Для подготовки исходников и компиляции удобно использовать интегрированную среду Programmers Notepad, включенную в пакет WinAVR. makefile пригодится и в этом случае. Работа с утилитой make в таком случае идет через меню Tools. При желании, можно добавить свои инструменты и определить "горячие" клавиши. См. скриншот.

 
Тестовый проект в архиве (прикрепленный файл).

5796.rar

 
Итак, как создать hex при помощи WinAVR 20040404

Спасибо, всё получилось.
Взял простенький пример:

#include <io.h>
typedef unsigned char u08;

int main( void )
{
u08 led, i, j, k;
outp(0xff,DDRD);
led = 1;

for (;;) {
outp(~led, PORTD);
led <<= 1;
if (!led)
led = 1;
for (i=0; i<255; i++)
for(j=0; j<100; j++)
k++;
}
}

Проверил как это работает в Visual Micro Lab. В принципе в этом пакете можно редактировать , отправлять на компиляцию в WinAVR , эмулировать работу программы. Фаил проекта для примера со светодиодами.
----------------------------------------
; ************************************************************
; PROJECT:
; AUTHOR:
; ************************************************************

; Micro + software running
; ------------------------------------------------------------
.MICRO "AT90S8515"
.TOOLCHAIN "GCC"
.GCCPATH "C:WinAVR"
.GCCMAKE AUTO
.TARGET "gcctest3.hex"
.SOURCE "gcctest3.c"

; Following lines are optional; if not included
; exactly these values are taken by default
; ------------------------------------------------------------
.POWER VDD=5 VSS=0 ; Power nodes
.CLOCK 14meg ; Micro clock
.STORE 250m ; Trace (micro+signals) storage time
D1 VDD D1_NODE
R1 D1_NODE PD0 1K
D2 VDD D2_NODE
R2 D2_NODE PD1 1K
D3 VDD D3_Node
R3 D3_NODE PD2 1K
D4 VDD D4_NODE
R4 D4_NODE PD3 1K
D5 VDD D5_Node
R5 D5_NODE PD4 1K
D6 VDD D6_Node
R6 D6_NODE PD6 1K
D7 VDD D7_Node
R7 D7_NODE PD7 1K

.PLOT V(PD0) V(PD1) V(PD2) V(PD3) V(PD4) V(PD5) V(PD6) V(PD7)
---------------------------------------------

В приложенном «скриншоте» окно виртуального осциллографа.

Позже прошил контроллер , всё работает