Adhy
Probeer niet jezelf te zijn, je bent ut al...
Hoi mede CO'ers,
Ik ben bezig met een PIC-webserver te maken. Ik heb een 18F4520 en een ENC28j60 op een zelfgemaakt printje gesoldeerd (als het allemaal werkt komt 'ie in de show your projects
).
Ik gebruik nu een labvoeding op 8 volt om een 7805 te voeden voor de spanning voor de PIC. Deze 5 volt wordt door een LM317 in ong. 3,6 Volt gezet voor de ENC28j60. Beide regulators hebben 100 nF ontkoppel C's en elco's volgens onderstaand schema. Aan de PIC hangt ook een LCD. Het gekke is dat de PIC niet erg stabiel is:
Als ik het hele happie met de schakelaar van de labvoeding schakel (klik aan - klik uit) dan werkt het in 80 % van de gevallen goed, er staat tekst op de LCD (vooral als mijn schakeling een tijdje aan heeft gestaan. Maar als die een tijd uit heeft gestaan werkt het weer minder). Als ik de kabel tussen de voeding en mijn schakeling gebruik om te schakelen (dus hem in de bus van de labvoeding steek) dan werkt het niet goed: de LCD laat snel oscillerende troep zien (niet eens karakters, gewoon random garbage). De enc draait op 25 MHz crystal met 18 pF c's en de PIC op 40 MHz (10 MHz 4xPLL met 22 pF c's).
Mijn oplossingspogingen:
-het laag trekken van /MCLR om te resetten werkt niet, de LCD vult zich met 3'en (?!) en na een reset weer garbage.
-Ik heb een delay 1 sec als eerste instructie om de oscillator op gang te laten komen
-Ik heb met het IESO (internal/external clock switch over) geprobeerd.
Wat kan het verschil maken dat de labvoeding aan/uit schakelen wel werkt en de draadjes van de schakeling schakelen niet? Heeft het iets met de 7805/lm317 seriecombinatie te maken?
[edit] Ik heb zojuist ook het tweede Vdd/Vss paar aangesloten en een 100 nF erover gezet, maar geen verschil...
Adhy
Probeer niet jezelf te zijn, je bent ut al...
Kan ik proberen, maar die LM317 voedt alleen de ENC op 3,6 volt. Het probleem lijkt in de PIC te zitten en die wordt direct met de 5 volt uit de 7805 gevoedt...
[edit] geprobeerd, maar geen verschil
[Bericht gewijzigd door Adhy op (11%)]
Adhy
Probeer niet jezelf te zijn, je bent ut al...
Ik vermoed dat het iets met een of andere interferentie te maken heeft waar ik eigenlijk nog niet zo veel van weet. Daarom hier mijn board-layout. Als iemand het een en ander met elkaar in verband kan brengen, dan zou ik daar weer erg mee geholpen zijn in mijn zoektocht...
Ik heb nog een plane ge'pour'd (heet dat zo?). Geen groundplane zoals wellicht beter zou zijn. Staat niet hierop voor de leesbaarheid.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
De ENC28J60 gebruikt maximaal zo'n 200mA.
Volgens de datasheet heeft de LM317 bij 25 graden en 200mA belasting een drop-out voltage van 1.8 volt.
5-3.6=1.4, dus dat gaat zo niet...
Adhy
Probeer niet jezelf te zijn, je bent ut al...
Bedankt voor de reacties tot nu toe!
Als ik een nieuwe print ga maken dan zal ik de lm317 zeker direct uit de 8V voeden, ik heb geen idee waarom ik dat niet al meteen heb gedaan eigenlijk...
Helaas lost dit het grootste probleem niet op: zelfs met afgekoppelde lm317 en geen ENC op de print doet de PIC raar.
Ik programmeer de pic met MikroC. Als ik de lcd initialiseer, dan een enkel karakter naar de lcd schrijf en vervolgens een tekenreeks:
void main()
{
while (!OSTS) // Wait for stable oscillator
Delay_ms(1000);
adcon0=0;
adcon1=0b00001111;
TRISB=0;
Delay_ms(500);
Lcd_Init(&LATB); // Initialize LCD connected to PORTB
Lcd_Cmd(Lcd_CLEAR); // Clear display
Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off
Delay_ms(100);
Lcd_Chr_Cp('a');
Delay_ms(1000);
Lcd_Out(2, 2, "ajhgf"); // Print text to LCD, 2nd row, 1st column
Delay_ms(100);
while(1);
}
dan reageert de pic dus afhankelijk van de gekozen voeding:
-schakelen met de aan-uit knop van de labvoeding: hij doet het meestal goed.
-schakelen met draadje prikken in aanstaande voeding: het ene karakter, de 'a' staat soms netjes op de lcd en zodra hij de 'ajhgf' gaat schrijven geeft hij random garbage op de lcd hoop trillen en schokken enzo.
Dit heb ik een aantal keer waargenomen en is echt een patroon, geen toeval. Als ik de labvoeding een tijdje uit heb laten staan en dan klik-aan dan doet hij het meestal ook niet goed...
Iemand een idee? Ik snap er echt niks meer van 
parallel op c13 een grotere capaciteit zetten
afhankelijk hoeveel stroom de schakeling gebruikt (inschakelpiek ?)
maar 1.000 uf of zo zal wel gaan en kijken of dat effect geeft
Adhy
Probeer niet jezelf te zijn, je bent ut al...
Bedankt voor de suggestie, ik heb 'm geplaatst, maar helaas geen verschil.
Het rare is dat de PIC eerst wel goed loopt steeds (de lcd wordt wel geinitialiseerd, en de a komt netjes op het scherm), daarna gaat het pas mis... knipperende zwarte blokjes met onleesbare rommel ertussendoor
Adhy
Probeer niet jezelf te zijn, je bent ut al...
IK BEN ERUIT!! Dat wil zeggen, ik heb het probleem gelocaliseerd..
De 74HCT08N in het schema die de level-conversie 3,3->5 doet tussen de enc en de pic veroorzaakte het probleem. Ik heb hem vervangen door een ander en nu werkt het vlekkeloos.
Nu herinner ik me ook weer dat hij het helemaal in het begin ook goed deed en pas later kuren ging vertonen. Gaat zo'n AND poort stuk op de manier dat ik hem heb aangesloten, of is het puur toeval (waarvan sommigen zeggen dat het niet bestaat) ?? Het lijkt alsof ik hem volgens schema heb aangesloten.
op schema staat 7408N
er is wel een verschil
7408 HCT heeft 1 input level van 3,1 volt, de 7408N van 2 volt
Adhy
Probeer niet jezelf te zijn, je bent ut al...
Ah, dat wist ik niet... Voor de conversie van 3,3->5 voldoen dan toch beide exemplaren?
Dan nu het slechte nieuws.. Het probleem is toch niet verholpen door de 7408 te vervangen. Het probleem was een paar uur geleden toch ineens weer terug.
Om niet de haren uit mijn hoofd te hoeven trekken (ik ben zowieso al kalend, dus dat beetje moet je koesteren) dacht lk de hele schakeling opnieuw op te bouwen. In een breadboard ben ik toen begonnen met een 18f4520 zonder extern kristal en met 100 nF'jes over de voedingspinnen. Verder een lcd op PORTB en een ledje op PORTB.1
zelfs zo basic geeft hij het probleem: met de labvoeding schakelen gaat het goed, de led knippert en de lcd wordt geinitialiseerd. Met de voedingsdraadjes schakelen, of de /MCLR gebruiken: de lcd wordt niet geinitialiseerd, maar de led knippert wel. er zit een pullup op de /mclr en alle poorten zijn volgens mij output gezet:
dit is de code:
char *text = "CO is gaaf";
void main() {
intcon=0x00;
intcon3=0x00;
TRISA = 0x00;
TRISB = 0x00;
TRISC = 0x00;
TRISD = 0x00;
TRISE = 0x00; // PORTB is output
adcon0=0x00;
adcon1=0b00001111;
Delay_ms(1000); // ledje knipperen
PORTB.F1 = 0;
Delay_ms(1000);
PORTB.F1 = 1;
Lcd_Init(&PORTB); // Initialize LCD connected to PORTB
Lcd_Cmd(Lcd_CLEAR); // Clear display
Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off
Lcd_Chr_Cp('a');
Delay_ms(1000);
Lcd_Out(1, 1, text); // Print text to LCD, 2nd row, 1st column
}//~!
Heeft iemand een idee hoe dit komt? Het lijkt iets met zwevende pinnen te maken te hebben, maar alles is output. Ik snap er helemaal niks meer van...

