Labb-display

Användarvisningsbild
Icecap
Inlägg: 26147
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Labb-display

Inlägg av Icecap »

Jag håller ju på med en del µC-projekt och jag kunde ibland behöva ett litet display som debug-display. Jag har tillgång till 2 st RS232 portar på styrkortet jag har gjort men ibland är båda upptagna och då får jag ta till lite trix osv.

Men nu beslöt jag att det får vara! Så jag byggde ett display med RS485 då en sådan port finns med i systemet och den sällan används.

Innehållet i enheten?
* 1 st 7805 med diod och avkoppling. Såklart skyddad mot felpolarisering.
* 1 st PIC18F25K22 med avkoppling.
* 1 st LCD 20x2 modul från min låda med LCD-moduler.
* 4 st knappar (alltid bra att ha).
* 1 st RS485 tranciverkrets (typ MAX485)

Mjukvaran medger att om man håller inne två av knapparna under uppstarten kommer man in i en setup-meny. Där kan man välja intensiteten på displayen (styrs med PWM -> RC lågpass), baudrate och adress på enheten. Dessa värden sparas i EEPROM i PIC'en.

Varje knapp är avläst och debounced och matat genom en n-key-rollover rutin. Två av knapparna har auto-repeat med en start-vänttid på 0,5 sek och en repeat-rate på 10Hz. Dessa knappar används även som + hhv. - vid justering av värden under setup-funktionen.

När jag har verifierat alla funktioner kommer jag att limma igen baksidan med smältlim så att jag kan ha den liggande på bordet utan att riskera kortslutningar.

Man kan såklart använda en RS232 driver istället och det kan gå på samma kort då PIC'en har 2 st UART. Dock används den ena vid programmeringen men detta går att lösa så i grunden är det fullt möjligt att ha samma display till båda RS485 och RS232 utan att bygla något.

Kortet är 100x56mm, displayen fyller nästan hela bredden och är skruvat fast ovanpå kortet, detta ger plats för PIC osv. under displayen.

Möjliga baudrates är 150, 300, 600, 1200, 2400, 4800, 9600, 19200 och 38400 baud. Alla med 8 databit, ingen paritet, 1 stoppbit. Självklart kan jag lägga in att det ska gå att ändra dessa värden också men det struntar jag i, jag har alltid använd 8n1.

Framsidan:
20141018_125725.jpg
Baksidan:
20141018_125737.jpg
Det finns ett par extra sladdar på just nu, det är en knapp för att resetta och en på en ledig portpinne för att trimma lite timing-grejer.

EDIT: Det knepigaste var nog att få timingen av Tx/Rx-väljaren på RS485 drivkretsen. Jag gjorde det vid att ta en timer och när jag räknar ut baudrate-generatorn vid initieringen av UART'en räknas det även ut rätt värde för timern. Faktisk räknas det ut två värden på 1 hhv. 2 bytes längd. När sista byte från et kommunikationsblock matas in ställs tiden automatisk i timern och den slås på.

När tiden går ut ska UART'en vara klar med allt, inkl. stop-byte varför timern stoppas och riktningen på drivkretsen växlas till att ta emot.

Mer EDIT:
Nu har jag fixat det så att när den sänder ett block med knapptryckningarna (STX, adress (HX), knapp('0'-'3'), ETX, totalt 5 bytes) buffras det hela i minnet när det inte finns plats i TXREG1. Timeout med kommunikationen fungerar fortfarande bra såklart.

Totalt sett betyder det att det blir enklare att få exekverat inkommande data - som också buffras. Det kan ju ta lite tid för vissa operationer på LCD'n, t.ex. en CLS som kan ta 3ms. Och kör det med 38400 baud är 3ms det samma som drygt 11 inkommande bytes så det behövs.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Re: Labb-display

Inlägg av björn »

Smidigt :tumupp:
MiaM
Inlägg: 9980
Blev medlem: 6 maj 2009, 22:19:19

Re: Labb-display

Inlägg av MiaM »

Trevligt! :tumupp:

Captain obvious hälsar att du kan ju givetvis också välja någon slags enkel kapsling på baksidan, så kan du hänga på fler knappar vilket du säkert kommer vilja ha framöver... :)
Användarvisningsbild
Icecap
Inlägg: 26147
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Labb-display

Inlägg av Icecap »

Tackar.

MiaM: det är mest tänkt som en möjlighet att kunde skriva ut vissa värden vid debug. Knapparna är till för att kunde ge lite input och då 4 knappar - varav två har autorepeat - räcker väldigt långt (Meny, Upp, Ner, Välj) lär jag inte behöva fler.

Behovet som utlösta detta var att vi håller på att fixa en grej som kopplar upp mot en mobil och det kunde vara praktisk att se IP-nummer.
Ska man skapa en fjärrkontroll är en app i en Android nog det billigaste sättet att bygga ihop display, knappsats och batteri så det blev vårat val.

Sedan har jag en god lust att införliva debug-utskriften i andra projekt också så det ska kunde användas till lite av varje.

EDIT: Sådär, nu fungerar det exakt som tänkt! Fick fila lite på timingen rörande styrning av riktning på RS485 drivkretsen men med lite Excel och ett oscilloskop kom jag i land. Och det fungerar skitbra! Har redan ett projekt där jag har testat det och det blir exakt som tänkt. Funderar dock på att lägga in en funktion som kan svara på "Anyone there?" gruppkall, då kan systemet det kopplas upp till ju kolla om det finns anledning att spotta ut värden.

Men det finns ju pinnar för PICkit3'an så det kan komma när (om?) det behövs.
Skriv svar