Перейти к содержанию
    

carmaster

Свой
  • Постов

    48
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о carmaster

  • Звание
    Участник
    Участник
  • День рождения 06.12.1976

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 240 просмотров профиля
  1. Lcd-image-converter из бесплатного лучше не находил. BitFontCreator уж очень дорого.
  2. Спасибо ! пока пользовался LS020 (от сименса) с атмегой16 . также вот приобрёл 32f4discovery, LCD 3.5 тоже от этой платы на днях должно прийти. попробую . атхмегу- пока на полочку отложил. предложения от ST конечно поражают по сравнению с атмелом
  3. xmega128a1 (xplained)+TFT MI0283qt-9a

    Доброго времени суток! Проблема такая. собственно не получается связать эти два девайса. опыта работы с tft до этого не было. пробовал по всякому, бьюсь уже 3 дня, ни по SPI, ни по 8bit - дисплейчик молчит. контроллер у него на борту ILI9341. если есть у кого-нибудь готовый проверенный hex с инициализацией этого контроллера или проверенная демка, просьба помочь. Или может codevision 3.08 есть - там в 3 секунды сгенерить можно для этого контроллера. хотя бы дисплей проверить живой или нет, оживёт - дальше буду разбираться.
  4. ATMega162 2UART

    спасибо, буду пробовать
  5. ATMega162 2UART

    Доброго времени суток! Стоит задача реализовать 2 uarta в меге162, uart0 на 9600 , uart1 на 56700, оба на приём/передачу. С тем, что генерит codevision не получается разобраться. то байты теряет, то вовсе зависает. к UART0 подключен девайс, к UART1 - терминалка. надо управлять девайсом и с меги и с терминалки, то есть уарт0 должен летать без тормозов. может кто-нибудь поделиться рабочим примерчиком на Си как всё это реализовать или хотя бы пинок в нужном направлении. с двумя уартами по прерыванию ни разу не работал. Спасибо! #include <mega162.h> #ifndef RXB8 #define RXB8 1 #endif #ifndef TXB8 #define TXB8 0 #endif #ifndef UPE #define UPE 2 #endif #ifndef DOR #define DOR 3 #endif #ifndef FE #define FE 4 #endif #ifndef UDRE #define UDRE 5 #endif #ifndef RXC #define RXC 7 #endif #define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC) // USART0 Receiver buffer #define RX_BUFFER_SIZE0 8 char rx_buffer0[RX_BUFFER_SIZE0]; #if RX_BUFFER_SIZE0 <= 256 unsigned char rx_wr_index0,rx_rd_index0,rx_counter0; #else unsigned int rx_wr_index0,rx_rd_index0,rx_counter0; #endif // This flag is set on USART0 Receiver buffer overflow bit rx_buffer_overflow0; // USART0 Receiver interrupt service routine interrupt [uSART0_RXC] void usart0_rx_isr(void) { char status,data; status=UCSR0A; data=UDR0; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer0[rx_wr_index0++]=data; #if RX_BUFFER_SIZE0 == 256 // special case for receiver buffer size=256 if (++rx_counter0 == 0) { #else if (rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0; if (++rx_counter0 == RX_BUFFER_SIZE0) { rx_counter0=0; #endif rx_buffer_overflow0=1; } } } #ifndef _DEBUG_TERMINAL_IO_ // Get a character from the USART0 Receiver buffer #define _ALTERNATE_GETCHAR_ #pragma used+ char getchar(void) { char data; while (rx_counter0==0); data=rx_buffer0[rx_rd_index0++]; #if RX_BUFFER_SIZE0 != 256 if (rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0; #endif #asm("cli") --rx_counter0; #asm("sei") return data; } #pragma used- #endif // USART0 Transmitter buffer #define TX_BUFFER_SIZE0 8 char tx_buffer0[TX_BUFFER_SIZE0]; #if TX_BUFFER_SIZE0 <= 256 unsigned char tx_wr_index0,tx_rd_index0,tx_counter0; #else unsigned int tx_wr_index0,tx_rd_index0,tx_counter0; #endif // USART0 Transmitter interrupt service routine interrupt [uSART0_TXC] void usart0_tx_isr(void) { if (tx_counter0) { --tx_counter0; UDR0=tx_buffer0[tx_rd_index0++]; #if TX_BUFFER_SIZE0 != 256 if (tx_rd_index0 == TX_BUFFER_SIZE0) tx_rd_index0=0; #endif } } #ifndef _DEBUG_TERMINAL_IO_ // Write a character to the USART0 Transmitter buffer #define _ALTERNATE_PUTCHAR_ #pragma used+ void putchar(char c) { while (tx_counter0 == TX_BUFFER_SIZE0); #asm("cli") if (tx_counter0 || ((UCSR0A & DATA_REGISTER_EMPTY)==0)) { tx_buffer0[tx_wr_index0++]=c; #if TX_BUFFER_SIZE0 != 256 if (tx_wr_index0 == TX_BUFFER_SIZE0) tx_wr_index0=0; #endif ++tx_counter0; } else UDR0=c; #asm("sei") } #pragma used- #endif // USART1 Receiver buffer #define RX_BUFFER_SIZE1 8 char rx_buffer1[RX_BUFFER_SIZE1]; #if RX_BUFFER_SIZE1 <= 256 unsigned char rx_wr_index1,rx_rd_index1,rx_counter1; #else unsigned int rx_wr_index1,rx_rd_index1,rx_counter1; #endif // This flag is set on USART1 Receiver buffer overflow bit rx_buffer_overflow1; // USART1 Receiver interrupt service routine interrupt [uSART1_RXC] void usart1_rx_isr(void) { char status,data; status=UCSR1A; data=UDR1; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer1[rx_wr_index1++]=data; #if RX_BUFFER_SIZE1 == 256 // special case for receiver buffer size=256 if (++rx_counter1 == 0) { #else if (rx_wr_index1 == RX_BUFFER_SIZE1) rx_wr_index1=0; if (++rx_counter1 == RX_BUFFER_SIZE1) { rx_counter1=0; #endif rx_buffer_overflow1=1; } } } // Get a character from the USART1 Receiver buffer #pragma used+ char getchar1(void) { char data; while (rx_counter1==0); data=rx_buffer1[rx_rd_index1++]; #if RX_BUFFER_SIZE1 != 256 if (rx_rd_index1 == RX_BUFFER_SIZE1) rx_rd_index1=0; #endif #asm("cli") --rx_counter1; #asm("sei") return data; } #pragma used- // USART1 Transmitter buffer #define TX_BUFFER_SIZE1 8 char tx_buffer1[TX_BUFFER_SIZE1]; #if TX_BUFFER_SIZE1 <= 256 unsigned char tx_wr_index1,tx_rd_index1,tx_counter1; #else unsigned int tx_wr_index1,tx_rd_index1,tx_counter1; #endif // USART1 Transmitter interrupt service routine interrupt [uSART1_TXC] void usart1_tx_isr(void) { if (tx_counter1) { --tx_counter1; UDR1=tx_buffer1[tx_rd_index1++]; #if TX_BUFFER_SIZE1 != 256 if (tx_rd_index1 == TX_BUFFER_SIZE1) tx_rd_index1=0; #endif } } // Write a character to the USART1 Transmitter buffer #pragma used+ void putchar1(char c) { while (tx_counter1 == TX_BUFFER_SIZE1); #asm("cli") if (tx_counter1 || ((UCSR1A & DATA_REGISTER_EMPTY)==0)) { tx_buffer1[tx_wr_index1++]=c; #if TX_BUFFER_SIZE1 != 256 if (tx_wr_index1 == TX_BUFFER_SIZE1) tx_wr_index1=0; #endif ++tx_counter1; } else UDR1=c; #asm("sei") } #pragma used- // Standard Input/Output functions #include <stdio.h> // Declare your global variables here void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // USART0 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART0 Receiver: On // USART0 Transmitter: On // USART0 Mode: Asynchronous // USART0 Baud Rate: 9600 UCSR0A=0x00; UCSR0B=0xD8; UCSR0C=0x86; UBRR0H=0x00; UBRR0L=0x47; // USART1 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART1 Receiver: On // USART1 Transmitter: On // USART1 Mode: Asynchronous // USART1 Baud Rate: 57600 UCSR1A=0x00; UCSR1B=0xD8; UCSR1C=0x86; UBRR1H=0x00; UBRR1L=0x0B; // Global enable interrupts #asm("sei") while (1) { // Place your code here } }
  6. даа... попал чувак ))) от преподов уже ни где не скрыться ))
  7. в твоём варианте проще 74 серию воткнуть, они всегда и везде в наличии, как советовал предыдущий постер. делов то на 20 минут )) удачи!
  8. на китайскую копию похоже нарвался. я тоже попадал неоднократно, причём не только камни, логики тоже куча попадалась. самое простое-это не работает на морозе, хотя допуск индустриальный,если верить маркировке. эти [CENSORED] лепят всё подряд , по виду не отличишь нормальный ход. с таким ещё не сталкивался. вот кидалово!
  9. Input capture

    ну ты даёшь, дружище! хоть бы отписал типа привет мужики, всех поздравляю, прошу помощи итп . и потом , ты привёл кусок кода не пойми чего. я хоть сам не профи, но вижу что без хедеров хрен чего поймёшь тут. надо както поподробнее. щас сам трахаюсь с таймером , но правда с 16 битным, вернее со связкой из 3 таймеров. думаю, если ты напряжёшь мозк , то разберёшься довольно бысто и сам , с 8 битниками должно быть всё просто. хотя судя по коду-ты его гдето спёр)) и сам не знаешь что тебе нужно от него. я бы на твоём месте углубился в литературу для начала для того,что бы потять как всё это работает, сам принцип,потом понять что же нужно на самом деле.
  10. датчики ABS тут помогут. фигня это всё , нетрудно сделать. ничего космического там не наблюдается.
  11. ATmega16 security bit

    Интересно, а сколько времени Вам необходимо чтобы проверить что Ваш приборчик фунициклирует действительно так как надо ? И что Вам залили 200% правильную прошивку ? Если не секрет, то о каком чипе идет речь ? Насколько я ничего не понимаю, судя по Вашему нику carmaster речь идет о тюнинге авто ? да там пик контроллер стоит , в нём доступ зашит. при проверке может и будет работать , а в эксплуатации начинаются глюки разные. если честно ковыряться просто лень , да и не стоит это того. но дело даже не в этом , дело в том что интересно выяснить : пилить или не пилить :) По телефону они пяткой в грудь себя бьют- говорят что даже плисы пилят за 8-10 евро, только просят для проверки штук несколько выслать непрошитых. вобщем - поживём увидим Если всётаки это правда , тогда вся работа и разработки которые более или менее чегото стоят могут в одночасье пойти коту под хвост В последнее время я начал замечать , что на рынок слишком часто стали попадать вещи , которые трудно склонировать каким то другим методом , кроме как микроскопом или у нас сверхгениальные программисты есть
  12. так в чём проблема? отнеси нормальный контроллер к твоему другу , он тебе и скопирует в другой контроллер.
  13. ATmega16 security bit

    А я его не рекламирую. Я же говорю - съезжу к ним , потом отпишу о результатах. Если они кого то обули , то сообщите , чтобы время не тратить даром. Сами же говорите что ходят слухи . а слова и дела - разные вещи. А с технической точки зрения считать прошивку возможно. Кстати если они действительно этим занимаются , то это не единственное место где пилят камни
  14. ATmega16 security bit

    было бы очень удивительно если там ктонибудь был бы, или хотя бы с кем нибудь удалось встретится.. ... Там где есть сверх секретные ключи уж явно позаботилсь о кристаллах где мелкоскоп отдыхает... а за кило кода стоимостью 2000 евро, я бы только и делал что писал писал и ещё раз писал.... и даже на асме, для очистки совести.... мне б так зарабатывать тиньку 15 исписал - 2000 евро получил... Иностранцы редко когда о чём-то заботятся. Если известно что писать - можно и подешевле... А если нужна 200% гарантия что будет работать как в оригинале , а за каждую ошибку придётся из своего кармана от 800 до 2000 евро выкладывать. Так что случаи бывают разные... Вот кстати сайт ихний http:((www-semiresearch-com Кому не лень , можно позвонить и пообщаться
  15. ATmega16 security bit

    Интересно, а не дешевле выйдет написать прогу с нуля. 2000евро за килобайт кода - неплохая такая оплата :) Конечно если там ключи шифрования какие-то надо считать, то тогда другой вопрос... приборчик в котором мой камень стоит больших денег стоит. В России его не ремонтируют официально .А упущенная прибыль тоже не маленькая. Да и неохота ковыряться с ним. Распространёные камни они похоже в автоматическом режиме читают . по крайней мере мне так показалось из общения по телефону.
×
×
  • Создать...