Цитата(Handler @ Jul 10 2007, 02:40)

под С я так понимаю все по другому сначала думаешь, что тебе надо потом ищешь в библиотеке нужную функцию, я прав?
Конечно нет.
Сначала читаете книгу Кернигана и Ритчи "Язык программирования С". Ее полно в интернете. В процессе чтения понимате, что язык состоит примерно из 30 ключевых слов. И все "Библиотечные функции" написаны с использованием именно этих слов.
Использование приведенных вами функций - лишь один из возможных приемов, но не стоит себя ограничивать только этими функциями (я, например, их вообще не использую), ибо часто написание "в лоб" будет эффективнее.
Цитата(Handler @ Jul 10 2007, 02:40)

как я понял надо примерно так
Вопрос, теперь а_in будет значением порта, 32-битным числом?
До этого я так понял надо порты включить и назначить на выход
Да, да, да.
Цитата(Handler @ Jul 10 2007, 02:40)

2. Тут все говорят про пример BasicUsb
не знаю, не работал

Цитата(Handler @ Jul 10 2007, 02:40)

там вроде с USB побольше, могу я из него брать куски кода или IAR не поймет?
Можете, поймет, но не все. Потребуется доработка напильником. Чаще всего очень небольшая. Или сравнительно большая, но в небольшом количестве мест.
Цитата(Handler @ Jul 10 2007, 02:40)

3. Я не нашел в библиотеке функций отвечающих за таймер TC, мне надо установить частоту и читать значение самого таймера, и ещё есть ли у него функция обнуления, чтоб не боятся переполнения и каждый раз его самому обнулять.
Вот один из минусов использования библиотеки: как только нет готовой функции - сразу же ступор. Функции
этой библиотеки просто пишут и читают регистры, оформляя это в удобно проименованные "обертки". Напишите такие функции сами или работайте сразу с регистрами.
Про переполнение - а чего его бояться? В процессе переполнения таймер обнулится и выдаст прерывание - можете считать количество переполнений. Существует режим таймера, когда период обнуления задается в одном из его регистров. Причем и переполение и аппаратное обнуление происходит всегда в строго определенные моменты времени. Сбрасывая таймер программно вы никогда не получите такой же точности.
Цитата(Handler @ Jul 10 2007, 02:40)

4. Как вообще писать в память и читать из неё, под асм все понятно адреса и до конца(до последнего адреса), а как на С забить все память, какая мне нужна функция?
На С
в большинстве случаев вам вообще не нужно вспоминать, что существует такое понятие как "адрес". В С существуют переменные и указатели
на эти переменныеЦитата(Handler @ Jul 10 2007, 02:40)

Ещё после 8 бит на AVR тут, когда вроде можно и 8 и 16 и 32, не совсем все понятно, могу я прочитать только первые 16 бит порта и объединить их с 16-битным таймером в одно двойное слово 32-битное и записать так в память, или как это вообще происходит.
нет-да. Т.е. если порт представляет из себя 32(16, 8) разрядный регистр, то и читать обязательно нужно сразу все 32 (16, 8) бит. Компилятор сам знает (точнее, ему в заголовочном файле указано) какой регистр имеет какой размер и подставляет нужные значения. Дальше вы маскируете ненужные биты операциями "И" или сдвигом. А в памяти точно также может храниться 8, 16, 32, 64 - битное число, поэтому не совсем понятно зачем вам их объединять. но если хотите - маски и сдвиги к вашим услугам. На всякий случай несколько примеров:
Код
#include <stdint.h>
#include <ioAT91SAM7X256.h>
uint32_t a;
struct
{
uint16_t Inputs;
uint16_t Timer;
} b;
void test()
{
a =(uint16_t)(AT91C_BASE_TCB->TCB_TC0.TC_CV << 16) | (AT91C_BASE_PIOA->PDSR & 0xFFFF);
b.Timer = AT91C_BASE_TCB->TCB_TC0.TC_CV;
b.Inputs = AT91C_BASE_PIOA->PDSR;
}
Цитата(Handler @ Jul 10 2007, 02:40)

а у меня вот в памяти будут значения портов и таймера, как мне их подсовывать в pCDC.Write(&pCDC, data, length);
Керниган и Ритчи. Читать про структуры, массивы, указатели, приведение типов, указатель void *.
Цитата(Handler @ Jul 10 2007, 02:40)

6.Я понял, что когда МК с соответствующей прогой подключается к компьютеру, ему(компьютеру) надо дать атмеловский драйвер, а какой прогой получаться сами данные и где взять эту программу? и в каком виду данные появятся на компьютере?
Искать по форуму. Этот вопрос тут обсуждался много раз.