Pomoc PIC 18F2550
Moderators: pedja089, stojke369, [eDo], trax
Pomoc PIC 18F2550
Pozdrav,
Radim praktican primer iz knjige "Programiranje Mikrokontrolera PICBASIC-om" Vojo Milanovic.
Izgubio sam CD sa primerima i sad ne mogu da vidim kod celog programa. Ako bilo ko ima i moze da posalje bio bih mnogo zahvalan.
Konkretno radim 6.18.9 LCD Displej na USB Portu imam kod za PIC ali zelim da napisem program u VB.Net a ne u prevazidjeni VB6.
Hvala unapred!
Pozdrav!
Radim praktican primer iz knjige "Programiranje Mikrokontrolera PICBASIC-om" Vojo Milanovic.
Izgubio sam CD sa primerima i sad ne mogu da vidim kod celog programa. Ako bilo ko ima i moze da posalje bio bih mnogo zahvalan.
Konkretno radim 6.18.9 LCD Displej na USB Portu imam kod za PIC ali zelim da napisem program u VB.Net a ne u prevazidjeni VB6.
Hvala unapred!
Pozdrav!
Re: Pomoc PIC 18F2550
Uspeo sam da nadjem program prepravio sam ga i trebalo bi da radi ALI imam problem sa PIC 18F2550
Prvo sam ispisao kod iz knjige za PIC ali je imao greske prilikom kompajlovanja pa sam upacio u kodu
Nakon toga je bilo uspesno kompajlovanje ali kad prikljucim preko USB windows kaze da ne prepoznaje uredjaj (Windows 10)
Onda sam dodao jos ovo:
Ali ponovo kad prikljucim kaze da ne prepoznaje prikljucen uredjaj:
Evo ceo kod:
Hvala unapred za pomoc!
Prvo sam ispisao kod iz knjige za PIC ali je imao greske prilikom kompajlovanja pa sam upacio u kodu
Code: Select all
Include "hid_desc.bas" ' Include the HID descriptors
Onda sam dodao jos ovo:
Code: Select all
DEFINE USB_VENDORID 6017
DEFINE USB_PRODUCTID 2000
DEFINE USB_VERSION 1
DEFINE USB_VENDORNAME "Mile"
DEFINE USB_PRODUCTNAME "USB Display"
DEFINE USB_SERIAL "00001"
Evo ceo kod:
Code: Select all
'****************************************************************
'* Name : DisplayLCD.BAS *
'* Author : [Mile] *
'* Notice : Copyright (c) 2016 [by Mile] *
'* : All Rights Reserved *
'* Date : 01-Jul-16 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
'Program za podrsku LCD displeja na USB portu
Include "hid_desc.bas" ' Include the HID descriptors
DEFINE OSC 8
Define LCD_DREG PORTB 'I/O port na kome je LCD-e
define LCD_DBIT 4
define LCD_RSREG PORTB
define LCD_RSBIT 2 'Register select pin
define LCD_EREG PORTB
define LCD_EBIT 3 'Enable Pin
define LCD_BITS 4 '4-bitni data bus
define LCD_LINES 2 'LCD ima dva reda karaktera
DEFINE USB_VENDORID 6017
DEFINE USB_PRODUCTID 2000
DEFINE USB_VERSION 1
DEFINE USB_VENDORNAME "Mile"
DEFINE USB_PRODUCTNAME "USB Display"
DEFINE USB_SERIAL "00001"
USBBufferSizeMax Con 64 'Maksimalna velicina bafera
USBBufferSizeTX con 64 'Ulazni
USBBufferSizeRX con 64 'Izlazni
'USB Baferi...
USBBuffer var Byte[USBBufferSizeMax]
USBBufferCount var Byte
i var byte
Red1 var byte[16]
Red2 var byte[16]
TRISB = $00 'Port B je izlazni
ADCON1 = 15 'Svi pinovi su digitalni
usbinit 'Inicijalizacija USB-a...
ProgramStart:
gosub DoUSBIn
goto ProgramStart
'Prijem podataka sa USB basa
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBService
USBin 1, USBBuffer, USBBufferCount, DoUSBin 'Citanje podataka.
If USBBuffer[0] = 253 and USBBuffer[1] = 1 Then
For i = 2 To 17
Red1 [i-2] = Usbbuffer[i]
next
Lcdout $fe, 1, STR Red1\16
endif
If USBBuffer[0] = 253 and USBBuffer[1] = 2 Then
For i = 2 to 17
Red2 [i-2] = Usbbuffer[i]
next
Lcdout $fe, $C0, STR Red2\16
endif
return
'Slanje podataka sa USB-a
DoUSBOut:
USBBufferCount = USBBufferSizeTX ' Velicina TX Bafera
USBService
USBOut 1, USBBuffer, USBBufferCount, DoUSBOut 'Slanje podataka
Return
Hvala unapred za pomoc!
Re: Pomoc PIC 18F2550
Pri ubacivanju hex fajla javljao mi se problem da ne moze ucitati konfiguraciju PIC-a, ja sam manuelno podesio da koristim 8MHz oscilator i sad ga windows prepoznaje.
Ali problem se nastavlja mislim da je greska u Kodu oko povezivanja sa USB-om.
Ovo ne valja:
Ali problem se nastavlja mislim da je greska u Kodu oko povezivanja sa USB-om.
Ovo ne valja:
Code: Select all
Include "hid_desc.bas" ' Include the HID descriptors
Re: Pomoc PIC 18F2550
Izvinjavam se sto pravim postove ali nemam opciju za editovanje postojeceg.
Posle celog dana napokon sam uspeo da osposobim displej.
Uradio sam EasyHID USB Wizard nakon toga otvorio projekat i dodao kod za display.
Ovako izgleda:
I kad sam ubacivao HEX fajl na PIC Manuelno sam podesio
PLL Prescaler Selection bits: Divide by 2 (8 MHz oscillator input)
Oscillator Selection Bits: HS oscillator (HS) (4Mhz..25MHz)
Sve radi kako treba
=============================================
Zelim samo jos nesto da pitam da li mogu umesto ovog trenutno LCD Displeja da stavim ovaj:
1. Trenutni: http://www.simonbramble.co.uk/downloads ... isplay.pdf
2. Ovaj da stavim: http://www.kelco.rs/katalog/images/1602_P.pdf
Koliko vidim moze, ali bih voleo da neko iskusniji potvrdi da ne kupujem za dzabe.
Pozdrav!
Posle celog dana napokon sam uspeo da osposobim displej.
Uradio sam EasyHID USB Wizard nakon toga otvorio projekat i dodao kod za display.
Ovako izgleda:
Code: Select all
' include the HID descriptor
include "DESCDisplayLCDv4.bas"
DEFINE OSC 8
Define LCD_DREG PORTB 'I/O port na kome je LCD-e
define LCD_DBIT 4
define LCD_RSREG PORTB
define LCD_RSBIT 2 'Register select pin
define LCD_EREG PORTB
define LCD_EBIT 3 'Enable Pin
define LCD_BITS 4 '4-bitni data bus
define LCD_LINES 2 'LCD ima dva reda karaktera
USBBufferSizeMax Con 64 'Maksimalna velicina bafera
USBBufferSizeTX con 64 'Ulazni
USBBufferSizeRX con 64 'Izlazni
'USB Baferi...
USBBuffer var Byte[USBBufferSizeMax]
USBBufferCount var Byte
i var byte
Red1 var byte[16]
Red2 var byte[16]
TRISB = $00 'Port B je izlazni
ADCON1 = 15 'Svi pinovi su digitalni
usbinit 'Inicijalizacija USB-a...
ProgramStart:
gosub DoUSBIn
goto ProgramStart
'Prijem podataka sa USB basa
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBService
USBin 1, USBBuffer, USBBufferCount, DoUSBin 'Citanje podataka.
If USBBuffer[0] = 253 and USBBuffer[1] = 1 Then
For i = 2 To 17
Red1 [i-2] = Usbbuffer[i]
next
Lcdout $fe, 1, STR Red1\16
endif
If USBBuffer[0] = 253 and USBBuffer[1] = 2 Then
For i = 2 to 17
Red2 [i-2] = Usbbuffer[i]
next
Lcdout $fe, $C0, STR Red2\16
endif
return
'Slanje podataka sa USB-a
DoUSBOut:
USBBufferCount = USBBufferSizeTX ' Velicina TX Bafera
USBService
USBOut 1, USBBuffer, USBBufferCount, DoUSBOut 'Slanje podataka
Return
PLL Prescaler Selection bits: Divide by 2 (8 MHz oscillator input)
Oscillator Selection Bits: HS oscillator (HS) (4Mhz..25MHz)
Sve radi kako treba
=============================================
Zelim samo jos nesto da pitam da li mogu umesto ovog trenutno LCD Displeja da stavim ovaj:
1. Trenutni: http://www.simonbramble.co.uk/downloads ... isplay.pdf
2. Ovaj da stavim: http://www.kelco.rs/katalog/images/1602_P.pdf
Koliko vidim moze, ali bih voleo da neko iskusniji potvrdi da ne kupujem za dzabe.
Pozdrav!
Re: Pomoc PIC 18F2550
Jesi uspeo napraviti komunikaciju u VB .net?
Displej bi trebao da moze.
Displej bi trebao da moze.
Re: Pomoc PIC 18F2550
Da radi, jos sam izvukao informacije od senzora za CPU Temp, GPU Temp, CPU Load, GPU Load i prenosim informacije na displej.
Samo mi je lepsi onaj plavi ekran sa plavim pozadinskim osvetljenjem, ali u svakom slucaju planiram da snimim kratak klip kako sve izgleda pa cu postaviti ovde sigurno.
Pozdrav!
Samo mi je lepsi onaj plavi ekran sa plavim pozadinskim osvetljenjem, ali u svakom slucaju planiram da snimim kratak klip kako sve izgleda pa cu postaviti ovde sigurno.
Pozdrav!
Re: Pomoc PIC 18F2550
Super.
Re: Pomoc PIC 18F2550
Imam problem/pitanje. Dopisao sam kod za 18F2550 i dodao 2 dugmeta na A portu 0 i 1.
Kod dodat za pic:
U VB.Net imam sledeci kod za citanje:
E sad problem je u tome sto citanje radi samo u trenutnku kada posaljem nesto PIC-u. NP. saljem mu tekst za ekran i u tom trenutku drzim dugme i kliknem posalji on mi vraca samo tad povratnu informaciju koje dugme je pretisnuto. Kada samo pretiskam dugmice onda nece da posalje informacije PC-u.
Pomoc?
Kod dodat za pic:
Code: Select all
DoUSBOut:
USBBufferCount = USBBufferSizeTX ' Velicina TX Bafera
USBService
USBBuffer[0]=251
Broj = 0
If porta.0 = 1 then
Broj=BROJ + 1
endif
If porta.1 = 1 then
Broj=Broj + 2
endif
USBBuffer[1]=Broj
USBOut 1, USBBuffer, USBBufferCount, DoUSBOut 'Slanje podataka
Return
U VB.Net imam sledeci kod za citanje:
Code: Select all
Public Sub OnRead(ByVal pHandle As Long) ' CITANJE SA USB-a
If hidRead(pHandle, BufferIn(0)) Then
Dugme = BufferIn(2)
If Dugme = "1" Then
txtDugme1.Text = "Dugme 2"
ElseIf Dugme = "2" Then
txtDugme1.Text = "Dugme 1"
ElseIf Dugme = "3" Then
txtDugme1.Text = "Nijedno"
End If
End If
End Sub
E sad problem je u tome sto citanje radi samo u trenutnku kada posaljem nesto PIC-u. NP. saljem mu tekst za ekran i u tom trenutku drzim dugme i kliknem posalji on mi vraca samo tad povratnu informaciju koje dugme je pretisnuto. Kada samo pretiskam dugmice onda nece da posalje informacije PC-u.
Pomoc?
Re: Pomoc PIC 18F2550
Daj ceo kod. DoUsbOut bi morao pozvati iz maina kad god se desi promena na tasterima.
Ako je kod iz ovog primera gore, on radi usbout samo kad primi nesto...
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBService
USBin 1, USBBuffer, USBBufferCount, DoUSBin 'Citanje podataka.
I stalno vrti to dok ne dodje podatak.
Ti bi onda morao napraviti ovako nesto
Ili druga opcija da stalno saljes stanje tastera, ali to po meni nije bas pametno...
Ako je kod iz ovog primera gore, on radi usbout samo kad primi nesto...
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBService
USBin 1, USBBuffer, USBBufferCount, DoUSBin 'Citanje podataka.
I stalno vrti to dok ne dodje podatak.
Ti bi onda morao napraviti ovako nesto
Code: Select all
Main:
USBService
Call DoUSBIn
If tasteri stanje promenjeno then Call DoUSBOut
GOTO Main
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBin 1, USBBuffer, USBBufferCount, NemaDoUSBin 'Citanje podataka.
'ovde radi sta god sa podatcima
NemaDoUSBin:
RETURN
Re: Pomoc PIC 18F2550
Evo ceo kod, kako bi trebao da izgleda da bi mi uvek javljao kad pretisnem dugme a ne samo kad nesto saljem?
Code: Select all
include "DESCDisplayLCDv4.bas"
DEFINE OSC 8
BROJ var byte 'Pomocna promenljiva
Define LCD_DREG PORTB 'I/O port na kome je LCD-e
define LCD_DBIT 4
define LCD_RSREG PORTB
define LCD_RSBIT 2 'Register select pin
define LCD_EREG PORTB
define LCD_EBIT 3 'Enable Pin
define LCD_BITS 4 '4-bitni data bus
define LCD_LINES 2 'LCD ima dva reda karaktera
USBBufferSizeMax Con 64 'Maksimalna velicina bafera
USBBufferSizeTX con 64 'Ulazni
USBBufferSizeRX con 64 'Izlazni
'USB Baferi...
USBBuffer var Byte[USBBufferSizeMax]
USBBufferCount var Byte
i var byte
Red1 var byte[16]
Red2 var byte[16]
TRISB = $00 'Port B je izlazni
TRISA = $FF 'Port A je ulazni
ADCON1 = 15 'Svi pinovi su digitalni
usbinit 'Inicijalizacija USB-a...
ProgramStart:
gosub DoUSBIn
gosub DoUSBOut
goto ProgramStart
'Prijem podataka sa USB basa
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBService
USBin 1, USBBuffer, USBBufferCount, DoUSBin 'Citanje podataka.
If USBBuffer[0] = 253 and USBBuffer[1] = 1 Then
For i = 2 To 17
Red1 [i-2] = Usbbuffer[i]
next
Lcdout $fe, 1, STR Red1\16
endif
If USBBuffer[0] = 253 and USBBuffer[1] = 2 Then
For i = 2 to 17
Red2 [i-2] = Usbbuffer[i]
next
Lcdout $fe, $C0, STR Red2\16
endif
return
'Slanje podataka sa USB-a
DoUSBOut:
USBBufferCount = USBBufferSizeTX ' Velicina TX Bafera
USBService
USBBuffer[0]=251
Broj = 0
If porta.0 = 1 then
Broj=BROJ + 1
endif
If porta.1 = 1 then
Broj=Broj + 2
endif
USBBuffer[1]=Broj
USBOut 1, USBBuffer, USBBufferCount, DoUSBOut 'Slanje podataka
Return
Re: Pomoc PIC 18F2550
Bas kao ovaj gore primer sto sam ti napisao...
Re: Pomoc PIC 18F2550
hmm probao sam prvo tvoju preporuku ali izgleda da negde gresim posto idalje ne mogu da napravim da se odma javi nakon dugmeta. Ako ti nije problem da izmenis moj kod pretpostavljam da nema mnogo posla. A svakako bi mi mnogo znacilo!
Pozdrav!
Pozdrav!
Re: Pomoc PIC 18F2550
Prvo napravi da ti se led pali na pritisak bilo kojeg tastera.
I onda tu ubaci poziv DoUsbOut...
I onda tu ubaci poziv DoUsbOut...
Re: Pomoc PIC 18F2550
Ja sam ovako postavio ali ne radi:
Ako ti nije problem dodaj mi kako treba ili bar pocetak koda za slanje kad pretisnem dugme posto me to buni.
Pozdrav!
Code: Select all
' ************************************************************
' * Auto generated EasyHID file. PBP 2.60 and above *
' ************************************************************
' include the HID descriptor
include "DESCDisplayLCDv4.bas"
DEFINE OSC 8
BROJ var byte 'Pomocna promenljiva
Define LCD_DREG PORTB 'I/O port na kome je LCD-e
define LCD_DBIT 4
define LCD_RSREG PORTB
define LCD_RSBIT 2 'Register select pin
define LCD_EREG PORTB
define LCD_EBIT 3 'Enable Pin
define LCD_BITS 4 '4-bitni data bus
define LCD_LINES 2 'LCD ima dva reda karaktera
USBBufferSizeMax Con 64 'Maksimalna velicina bafera
USBBufferSizeTX con 64 'Ulazni
USBBufferSizeRX con 64 'Izlazni
'USB Baferi...
USBBuffer var Byte[USBBufferSizeMax]
USBBufferCount var Byte
i var byte
Red1 var byte[16]
Red2 var byte[16]
TRISB = $00 'Port B je izlazni
TRISA = $FF 'Port A je ulazni
ADCON1 = 15 'Svi pinovi su digitalni
usbinit 'Inicijalizacija USB-a...
ProgramStart:
gosub DoUSBIn
gosub DoUSBOut
goto ProgramStart
If porta.0 = 0 then Call DoUSBOut
GoTO ProgramStart
'Prijem podataka sa USB basa
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBService
USBin 1, USBBuffer, USBBufferCount, DoUSBin 'Citanje podataka.
If USBBuffer[0] = 253 and USBBuffer[1] = 1 Then
For i = 2 To 17
Red1 [i-2] = Usbbuffer[i]
next
Lcdout $fe, 1, STR Red1\16
endif
If USBBuffer[0] = 253 and USBBuffer[1] = 2 Then
For i = 2 to 17
Red2 [i-2] = Usbbuffer[i]
next
Lcdout $fe, $C0, STR Red2\16
endif
return
'Slanje podataka sa USB-a
DoUSBOut:
USBBufferCount = USBBufferSizeTX ' Velicina TX Bafera
USBService
USBBuffer[0]=251
Broj = 0
If porta.0 = 1 then
Broj=BROJ + 1
endif
If porta.1 = 1 then
Broj=Broj + 2
endif
USBBuffer[1]=Broj
USBOut 1, USBBuffer, USBBufferCount, DoUSBOut 'Slanje podataka
Return
Pozdrav!
Re: Pomoc PIC 18F2550
Dosta stvari nije ok...
Prvo
Drugo:
Pogledaj moj DoUsbIn,pogledaj tvoj
Moj:
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBin 1, USBBuffer, USBBufferCount, NemaDoUSBin 'Citanje podataka.
'ovde radi sta god sa podatcima
NemaDoUSBin:
RETURN
Tvoj:
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBService
USBin 1, USBBuffer, USBBufferCount, DoUSBin 'Citanje podataka.
Za detekciju pritiska tastera, vrni se na kurs i potrazi neki primer brojaca ili slicno...
Rekoh ti, batali usb, napravi prvo da ti se jedna led upali na sekundu samo kada stisnes bilo koji od tastera koji te zanimaju. Pa ces taj kod spojiti sa usb posle...
Prvo
Code: Select all
ProgramStart:
gosub DoUSBIn
gosub DoUSBOut
goto ProgramStart
If porta.0 = 0 then Call DoUSBOut <ovo se nikad ne izvrsi....
GoTO ProgramStart <a ni ovo
Pogledaj moj DoUsbIn,pogledaj tvoj
Moj:
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBin 1, USBBuffer, USBBufferCount, NemaDoUSBin 'Citanje podataka.
'ovde radi sta god sa podatcima
NemaDoUSBin:
RETURN
Tvoj:
DoUSBIn:
USBBufferCount = USBBufferSizeRX 'Velicina RX bafera
USBService
USBin 1, USBBuffer, USBBufferCount, DoUSBin 'Citanje podataka.
Za detekciju pritiska tastera, vrni se na kurs i potrazi neki primer brojaca ili slicno...
Rekoh ti, batali usb, napravi prvo da ti se jedna led upali na sekundu samo kada stisnes bilo koji od tastera koji te zanimaju. Pa ces taj kod spojiti sa usb posle...
Re: Pomoc PIC 18F2550
Uspeo sta?
Re: Pomoc PIC 18F2550
Izvini nisam javio. Jos tad sam uspeo i osposobio sam ga da radi na 2 dugmeta pa sam imao obaveze neke ovih dana i evo opet sedoh da napisem kod za ceo PortA i app za win.
Sve radi kako treba!
Danas dok sam pisao kod za ove preostale dugmice dobio sam ideju da ubacim EEPROM u kome cu da upisem broj od 5 karaktera preko USB-a i onda kad skinem USB i upisem taj broj preko dugmica da se ispise na ekranu da je sifra tacna. Ali tek trebam da krenem to da radim ako zapnem zovem za pomoc
Pozdrav i hvala!
Sve radi kako treba!
Danas dok sam pisao kod za ove preostale dugmice dobio sam ideju da ubacim EEPROM u kome cu da upisem broj od 5 karaktera preko USB-a i onda kad skinem USB i upisem taj broj preko dugmica da se ispise na ekranu da je sifra tacna. Ali tek trebam da krenem to da radim ako zapnem zovem za pomoc
Pozdrav i hvala!
Re: Pomoc PIC 18F2550
Drago mi je da ide
Re: Pomoc PIC 18F2550
Zavrsiao sam uspesno upisivanje ispisivanje sa PC-a u EEPROM.
Zeleo bi da stavim senzor za temp. LM75A ali su mi SCL i SDA portovi vec zauzeti sa EEPROM 24C64. Da li postoji mogucnost da oba povezem?
Pozdrav!
Zeleo bi da stavim senzor za temp. LM75A ali su mi SCL i SDA portovi vec zauzeti sa EEPROM 24C64. Da li postoji mogucnost da oba povezem?
Pozdrav!
Re: Pomoc PIC 18F2550
A sto ne bi moglo...
To i jeste poenta I2C...
To i jeste poenta I2C...