|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 11:35 pm
|
Страница 1 от 1
|
[ 9 мнения ] |
|
PIC TCP/IP stack не тръгва
| Автор |
Съобщение |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 PIC TCP/IP stack не тръгва
Използвам MPlab v8.33 и CCS complier v4.069. Проблемът е следния: след компилация програмата не тръгва на контролера. Опитах с някаква обикновена програма и контролера си върви отлично. Използвам ПИК 18F66J60. Имам съмнения, че нещо съм объркал в модифицирането на ccstcpip.h. Понеже моят контролер го нямаше в списъка в този хедър, аз спрях всички възможности и в main.c си предефинирах моя: Кодът се компилира обаче като го заредя на чина нищо не става(изобщо не тръгва дори и да не ползвам стака, а задавам някакви прости работи примерно output_high(PIN_F1)). Може ли малко помощ? Благодаря!
_________________www.elkran.com
|
| Сря Апр 25, 2012 5:50 pm |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
 Re: PIC TCP/IP stack не тръгва
Карай step-by-step... 1. Подкарай контролера... 2. Пусни стека.... 3. Виж как се държи с отсрещната страна...
|
| Чет Апр 26, 2012 10:09 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC TCP/IP stack не тръгва
Контролера работи. Пробвах с няколко простички програми - всичко е наред. Ето това ми е основния файл, от където задавам IP и маска:  |  |  |  | Код: ////////////////////////////////////////////////////////////////////////////// // // ccstcpip.h - Common code shared among all Embedded Internet/Embedded // Ethernet tutorial book examples. // // If you are using a CCS Embedded Ethernet Board (labeled PICENS, which // has an MCP ENC28J60) then define STACK_USE_CCS_PICENS to TRUE. // // If you are using a CCS Embedded Internet Board (labeled PICNET, which // has a Realtek RTL8019AS and a 56K Modem) then define STACK_USE_CCS_PICNET // to TRUE. // ////////////////////////////////////////////////////////////////////////////// // // 10/25/06 // - Added STACK_USE_CCS_PICEEC // - ExampleUDPPacket[] UDP header length fixed // //////////////////////////////////////////////////////////////////////////////
#if STACK_USE_CCS_PICENS #define STACK_USE_MCPENC 1 #endif
#if STACK_USE_CCS_PICEEC #define STACK_USE_MCPINC 1 #endif
#include <18F66J60.h> #fuses NOWDT, NODEBUG,HS, NOIESO, NOFCMEN, PRIMARY #use delay(clock=25M)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include "tcpip/stacktsk.c" //include Microchip TCP/IP Stack
#if STACK_USE_CCS_PICEEC #include "tcpip/elcd.c" #define BUTTON1_PRESSED() (!input(PIN_A4)) #define USER_LED1 PIN_A0 #define USER_LED2 PIN_A1 #define USER_LED3 PIN_A2 #define LED_ON output_low #define LED_OFF output_high #define STANDARD_ADC_STRING "AN2" #define STANDARD_ADC_CHANNEL 2 void init_user_io(void) { // setup_adc(ADC_CLOCK_INTERNAL); //setup_adc_ports(AN0_TO_AN2); // set_adc_channel(2); *0xF92=*0xF92 & 0x00; //a0 and a1 output // *0xF93=*0xF93 & 0xC7; //b3, b4 and b5 output LED_OFF(USER_LED1); LED_OFF(USER_LED2); LED_OFF(USER_LED3); //set_adc_channel(2); }
void MACAddrInit(void) { MY_MAC_BYTE1=0; MY_MAC_BYTE2=2; MY_MAC_BYTE3=3; MY_MAC_BYTE4=4; MY_MAC_BYTE5=5; MY_MAC_BYTE6=6; }
void IPAddrInit(void) { //IP address of this unit MY_IP_BYTE1=192; MY_IP_BYTE2=168; MY_IP_BYTE3=0; MY_IP_BYTE4=7;
//network gateway MY_GATE_BYTE1=192; MY_GATE_BYTE2=168; MY_GATE_BYTE3=0; MY_GATE_BYTE4=1;
//subnet mask MY_MASK_BYTE1=255; MY_MASK_BYTE2=255; MY_MASK_BYTE3=255; MY_MASK_BYTE4=0; }
char ExampleIPDatagram[] = { 0x45, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x64, 0x11, 0x2A, 0x9D, 0x0A, 0x0B, 0x0C, 0x0D, 0x0A, 0x0B, 0x0C, 0x0E };
char ExampleUDPPacket[] = { 0x04, 0x00, 0x04, 0x01, 0x00, 0x08, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04 };
|  |  |  |  |
Само това съм променял. Иначе използвам ex11.c. Ето как съм направил схемата: TPOUT+(51) към пин 1 на RJ TPOUT-(50) към пин 2 на RJ TPIN+(47) към пин 7 TPIN-(46) към пин 8 Използвам TS8P8C-PCB-ETH TRAF. Когато пусна това чудо да работи и измеря напреженията имам около 3,2-3,3 волта м/у 0 и TPOUT+/-. На TPIN+/- нямам нищо. Това, че контролера вади нещо на изхода би трябвало да значи, че работи обаче рутера, към който го свързвам също работи 100%. Какво бъркам??? Помощ!
_________________www.elkran.com
|
| Пет Апр 27, 2012 3:15 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC TCP/IP stack не тръгва
Заредих ех11.с от стака. Ето част от кода  |  |  |  | Код: static TICKTYPE lastTick; static enum {LCD_Display=0, LCD_Wait=1} state=0;
switch(state) { case LCD_Display: printf(lcd_putc,"\fCCS TCP/IP Tut."); if (!MACIsLinked()) { printf(lcd_putc,"\nNo Ethernet"); } else if (!DHCPIsBound()) { printf(lcd_putc,"\nDCHP Not Bound"); } else { printf(lcd_putc,"\n%u.%u.%u.%u", MY_IP_BYTE1, MY_IP_BYTE2, MY_IP_BYTE3, MY_IP_BYTE4); } lastTick=TickGet(); state=LCD_Wait; break;
case LCD_Wait: if (TickGetDiff(TickGet(), lastTick) >= TICKS_PER_SECOND) state=LCD_Display; break; } }
|  |  |  |  |
В мейна си прави StackTask(); и после извиква тази функция. На дисплея ми изписва първото и второто съобщение като ги мени през примерно 0,5-1s. При мен дисплея е малко по-различен и съм направил някои промени, но работи коректно. Може ли някой да ме ориентира къде да търся проблема? Като включа рутер или суйч дори не светва лампата му, че има свързано устройство. По принцип ако нямам зареден стак и просто го включа към рутера трябва ли да светне, че има нещо включено??? Благодаря!
_________________www.elkran.com
|
| Сря Май 02, 2012 10:19 am |
|
 |
