Sida 2 av 3

Re: PIc16 Hitech och 44780

Postat: 12 maj 2010, 21:41:04
av Zajber
Tack så mycket för den informationen Fearsome. Jag har satt fördröjningarna som du tipsade om utan resultat.

Ibland får jag några streck och en pekare men för det mesta inget alls.
Jag har vändt vridit på allt kablar nu så jag vet inte vad längre.
Ibland funkar det om jag kör RS och E på RA0 och RA1. Men nästan aldrig på några pinnar på PORTB.
Kört PORTB som data, jag får lite random streck om jag kör på dom högre bitarna på denna port, men enligt specen så ska bitarna 4-7 på displayen ligga på dom nedre bitarna på porten, men där får jag inget alls på skärmen.

Kod: Markera allt

#define	LCD_RS RA0
#define	LCD_RW RA2 //Skit samma, direkt på 0:an.
#define LCD_EN RA1

#define LCD_DATA	PORTB  //PORTD i orginalkoden
Vart är lämpligast att lägga utgångarna? Jag har en 16f88.

Jag har suttit precis hela dagen med pic nu, från mogonen med skolprojeket som äntligen funkar och sen hem och fortsätta misslyckas med detta, jag måste vara blind som inte hittar nått.

Re: PIc16 Hitech och 44780

Postat: 12 maj 2010, 22:31:24
av sodjan
> Vart är lämpligast att lägga utgångarna? Jag har en 16f88.

Ska inte spela någon roll, igentligen, bara dina rutiner stöder valfria pinnar.
Jag har inte full koll här, men har du koll på sådant som analoga funktioner och liknande ?

Re: PIc16 Hitech och 44780

Postat: 12 maj 2010, 22:56:10
av sneaky
Provade precis att koppla in en display till en 16f628A (den som råkade vara närmast). Använde rutinerna från samples-mappen rakt av förutom att jag ändrade till PORTB och tog bort avstängandet (fin svenska där hehe) av ADCn (16f628 har ingen sådan att stänga av). Kopplade sedan in pinnarna enligt instruktionerna (RB0 -> D4, RB1 -> D5 osv).

main.c ser ut såhär:

Kod: Markera allt

#include "init.h"	// included by C-Wiz
#include <htc.h>
#include "lcd.h"

#define _XTAL_FREQ 4000000

void
main(void)
{
	char x = 0;
	init();	// Function call inserted by C-Wiz
	lcd_init();
	
	for(x = 'a'; x < 'f'; x++){
		lcd_putch(x);
	}
	
	while (1){
		//TODO Auto-generated main function
	}
}
och skriver som väntat ut "abcde" på displayen och visar även markör samt "blinkande fyrkant". Så, koden fungerar, måste vara något som är galet på din ända. Som sodjan nämner, är du säker på att analoga utgångar är avstängda? PWM, komparatorer osv. Ingen pinne som inte kan användas som output?

Re: PIc16 Hitech och 44780

Postat: 12 maj 2010, 23:09:46
av sodjan
> av analoga portar (16f628 har inga att stänga av).

Fel.

Re: PIc16 Hitech och 44780

Postat: 12 maj 2010, 23:15:57
av sneaky
Ok, lite klumpigt uttryckt. Menade att den inte har någon ADC att stänga av.

Re: PIc16 Hitech och 44780

Postat: 12 maj 2010, 23:17:39
av Zajber
Voi voi..

Det finns ju redan en ADCON1/0 = 0x06; om jag inte minns fel, sitter inte vid den datorn just nu.
Som enligt kommentaren skall stänga av ad konverteringen, har även satt den till 0x00 någon gång utan resultat.

I övrigt så borde väl det mesta vara 0 från början, eller aktiveras det en massa PWM och Komparatorer per default?

Som sagt Tris A och B är ju satta till 0x00 båda två så ut ska det vara iaf.

Finns det inga andra billiga typ seriella, enklare displayer?
Fan vad jag saknar oscilloskop nu.

Re: PIc16 Hitech och 44780

Postat: 12 maj 2010, 23:34:03
av sodjan
> Som enligt kommentaren skall stänga av ad konverteringen, har även satt den till 0x00 någon gång utan resultat.

Varför sätta den till olika värden bara för att testa ?
Sätt den bara till det du ska ha och låt den vara där.

> I övrigt så borde väl det mesta vara 0 från början, eller aktiveras det en massa PWM och Komparatorer per default?

Hur menar du igentligen ? Frågar du om det händer något
annat än det som databladet förklarar för dig ? Svaret är
väl att det händer exakt det som databladet säger.

För övrigt så kan jag inte snabbt se att du tydligt har angivit
vad det är du kör på (mer än "Helst för en pic i 16f8x serien",
men det är inte tydligt nog) så det går inte att säga mer om det
just nu.

Re: PIc16 Hitech och 44780

Postat: 12 maj 2010, 23:56:10
av Zajber
För mig verkade det vettigare att sätta ADCON0 till 0x00. Men exempelkoden har satt den till 0x06.

