|
Na, kis tanulgatással, már értem is amit leírtál, Köszönöm a Segítséget
Nincs mit!Röviden és tömören fogalmaztam , lehet mert nem is tudom bővebben ezt kifejteni.
Elemi (AND / OR )logikai műveleteket végzel el adott bit(ek) pozíció(k)ban.
Hát igen, most már látom, hogy ezt ennél értelemszerűbben nem is lehetett volna elmagyarázni, mert végül is pofon egyszerű alap műveletek, csak hát néha, "ha a lustaság fájna.." még egyszer Köszönöm!
Igaz én Basic Stamp -ot programozok Stamp basic -ben, de a szinkron átvitel csak ugyanaz mindenhol...
Szóval a szinkronjeles beolvasást a SHIFTIN parancs végzi: Bővebben: Link
Az a kérdésem, hogy a parancs miért nem várakozik amíg megkapja kintről az adatot. A program ugyanis tovább szalad rajta, ha 1-en ha 0-án tartom kintről, direktbe az órajel lábat, akkor is.
Szóval hogy adjak a mikrovezérlőnek adatot, ha az csak úgy átszalad a SHIFTIN -en és nem várja meg amíg órajelet adok neki?
A SERIN SEROUT párosnál direkt van olyan változó, hogy meddig várja a jelet, de itt nincs...
Szerintetek? Más kontrollernél hogy van ez? A hozzászólás módosítva: Márc 15, 2016
Idézet: „Cpin is a variable/constant/expression (0 - 15) that specifies the I/O pin that will be connected to the synchronous serial device's clock input. This pin will be set to output mode.”
Miért várakozna, ha kimenetté kapcsolja.
Tehát azon várja az órajelet (merthogy mindig a master adja az órajelet) ezért outputra állítja...
Nem tűnik érthetőnek...
Itt a félreértés: Ez az utasítás (ill. a megvalósítása) adja ki az órajelet. A hozzászólás módosítva: Márc 15, 2016
De hát a SHIFTOUT is előállít órajelet. Azzal hajtja pl az I2C protokollt is.
Akkor vajon hogyan tudok két mikrokontrollert összekötni SHIFTOUT / SHIFTIN párossal, ha mindkettő órajelet akar generálni...?
Meg kellene írni a save oldalt:
0: A Cpin -t és Dpin -t bemenetté állítani,
1: Várakozni, míg a Cpin alacsonyra vált,
2: Várakozni, míg a Cpin magasra vált,
3: Léptetni a változót 1 bittel jobbra / balra,
4: Beolvasni a Dpin értékét, az érték szerint beállítani egy változó legfelső / legalsó bitjét,
5: Ha még van bit, amit venni kell, goto 1
A változóvak tárolnia kell az összes vett bitet...
Üdv!
Segítséget szeretnék kérni! Megépítettem az alábbi kapcsolást, ami egy peltier modul szabályozása. Megvan hozzá a PIC16F628A-ba beégetendő progi is, de sajna én nem tudom lefordítani HEX-be.
Device 16F628A
Config WDT_OFF, PWRTE_ON, MCLRE_OFF, INTRC_OSC_NOCLKOUT, LVP_off
ALL_DIGITAL = true
'****************************************************************
Symbol digit1 = PORTB.5
Symbol digit2 = PORTA.1
Symbol digitA = PORTA.0
Symbol digitB = PORTA.7
Symbol digitC = PORTA.2
Symbol digitD = PORTB.6
Symbol digitE = PORTB.3
Symbol digitF = PORTA.6
Symbol digitG = PORTB.2
Symbol peltier = PORTB.4
Symbol SCL = PORTB.0
Symbol SDA = PORTB.1
Dim getal1 As Byte
Dim getal2 As Byte
Dim getal As Byte
Dim index As Byte
Dim temperatuur As Byte
Symbol gewenst = 10
'****************************************************************
init:
Clear
I2Cin SDA,SCL,$90,[$00]
'****************************************************************
main:
While 1 = 1
GoSub sensorIn
getal1 = temperatuur / 10
getal2 = (temperatuur - (getal1 * 10))
GoSub dispUit
If temperatuur < gewenst Then
Low peltier
Else
High peltier
EndIf
Wend
'****************************************************************
sensorIn:
I2Cin SDA, SCL,$91,[temperatuur]
Return
'****************************************************************
dispUit:
' A
' F B
' G
' E C
' D
For index = 0 To 1
If index = 0 Then
getal = getal1
High digit1
EndIf
If index = 1 Then
High digit2
getal = getal2
EndIf
Select getal
Case 0
High digitA
High digitB
High digitC
High digitD
High digitE
High digitF
Low digitG
Case 1
Low digitA
High digitB
High digitC
Low digitD
Low digitE
Low digitF
Low digitG
Case 2
High digitA
High digitB
Low digitC
High digitD
High digitE
Low digitF
High digitG
Case 3
High digitA
High digitB
High digitC
High digitD
Low digitE
Low digitF
High digitG
Case 4
Low digitA
High digitB
High digitC
Low digitD
Low digitE
High digitF
High digitG
Case 5
High digitA
Low digitB
High digitC
High digitD
Low digitE
High digitF
High digitG
Case 6
High digitA
Low digitB
High digitC
High digitD
High digitE
High digitF
High digitG
Case 7
High digitA
High digitB
High digitC
Low digitD
Low digitE
Low digitF
Low digitG
Case 8
High digitA
High digitB
High digitC
High digitD
High digitE
High digitF
High digitG
Case 9
High digitA
High digitB
High digitC
High digitD
Low digitE
High digitF
High digitG
EndSelect
DelayMS 2
Low digitA
Low digitB
Low digitC
Low digitD
Low digitE
Low digitF
Low digitG
Low digit1
Low digit2
Next
Return
'****************************************************************
End
Valaki esetleg le tudná nekem fordítani? Nagyon hálás lennék.
Nem túlzottan értek hozzá, de ha jól tippelek, akkor basic nyelven van. Próbáltam Mplab-bal, de nem sikerült.
Szia !
Többféle basic fordító van. Nincs rá utalás azon az oldalon ahonnan
letöltötted?
Köszönöm szépen!
Annyit kérdeznék még, hogy milyen progival illetve fordítóval lett lefordítva?
Üdv!
Ismét segítségre lenne szükségem.
A korábban lefordított program jól működik, viszont nem látja el azt a feladatot amit szeretném, hogy elláson. Mivel nem értek a basichez, nem vettem észre, hogy az előre beállított hőmérsékletet nem lehet módosítani, csak a program változtatásával majd újra fordításával.
Egy fórumtársunk segítségével (hálás köszönet érte) módosítottam a programon, hogy 2 nyomógomb segítségével lehessen változtatni a kívánt hőmérséklet.
Ha valaki esetleg tudna rá vetni egy pillantást, hogy így működni fog-e, illetve ha igen akkor le tudná nekem fordítani, akkor örök hálám üldözni fogja
Az eredeti
Device 16F628A
Config WDT_OFF, PWRTE_ON, MCLRE_OFF, INTRC_OSC_NOCLKOUT, LVP_off
ALL_DIGITAL = true
'****************************************************************
Symbol digit1 = PORTB.5
Symbol digit2 = PORTA.1
Symbol digitA = PORTA.0
Symbol digitB = PORTA.7
Symbol digitC = PORTA.2
Symbol digitD = PORTB.6
Symbol digitE = PORTB.3
Symbol digitF = PORTA.6
Symbol digitG = PORTB.2
Symbol peltier = PORTB.4
Symbol SCL = PORTB.0
Symbol SDA = PORTB.1
Dim getal1 As Byte
Dim getal2 As Byte
Dim getal As Byte
Dim index As Byte
Dim temperatuur As Byte
Symbol gewenst = 10
'****************************************************************
init:
Clear
I2Cin SDA,SCL,$90,[$00]
'****************************************************************
main:
While 1 = 1
GoSub sensorIn
getal1 = temperatuur / 10
getal2 = (temperatuur - (getal1 * 10))
GoSub dispUit
If temperatuur < gewenst Then
Low peltier
Else
High peltier
EndIf
Wend
'****************************************************************
sensorIn:
I2Cin SDA, SCL,$91,[temperatuur]
Return
'****************************************************************
dispUit:
' A
' F B
' G
' E C
' D
For index = 0 To 1
If index = 0 Then
getal = getal1
High digit1
EndIf
If index = 1 Then
High digit2
getal = getal2
EndIf
Select getal
Case 0
High digitA
High digitB
High digitC
High digitD
High digitE
High digitF
Low digitG
Case 1
Low digitA
High digitB
High digitC
Low digitD
Low digitE
Low digitF
Low digitG
Case 2
High digitA
High digitB
Low digitC
High digitD
High digitE
Low digitF
High digitG
Case 3
High digitA
High digitB
High digitC
High digitD
Low digitE
Low digitF
High digitG
Case 4
Low digitA
High digitB
High digitC
Low digitD
Low digitE
High digitF
High digitG
Case 5
High digitA
Low digitB
High digitC
High digitD
Low digitE
High digitF
High digitG
Case 6
High digitA
Low digitB
High digitC
High digitD
High digitE
High digitF
High digitG
Case 7
High digitA
High digitB
High digitC
Low digitD
Low digitE
Low digitF
Low digitG
Case 8
High digitA
High digitB
High digitC
High digitD
High digitE
High digitF
High digitG
Case 9
High digitA
High digitB
High digitC
High digitD
Low digitE
High digitF
High digitG
EndSelect
DelayMS 2
Low digitA
Low digitB
Low digitC
Low digitD
Low digitE
Low digitF
Low digitG
Low digit1
Low digit2
Next
Return
'****************************************************************
End
A változtatott
Device 16F628A
Config WDT_OFF, PWRTE_ON, MCLRE_OFF, INTRC_OSC_NOCLKOUT, LVP_off
ALL_DIGITAL = true
'****************************************************************
Symbol digit1 = PORTB.5
Symbol digit2 = PORTA.1
Symbol digitA = PORTA.0
Symbol digitB = PORTA.7
Symbol digitC = PORTA.2
Symbol digitD = PORTB.6
Symbol digitE = PORTB.3
Symbol digitF = PORTA.6
Symbol digitG = PORTB.2
Symbol peltier = PORTB.4
Symbol SCL = PORTB.0
Symbol SDA = PORTB.1
Symbol inpFEL = PORTA.4
Symbol inpLE = PORTA.5
Dim getal1 As Byte
Dim getal2 As Byte
Dim getal As Byte
Dim index As Byte
Dim temperatuur As Byte
Symbol gewenst = 10
'****************************************************************
init:
Clear
I2Cin SDA,SCL,$90,[$00]
'****************************************************************
main:
While 1 = 1
GoSub sensorIn
getal1 = temperatuur / 10
getal2 = (temperatuur - (getal1 * 10))
GoSub dispUit
If temperatuur < gewenst Then
Low peltier
Else
High peltier
EndIf
Wend
if inpFEL = HIGH then
gewenst = gewents+1
wait (800)
endif
if inpLE = HIGH then
gewenst = gewents-1
if gewents = -1 then
gewents=0
endif
wait (800)
endif
'****************************************************************
sensorIn:
I2Cin SDA, SCL,$91,[temperatuur]
Return
'****************************************************************
dispUit:
' A
' F B
' G
' E C
' D
For index = 0 To 1
If index = 0 Then
getal = getal1
High digit1
EndIf
If index = 1 Then
High digit2
getal = getal2
EndIf
Select getal
Case 0
High digitA
High digitB
High digitC
High digitD
High digitE
High digitF
Low digitG
Case 1
Low digitA
High digitB
High digitC
Low digitD
Low digitE
Low digitF
Low digitG
Case 2
High digitA
High digitB
Low digitC
High digitD
High digitE
Low digitF
High digitG
Case 3
High digitA
High digitB
High digitC
High digitD
Low digitE
Low digitF
High digitG
Case 4
Low digitA
High digitB
High digitC
Low digitD
Low digitE
High digitF
High digitG
Case 5
High digitA
Low digitB
High digitC
High digitD
Low digitE
High digitF
High digitG
Case 6
High digitA
Low digitB
High digitC
High digitD
High digitE
High digitF
High digitG
Case 7
High digitA
High digitB
High digitC
Low digitD
Low digitE
Low digitF
Low digitG
Case 8
High digitA
High digitB
High digitC
High digitD
High digitE
High digitF
High digitG
Case 9
High digitA
High digitB
High digitC
High digitD
Low digitE
High digitF
High digitG
EndSelect
DelayMS 2
Low digitA
Low digitB
Low digitC
Low digitD
Low digitE
Low digitF
Low digitG
Low digit1
Low digit2
Next
Return
'****************************************************************
End
Üdv!
Így átalakítva lefordult, csatolom a hexet, próbáld ki.
Device 16F628A
Config WDT_OFF, PWRTE_ON, MCLRE_OFF, INTRC_OSC_NOCLKOUT, LVP_off
All_Digital = true
'****************************************************************
Symbol digit1 = PORTB.5
Symbol digit2 = PORTA.1
Symbol digitA = PORTA.0
Symbol digitB = PORTA.7
Symbol digitC = PORTA.2
Symbol digitD = PORTB.6
Symbol digitE = PORTB.3
Symbol digitF = PORTA.6
Symbol digitG = PORTB.2
Symbol peltier = PORTB.4
Symbol SCL = PORTB.0
Symbol SDA = PORTB.1
Symbol inpFEL = PORTA.4
Symbol inpLE = PORTA.5
Dim getal1 As Byte
Dim getal2 As Byte
Dim getal As Byte
Dim index As Byte
Dim temperatuur As Byte
Dim gewents As Byte
gewents = 10
'****************************************************************
init:
Clear
I2Cin SDA,SCL,$90,[$00]
'****************************************************************
main:
While 1 = 1
GoSub sensorIn
getal1 = temperatuur / 10
getal2 = (temperatuur - (getal1 * 10))
GoSub dispUit
If temperatuur < gewents Then
Low peltier
Else
High peltier
EndIf
If inpFEL = 1 Then
gewents = gewents +1
DelayMS 800
EndIf
If inpLE = 1 Then
gewents = gewents -1
EndIf
If gewents <= 0 Then
gewents =0
EndIf
DelayMS 800
Wend
'****************************************************************
sensorIn:
I2Cin SDA, SCL,$91,[temperatuur]
Return
'****************************************************************
dispUit:
' A
' F B
' G
' E C
' D
For index = 0 To 1
If index = 0 Then
getal = getal1
High digit1
EndIf
If index = 1 Then
High digit2
getal = getal2
EndIf
Select getal
Case 0
High digitA
High digitB
High digitC
High digitD
High digitE
High digitF
Low digitG
Case 1
Low digitA
High digitB
High digitC
Low digitD
Low digitE
Low digitF
Low digitG
Case 2
High digitA
High digitB
Low digitC
High digitD
High digitE
Low digitF
High digitG
Case 3
High digitA
High digitB
High digitC
High digitD
Low digitE
Low digitF
High digitG
Case 4
Low digitA
High digitB
High digitC
Low digitD
Low digitE
High digitF
High digitG
Case 5
High digitA
Low digitB
High digitC
High digitD
Low digitE
High digitF
High digitG
Case 6
High digitA
Low digitB
High digitC
High digitD
High digitE
High digitF
High digitG
Case 7
High digitA
High digitB
High digitC
Low digitD
Low digitE
Low digitF
Low digitG
Case 8
High digitA
High digitB
High digitC
High digitD
High digitE
High digitF
High digitG
Case 9
High digitA
High digitB
High digitC
High digitD
Low digitE
High digitF
High digitG
EndSelect
DelayMS 2
Low digitA
Low digitB
Low digitC
Low digitD
Low digitE
Low digitF
Low digitG
Low digit1
Low digit2
Next
Return
'****************************************************************
End
Üdv! Srácok egy 2.8 voltos OLED kijelzőt tudok vezérelni egy 5voltos PIC-el? A hozzászólás módosítva: Júl 24, 2016
A legegyszerűbb, hogy minden, a kijelző felé tartó vonalat két ellenállással leosztasz 2,8 V-ra.
Itt van, MCOT256064BX ez lenne a kijelző, ennek van egy bekötési alaprajza, a pdf-ben, de konkrét feszültségek a rajznál nincsenek, nem nagyon igazodok ki, hogy most akkor itt ki kivel van 8-bit 68XX Parallel módban szeretném üzemeltetni, ehhez kellene, nekem egy bekötési útmutató..
Bakman te most úgy gondoltad, hogy az adat lábakat ellenállásozzam?
Mivel a kijelző sehonnan nem kaphat 5 V-ot, valahogy csökkenteni kell a vezérlőjelek feszültségét.
Az adatlap szerint a BS0 és BS1 vezetékekkel lehet kiválasztani a kommunikációs üzemmódot. Neked 1,0 "beállítás" kell. A lábakhoz egyenként oda van írva, melyik mit csinál.
Csak akkor jó a megoldás, ha nem akar olvasni a kontrollerből (még a STATUS regisztert sem).
Legegyszerűbben egy 3.3V -os kontrollerrel lehetne vezérelni. Vci = Vddio = 3.3V, Vdd = 1.8 .. 2.5V A hozzászólás módosítva: Júl 24, 2016
Az odáig oké volt, hogy melyik láb mi, csak a Feszültségekkel nem voltam képben, mert nem igazán láttam át a táblázatban. Az üzemmód is egyértelmű, de a beállítás az 1,1 68XX-nél, nem 1,0, végeredményben arra lettem volna kíváncsi, hogy megoldható e 5 voltos PIC-el a vezérlése minden kompromisszum nélkül, de mint Hp41C írta nem igazán. Így akkor marad egy 3,3V-os példány. Köszi az infókat!
A segítségeteket kérném szépen az itt található hőfokszabályozóval kapcsolatban. Megépítettem, jól működik, de vészjelzőnek akarom használni. Ezért nagyon megköszönném ha valaki átírná a programját úgy, hogy amikor eléri a hőfokot akkor kapcsoljon be a relé.Külön köszönnöm ha felrakja ide a hex fájlt
Mikor kapcsol most a relé?
Én inkább a tranzisztort cserélném PNP-re.
Vagy a relének használnám az NC érintkezőjét.
Igaza van mrobi kollégának! A relé mindhárom érintkezője ki van vezetve, ha az NC és a COM közé kötöd amit szeretnél pont az történik amit szeretnél.
A relé akkor nyit amikor eléri a beállított értéket.
Az NC azért nem jó, mert a riasztás amit kapcsol külön áramkörön van. Pl.: Ha ki van kapcsolva a gép amin figyel a hőmérséklet mérő, akkor riaszt az elengedet relé.
Nem tudom mi legyek ha értem. Ha kapcsol a relé, állapotot vált, mindegy minek hívjuk NC vagy NO az csak az alapállapotot mutatja. De ha mindenképpen ragaszkodsz hozzá akkor cseréld a meghajtó tranyót PNP-re ahogy fentebb is javasolták, akkor megfordul a működés, de akkor is csak ez a két állapot között fog váltani, különbség akkor sem lesz a működésben.
|
|