Gå til innhold

Programmere LCD-display (ikke LCDsmartie)


Anbefalte innlegg

Er det HAUK fra overklokking.no dere bygger?

Jeg blir ferdig med min oppe på grunnkurset i morgen tror jeg,

hvis myhren etsa plata mi rett.

5516788[/snapback]

 

 

Var i utgangspunktet den vi ville bygge ja, men det ser ut som vi ender opp med noe litt mer avansert nå...

 

Hvis du stikker ned i C-klasserommet en dag så står Hauken jeg bygde i fjor der, den er så klart helt genial :wee:

Lenke til kommentar
Videoannonse
Annonse

har aldri holdt på med C#, men alle programmeringsspråk har jo en del felles, så trur ikke det vil være spesielt vanskelig (vil tippe C# er basser på C, så da har de sikkert mye felles).

 

største forskjellen blir nok at du nå programmerer mye nærere maskinvaren, så det blir en del lesing i datablad for å finne ut hvordan ting skal settes opp slik at de virker slik du vil.

 

Så vidt jeg vet så er det to språk som er støtte, assembler og C.

 

vil tippe skolen deres har lagt inn AVR studio som er det programmet som følger med starter kitet. eldre versjoner av det støtter bare assembler, men nyere versjoner støtter også C via avr-gcc.

 

jeg anbefaler sterkt å bruke C, så sjekk om de har lagt inn støtte for det.

enkelt å sjekke, start avr studio og velg nytt prosjekt, under project type skal en da kunne velge mellom Atmel avr assembler og AVR GCC. ellers så kan du bare prøve å kjøre avr-gcc fra komandovinduet i windows. Eller sjekk om winAVR er lagt inn på PCen.

 

hvis ikke det er lagt inn, be lærerne eller admin om å legge inn winAVR så får dere støtte for C. hjelp til oppsett av winAVR finner en her: http://winavr.sourceforge.net/download/ins...nfig_WinAVR.pdf

 

ellers så er http://www.avrfreaks.net en bra kilde til ting og guider.

Lenke til kommentar
har aldri holdt på med C#, men alle programmeringsspråk har jo en del felles, så trur ikke det vil være spesielt vanskelig (vil tippe C# er basser på C, så da har de sikkert mye felles).

 

største forskjellen blir nok at du nå programmerer mye nærere maskinvaren, så det blir en del lesing i datablad for å finne ut hvordan ting skal settes opp slik at de virker slik du vil.

 

Så vidt jeg vet så er det to språk som er støtte, assembler og C.

 

vil tippe skolen deres har lagt inn AVR studio som er det programmet som følger med starter kitet. eldre versjoner av det støtter bare assembler, men nyere versjoner støtter også C via avr-gcc.

 

jeg anbefaler sterkt å bruke C, så sjekk om de har lagt inn støtte for det.

enkelt å sjekke, start avr studio og velg nytt prosjekt, under project type skal en da kunne velge mellom Atmel avr assembler og AVR GCC. ellers så kan du bare prøve å kjøre avr-gcc fra komandovinduet i windows. Eller sjekk om winAVR er lagt inn på PCen.

 

hvis ikke det er lagt inn, be lærerne eller admin om å legge inn winAVR så får dere støtte for C. hjelp til oppsett av winAVR finner en her: http://winavr.sourceforge.net/download/ins...nfig_WinAVR.pdf

 

ellers så er http://www.avrfreaks.net en bra kilde til ting og guider.

5524458[/snapback]

 

C# er såvidt jeg kunne lese fra boka en "blanding" av C og C++

 

Ser ikke ut til at det ligger inne støtte for C-programmering (har med AVR Studio-cd hjem) så må få lagt inn det på skolen.

 

Takk for hjelpen så langt (blir nok flere spørsmål etterhvert :innocent: )

Lenke til kommentar

ligger ikke med på CDen nei... kan hende det er en gammel CD også og at avr studio på den er gammel.

 

winavr finner du her, http://sourceforge.net/project/showfiles.php?group_id=68108 eller på avrfreaks.net

 

nyeste AVR studio finner du her: http://www.atmel.com/dyn/products/tools_ca...sp?tool_id=2725

 

*må* ha winAVR når du skal programmere i C.

(finnes andre C kompilatorer også, men denne er støttet i avr studio og den inneholder alt du trenger, i tillegg til at den er gratis)

Lenke til kommentar

står i databladet, eget kapitel om vi skal kalle det det:

http://www.atmel.com/dyn/resources/prod_do...nts/doc2486.pdf

side 23-30.

 

kan bruke intern osc. på 1 MHz ja (el. 2, 4, el 8 MHz), men det er jo "tregt". og hvis dere har planer om å kommunisere med en PC (som jeg regner med dere vil prøve på, nå eller senere engang) så "bør" dere bruke en ekstern krystall. Dette fordi at klokkehastigheten på PCen (RS232 porten på PCen) og AVRen må være det samme for at du skal motta dataen rett.

 

RS232 porten på PCen og AVRen kan kjøres på forskjellige hastigheter, og hvis du er heldig så finner du en hastighet som gjør at du kan få til kommunikasjon uansett hvilken krystall du har, men du vil ikke få helt rett hastighet og kan derfor få feil på overføringen.

 

Men det finnes en enkel løsning, kjøp en krystall med rett hastighet og du kan få til kommunikasjon på omtrent alle hastigheter.

14,74560 MHz er en fin hastighet, nære 16MHz som er maks, og den passer på de fleste rs232 hastigheter mener jeg. (jeg bruker en slik en i viftekontrollen min).

 

står mye om dette også, side 130 og utover, med hensyn på klokka bør dere se på tabellene på side 156 og utover, her ser dere hvilke hastigheter rs232 vil virke bra på ved de forskjellige klokkehastighetene. (som dere vil se så gir 14,74560MHz 0% error på de fleste).

 

0,2% avvik går greit, har brukt det jeg også (4MHz kjøret jeg på da), så dere klarer dere sikkert med internklokka også, men blir da bundet opp til gitte hastigheter på rs232.

 

ellers så står det mye om klokka i databladet på side 23-30.

kan endre på ganske mye ved å sette nye fuse-bits. les på det, dere må trikse med de for å endre på klokka.

Endret av Dr_VingTor
Lenke til kommentar

ser greit ut som et helt overordna skjema (oppkoblinga er slik jeg ville gjort det), men mhp. ditt eget arbeid bør du kanskje fylle ut med litt mer info på tegninga. En forbruker hadde sikkert syntes dette var greit nok, men siden du skal lage systemet trenger du mere spesifikasjoner.

 

jeg pleier å sette en liten skråstrek over busser og skrive på tall som sier hvor mange ledere bussen har. Kan også være en fordel å sette navn på bussene/lederne slik at det blir lettere å snakke med andre folk når du skal forklare ting. Dette er vell viktigere når en skal sammarbeide med folk om ting, da kan en ikke bare ha alt i sitt eget hode.

 

Ellers så vil det bli viktig å spesifisere hvilke IO pinner på AVRen som skal brukes til hva. Det er f.eks. bare 2 pinner som kan brukes til komunikasjon med PCen (RS232), så de må du reservere for dette formålet.

 

Siden dere er flere som sammarbeider om prosjektet er det viktig å få ned slik informasjon på ark som dere begge har, så ungår dere feil. Det blir lettere å ta opp arbeidet hvis det blir liggende en tid, og dere vil trenge oversikt over IO pinnene når dere skal programmere, så en kan like godt lage spesifikasjoner på slikt i starten.

 

(bare et forslag, sier ikke at jeg altid gjør dette, men vil tru det vil hjelpe dere i arbeidet)

Lenke til kommentar

Atmega8, som vi har bestemt oss for å bruke, har 23 I/O pinner.

 

Ettersom Noxy bestemte at vi er for late til å skrive ny software, vil vi fortsette å bruke Hauk-softwaren, dermed også parallellporten.

 

Så: 8 pinner input, 8 pinner output.

Resten av pinnen må da gå til LCD-displayet, dog jeg skal ærlig innrømme at jeg ikke er helt sikker på hvor mange inputs det trenger?

Lenke til kommentar

ok,

 

jeg vet ikke hva spesifikasjonene på spenningen på parallell kabelen er, så håper dere sjekker det før dere kobler på AVRen, kan hende dere trenger en buffer eller noe der.

 

displayet trenger 3 til kontrollsignaler og 4 eller 8 til data, så om dere bruker 4 går det akkurat. står beskrevet i databladet hvordan displayet initialiseres og hvordan data skal sendes, står ganske langt bak

Endret av Dr_VingTor
Lenke til kommentar

I løpet av dagen har vi da prestert å ordne et slags skjema, tilbakemeldinger hadde vært utrolig sjarmerende.

 