Det jag menar med per default är att om jag inte aktiverar något speciellt modul med något register så borde jag inte få några problem med komparatorer, ad-konv och liknande. Tidigare så har jag varit tvungen att välja att aktivera varje modul för att inte bara använda pinnarna som digitala in och utgångar, vilket jag är ute efter nu.

Jag tycker för övrigt att databladen till pic:arna är jobbiga och saknar en del, som default-värden på register på samma sida som informationen om bitarna i registren.

Det är en pic 16f88, skrev det i nått inlägg innan. Men jag har testat med 16f887 och 16f886.

Re: PIc16 Hitech och 44780

Postat: 13 maj 2010, 00:25:33
av sodjan
> För mig verkade det vettigare att sätta ADCON0...

ADCON0 har ingenting med detta att göra.
Se "EXAMPLE 5-1: INITIALIZING PORTA" istället...

> Det jag menar med per default är att om jag inte aktiverar något speciellt modul med något
> register så borde jag inte få några problem med komparatorer, ad-konv och liknande.

Det framgår helt klart av databladet hur det är, och det är *INTE* så som du tror.

Men varför gissa, databladet är som sagt väldigt tydligt på denna punkt ! Det är
ganska svårt att att missa om man inte är väldigt slarvig av sig (och i så fall
har man större problem än just detta).

Låt mig fråga så här...

Exakt hur tolkar du den lilla gråa rutan på sidan 51 i databladet där det står
"Note: On a Power-on Reset, the pins PORTA<4:0> are configured as analog inputs..." ??

Att den texten har "Note:" i fet stil, är grå för att sticka ut från den övriga texten
samt och dessutom är inramad är just för att man inte ska missa det.


> Tidigare så har jag varit tvungen att välja att aktivera varje modul för att inte bara
> använda pinnarna som digitala in och utgångar, vilket jag är ute efter nu.

Jag har inte en aning om vad "tidigare" syftar på, men för PIC så
har det aldrig varit så. Men du kanske menar något helt annat.
Har en pinne analoga funktioner så är de "på" efter en POR.

> Jag tycker för övrigt att databladen till pic:arna är jobbiga och saknar en del,

Som t.ex vadå ? Sen så är de faktiskt väldigt bra och tydliga.

> som default-värden på register på samma sida som informationen om bitarna i registren.

Det är fel. Det står *alltid* vad som är default värde efter POR.
Kan du ge ett exempel sida/tabell från 16F88 databladet ?

Å andra sidan så ska/bör du aldrig lite på default-värden, sätt allt
som påverkar det du håller på med till det du vill ha, även om det
råkar vara samma som det som databladet anger som default. Det har
två fördelar, dels så garderar du dig mot fel i dokumentationen, dels
så framgår det tydligt av din kod (som du postar här) att du faktiskt
har tänkt till och inte bara har missat den funktionen helt.

> Det är en pic 16f88, skrev det i nått inlägg innan....

Aha, jag hittade det nu, det står "Jag har en 16f88.". Helt OK, då håller vi oss till det. :-)

> Men jag har testat med 16f887 och 16f886.

Bara du tydligt anger när du gör det så att det inte blir några missförstånd.

Re: PIc16 Hitech och 44780

Postat: 13 maj 2010, 00:34:05
av willmans
Jag satt två timmar och försökte få igång en HD44780 display, D0-D7 kopplade till PORTB på PIC 16F628, och E, RS till RA2, RA3.
Fick fram cursorn och kunde flytta den, men försökte jag skriva ett tecken så försvann allt från displayen.
Felet var att jag hade satt CMCON till 0x00. Jag hade inte kollat så noga i databladet på just det registret. Det var inte 0x00 var inte Comparator off som jag trodde utan RA0:3 var analoga... ändrade CMCON till 0x07; och allt funkade direkt. Kändes lite surt då, men nu kan jag databladet till displayen utantill :lol:

Re: PIc16 Hitech och 44780

Postat: 13 maj 2010, 00:37:17
av sodjan
> men nu kan jag databladet till displayen utantill

Och till PIC'en... :-)

Re: PIc16 Hitech och 44780

Postat: 16 maj 2010, 23:41:33
av Zajber
Efter ytterliggare några dagar så konstaterar jag att displayen måste vara trasig.

Jag ger upp detta till jag har råd att köpa en ny, hittade en MAX232:a liggandes så jag har precis fått igång komm med datorn. :I

Re: PIc16 Hitech och 44780

Postat: 17 maj 2010, 11:34:07
av sodjan
Maila en adress så skickar jag en LCD att labba med.
HD44780 16x2 helt standard...

Re: PIc16 Hitech och 44780

Postat: 17 maj 2010, 12:00:30
av Zajber
Tack Sodjan!

Vilken kille!

Re: PIc16 Hitech och 44780

Postat: 18 maj 2010, 06:09:39
av bos
Jag sitter vid "fel" dator just nu, men påminn mig så får du en kopia på mitt LCD-lib jag skrev för HD44780 i Hitech PIC-C. Det är portabelt (beroende på vilken betydelse man vill ha på "portabelt") och jag använder samma kodbas till projekt baserade på 16F628A samt 16F886.