|
Reader
Ранг: Новодошъл
Регистриран на: Нед Апр 17, 2005 9:23 am Мнения: 112
|
 Re: PIC TCP/IP stack не тръгва
@stoyanoff: С голямо желание да помогна, въпреки че не съм използвал нито CSS, нито PIC-ове с вграден Ethernet; работя с Microchip-ското C, а модемите са външни — ENC28x и ENC424x. Само RJ-то е същото. Връзките които описваш са правилни. Само че от описанието ти ми се струва, че не си закачил останалата „карантия“ след изводите: еднопроцентните 49,9 ома и останалото преди трансформатора (стр.219 от документацията). Средната точка от горните резистори трябва да отиде на извод 3 на трансформатора. Практиката показа, че стойността на тези 49,9 ома не е критична за ENC28x (бяха объркали една доставка и партида от 50+ броя замина с 49,9К, от която все още няма оплаквания – работи като пушка), но за новите ENC424x е важна — отказа да се свързва с каквото и да било, докато не открихме грешката в стойностите и не заменихме резисторите. Надявам се, че не си забравил и BIAS-резистора (еднопроцентовия 2,26k). Навсякъде по форумите го описват като много капризен откъм стойност, макар че по време на тестовете използвахме нагодена „на око“ комбинация, с която работеше без проблем и с двата чипа. Е, за продукцията си купихме еднопроцентови резистори (според документацията), но и другите работеха. Пак за BIAS-а — не е зле да поровиш errat-ите; при ENC28x (а твоят чип е с подобно ядро) смениха стойността на BIAS резистора — първите версии изискваха една стойност, последните — друга. И Комет-ци като ни доставиха една мешавица от стари и нови, настъпи една веселба… И — само за информация, макар че не знам доколко важи при вградени в PIC-а модеми — и двата модела, които съм пробвал, се връзват в LAN-а дори да нямат процесор; очевидно само се разбират за скорости и режим (half- full- и т.н.) и след това чака инициализация за IP-та, DHCP-та и т.н. — в зависимост от приложението ти. Но суича (или рутера или каквото там имаш) си ги регистрират и съответните лампички светват. Аз съм дотук. Успех! 
|
| Сря Май 02, 2012 11:02 am |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC TCP/IP stack не тръгва
Не съм търсил резистори с точните отклонения. Ползвам 50 омови(най-обинковени). R bias е свързан с 2,2к резистор. Не съм смятал, че ще е проблем. Средната точка е свързана,както казваш. Другата средна точка не е свързана. Схемата ми е почти идентична като тази дадена в инструкцията на чипа. Единствено не съм сложил двете индуктивности. Започвам да се притеснявам да не би поради този факт да съм изгорил изходите на контролера. По принцип съм виждал схеми, при които не ползват такива индуктивноси(може просто да са ги заменили с резистори, защото пише 120 ома на тях) и за това.
_________________www.elkran.com
|
| Сря Май 02, 2012 12:12 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC TCP/IP stack не тръгва
Тук става нещо интересно. Мисля, че стака ми си е наред, но контролерът ми се рестартира след определен период от време. Задал съм да няма WDT. Някакви идеи какво може да причинява това???
_________________www.elkran.com
|
| Пон Май 14, 2012 3:30 pm |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
 Re: PIC TCP/IP stack не тръгва
Не, но ако използваш RESTART_CAUSE() от CCS и следиш резултата ще разбереш дали се рестартира и поради какво.
|
| Пон Май 14, 2012 3:40 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC TCP/IP stack не тръгва
Много се дразня на такива недоглеждания от моя страна. Като сглобявах платката сложих малки кондензатори на захранването(такива имах). Явно като се включва Ethernet модула черпи доста ток и тези кондензатори не издържат, съответно ми се ресва чипа. Сложих по-голям и всичко е ОК. Благодаря за помощта!
_________________www.elkran.com
|
| Сря Май 16, 2012 1:45 pm |
|
|
|
Страница 1 от 1
|
[ 9 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: Google [Bot] и 31 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|