Etter litt mer tenking har vi kommet fram til at den eneste D-SUB-kontakta blir den som går til datamaskinen, men vi lot de andre være der for enkelhets skyld.

 

Vi har også et skjema for relè-delen, men hvis det ikke blir noen requests så lar vi den være så lenge.

post-34672-1139580955_thumb.jpg

Endret av Iceman™
Lenke til kommentar

k, kan vell gi noe basic innføring:

 

#include <avr/io.h>	
               //inkluderer en fil som inneholder 
               //beskrivelse av kretsen,
   	//slik at vi kan bruke breskrivende navn i stede for 
   	//de fysiske adressene
   	//inkluderer den korekte ioxxx.h filen etter hvilken avr som brukes
   	
   	//kan være en fordel å skrive ut denne filen, 
               //altså iom8.h for atmega8 osv.

   	//den inneholder navnene på alle portene, 
               //pinnene (pinnenummer) og registrene 
               //(og registerplasseringer), og disse 
   	//navnene kan dere da bruke i koden dere skriver. 
   	
   	//ellers litt lurt å se på noen av filene som ligger
               // i WinAVR\avr\include
   	//det meste av dokumentasjonen står i filene

int main(void)
{
//jeg bruker heksadesimalkode for verdier, 
               //men en kan fint bruke annet også
//heks. egner seg bra når en jobber en til en 
               //mellom pinner og 4 eller 8 bit.. osv

DDRB = 0xFF;	//setter Port B som utganger 
                                               //('1' er utgang, '0' er inngang)
   	//DDR står for data direction register, siste bokstaven er porten
   	
PORTB = 0x0F;	//tilordner Port B verdier, 00001111

DDRD = 0x00;	//port D settes som inngang

PORTD = 0x00;         //eller 0xFF, port D er satt som inngang,
                                              // så det du nå gjør er å sette

   	//intern pull-up motstander av eller på, 
               //du finner mer om dette i datablad.
   	//bør kanskje brukes på databusser. 
   	
char MinInnData = PIND;	
               //når en skal lese verdier så bruker en PINx, hvor x er porten

       //char er en 8 bit variabel, så er grei å bruke, men du kan også bruke andre.
       //i konden til min viftestyring ser du jeg har brukt uint8_t som navn 
       //på variabeltypen navn
       //ved dette valget må en inkludere inttypes.h ( som refererer til stdint.h)

while (1)  //hovedprogramløkke, legge alt som skal gjøres inne her
{	
 
 MinInnData = PIND;	//leser inn ny verdi fra port D.
 
 PORTB = MinInnData; //setter utdata på B lik inndata på D. 

}
return 1;
}

 

tja, trur nå det meste av dette skulle være rett

Endret av Dr_VingTor
Lenke til kommentar

kretsskjemaet så jo forsåvidt greit ut.

 

men trur dere har glemt kondensatorer til krystallen, de alle fleste trenger det, typisk veldig små, noen pF, dere bør klare å finne data om dette på elfa eller i datablad. (eller dere kan bruke intern oscillator og trenger da ikke krystall).

 

husk også avkoblingskondensator til avr'en og andre ICer, typisk 100nF, kobles nære VCC (VDD) på kretsen. (jeg er sløv her... funker uten... som regel... ).

Skader ikke å tegne de inn, trenger jo ikke montere de...

 

programmerings plug-kontakt til AVRen? hvis dere bruker sokkel så kan dere jo ta den ut og sette den i STKen og programmere, flytte tilbake, se om det virker, flytte tilbake osv...

forenkler arbeidet litt, skal stå i databladet hvordan den skal være. ikke tenkt på at dere bruker pinnene til noe annet til vanlig.

 

Driverkrets til releer? vet ikke hvordan releer det er sankk om, men maks strømtrekk på avr'porten må dere passe på.

Lenke til kommentar

Jeg tror også at Noxy glemte kondensatorene til krystallen, de var nemlig med på et tidligere utlegg.

 

Avkoblingskondensatorer er notert (at jeg kunne glemme i det hele tatt....)

 

Vi skal ha en sokkel ja, så brikken kan flyttes frem og tilbake mellom kortet og programmereren til vi går lei.

 

Jeg kan legge ut releskjemaet også, men i bunn og grunn er det bare en buffer IC og 8 releer, ingen fare, har tenkt på at AVR'en ikke er i stand til å drive store strømmer.

Endret av Iceman™
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...