PIc16 Hitech och 44780

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Zajber
Inlägg: 451
Blev medlem: 19 oktober 2009, 22:07:16
Skype: Andreas.fridh85
Ort: Rödön
Kontakt:

Re: PIc16 Hitech och 44780

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIc16 Hitech och 44780

Inlägg 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 ?
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: PIc16 Hitech och 44780

Inlägg 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?
Senast redigerad av sneaky 12 maj 2010, 23:17:45, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIc16 Hitech och 44780

Inlägg av sodjan »

> av analoga portar (16f628 har inga att stänga av).

Fel.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: PIc16 Hitech och 44780

Inlägg av sneaky »

Ok, lite klumpigt uttryckt. Menade att den inte har någon ADC att stänga av.
Användarvisningsbild
Zajber
Inlägg: 451
Blev medlem: 19 oktober 2009, 22:07:16
Skype: Andreas.fridh85
Ort: Rödön
Kontakt:

Re: PIc16 Hitech och 44780

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIc16 Hitech och 44780

Inlägg 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.
Användarvisningsbild
Zajber
Inlägg: 451
Blev medlem: 19 oktober 2009, 22:07:16
Skype: Andreas.fridh85
Ort: Rödön
Kontakt:

Re: PIc16 Hitech och 44780

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIc16 Hitech och 44780

Inlägg 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.
willmans
Inlägg: 254
Blev medlem: 11 april 2006, 13:56:20
Ort: Solna

Re: PIc16 Hitech och 44780

Inlägg 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:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIc16 Hitech och 44780

Inlägg av sodjan »

> men nu kan jag databladet till displayen utantill

Och till PIC'en... :-)
Användarvisningsbild
Zajber
Inlägg: 451
Blev medlem: 19 oktober 2009, 22:07:16
Skype: Andreas.fridh85
Ort: Rödön
Kontakt:

Re: PIc16 Hitech och 44780

Inlägg 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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIc16 Hitech och 44780

Inlägg av sodjan »

Maila en adress så skickar jag en LCD att labba med.
HD44780 16x2 helt standard...
Användarvisningsbild
Zajber
Inlägg: 451
Blev medlem: 19 oktober 2009, 22:07:16
Skype: Andreas.fridh85
Ort: Rödön
Kontakt:

Re: PIc16 Hitech och 44780

Inlägg av Zajber »

Tack Sodjan!

Vilken kille!
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: PIc16 Hitech och 44780

Inlägg 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.
Skriv svar