 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
rimci Član

Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 1.95 Kraj: Prekmurje
|
Objavljeno: Sre Avg 11, 2010 9:20 am Naslov sporočila: Mega162 UART težava |
|
|
Pozdravljeni
Imam težavo pri megi162 pri izpisu na rs232. Isti program na istem vezju z attiny2313 pravilno izpiuje na rs232 medtem ko mi pri mega162 izpisuje "hiroglife". Vem da ima mega162 dva rs232 porta. Izbranega imam pravega saj dovbivam neke podatke iz njega. Probal sem že razne nastavitve z frekvenco oscilatorja (imam izbranega internega), pa različne nastavitve baud, pa vseeno brez uspeha. Kaj bi lahko bilo, a sem kaj spregledal?
Del kode:
Koda: |
$regfile = "m162def.dat"
'$regfile = "m32def.dat"
'$regfile = "m8def.dat"
'$regfile = "attiny2313.dat"
'$large
$crystal = 11059200
$baud1 = 9600
$baud = 9600
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 '40
'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Config Com2 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Open "com2:" For Binary As #1 'odpremo com2 |
hvala na pomoči
lp
|
|
Nazaj na vrh |
|
 |
Obelix Član

Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1881 Aktiv.: 9.05 Kraj: Maribor
|
Objavljeno: Sre Avg 11, 2010 10:04 am Naslov sporočila: |
|
|
Običajno je frekvenca internega oscilatorja pri Atmegi162 8 MHz. Ti pa imaš v prevajalniku nastavljeno na 11,0592 MHz.
Ali pa poskusi dodati kvarc za 11,0592 MHz.
LpA
|
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Sre Avg 11, 2010 10:05 am Naslov sporočila: Re: Mega162 UART težava |
|
|
Koda: |
$crystal = 11059200 |
Citiram: |
The calibrated internal RC Oscillator provides a fixed 8.0 MHz clock. |
Nekaj ne štima
Hehe. Prepozen
|
|
Nazaj na vrh |
|
 |
rimci Član

Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 1.95 Kraj: Prekmurje
|
Objavljeno: Sre Avg 11, 2010 10:30 am Naslov sporočila: |
|
|
Sem prej napisal da sem probal z različnimi frekvencami, sedaj sem probal še enkrat z 8MHz pa je zadeva ista. Probal tudi na com2 in je isto.
Koda: |
$regfile = "m162def.dat"
'$regfile = "m32def.dat"
'$regfile = "m8def.dat"
'$regfile = "attiny2313.dat"
'$large
$crystal = 8000000
$baud1 = 9600
$baud = 9600
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 '40
'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Config Com2 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com2:" For Binary As #1 'odpremo com2 |
lp
|
|
Nazaj na vrh |
|
 |
Obelix Član

Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1881 Aktiv.: 9.05 Kraj: Maribor
|
Objavljeno: Sre Avg 11, 2010 10:54 am Naslov sporočila: |
|
|
Mogoče imaš smolo in je interni oscilator na tvoji Atmegi162 dovolj "mimo" nazivne frekvence.
Poskusi z zunanjim kvarcem.
LpA
|
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Sre Avg 11, 2010 11:23 am Naslov sporočila: |
|
|
MEG ne poznam, vendar PICi imajo OSCCON register za konfiguracijo internega oscilatorja.
Narediš pa nekako tako
Koda: |
for x = 1 .. 255
OSCCON = X
sendUart(x + " Test test...\n") |
Ko na računalniku vidiš pravilen text uporabiš tisti OSCCON.
|
|
Nazaj na vrh |
|
 |
rimci Član

Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 1.95 Kraj: Prekmurje
|
Objavljeno: Sre Avg 11, 2010 11:47 am Naslov sporočila: |
|
|
Čudno: ko izberem v fuse bitih externi oscilator (imam 11059200Hz) in sprogramiram kontroler ja zadeva ista kar se tiče izpisa na rs232. Zanimivo pa da LCD dela tudi če vstavim 8MHz kvarz. A je potrebno še kaj v fuse bitih nastaviti?
Opis: |
|
Velikost datoteke: |
105.41 KB |
Pogledana: |
12 krat |

|
|
|
Nazaj na vrh |
|
 |
rimci Član

Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 1.95 Kraj: Prekmurje
|
Objavljeno: Ned Avg 15, 2010 9:23 pm Naslov sporočila: |
|
|
Kar se tiče izpisa na rs232 čakam na novi mikrokontroler, ker sumim na njega. Imam pa eno vprašanje glede programa, ki ga pripenjam tukaj. Program mi do temperature T13 deluje v simulatorju vredu, ko pa merim temeraturo T14 pa mi v podprogramu Branjetemp_i v vrstici Termometer(1) = 1wread(9 , Pind , J) zresetira spremenljivki J in I. Ne uspem razvozlati zakaj. Prosim za pomoč.
Koda: |
$sim
$regfile = "m162def.dat"
'$regfile = "attiny2313.dat"
$crystal = 8000000
'$crystal = 11059200
$baud1 = 9600
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Config Com2 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com2:" For Binary As #1 'odpremo com2
Dim Termometer(9) As Byte
Dim Temperatura As Integer
Dim J As Integer
Dim I As Integer
Config Lcd = 16 * 2
'Config Lcdpin = Pin , Db7 = Portb.7 , Db6 = Portb.6 , Db5 = Portb.5 , Db4 = Portb.4 , E = Portb.3 , Rs = Portb.2 'za attiny2313
Config Lcdpin = Pin , Db7 = Porta.7 , Db6 = Porta.6 , Db5 = Porta.5 , Db4 = Porta.4 , E = Porta.3 , Rs = Porta.2 'za mego162
Cursor Off Noblink
Cls : Locate 1 , 1 : Lcd "DS1820"
'Wait 1
Do
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' in branje termometrov faza 1 - priprava na PORTA D.2 do D.7 :
For J = 2 To 8
If J = 8 Then Gosub Jojo
1wreset Pind , J ' reset the bus
1wwrite &HCC , 1 , Pind , J ' skip rom
1wwrite &H44 , 1 , Pind , J ' Convert T
Gosub Branjetemp_j
Branjetemp_j:
1wreset Pind , J ' reset the bus
1wwrite &HCC , 1 , Pind , J ' skip rom
1wwrite &HBE , 1 , Pind , J 'READ Scratchpad
Termometer(1) = 1wread(9 , Pind , J)
1wreset Pind , J
If Crc8(termometer(1) , 9) = 0 And Termometer(5) = &HFF Then ' Temperatura pravilno prebrana:
Temperatura = Temperatura / 2
If J = 2 Then : Locate 1 , 1 : Lcd "T1= " ; Temperatura ; "C"
Print #1 , "T1= " , Temperatura , "C"
End If
If J = 3 Then : Locate 1 , 10 : Lcd "T2= " ; Temperatura ; "C"
Print #1 , "T2= " , Temperatura , "C"
End If
If J = 4 Then : Locate 2 , 1 : Lcd "T3= " ; Temperatura ; "C"
Print #1 , "T3= " , Temperatura , "C"
End If
If J = 5 Then : Locate 2 , 10 : Lcd "T4= " ; Temperatura ; "C"
Print #1 , "T4= " , Temperatura , "C"
End If
If J = 6 Then
Print #1 , "T5= " , Temperatura , "C"
End If
If J = 7 Then
Print #1 , "T6= " , Temperatura , "C"
End If
Else
If J = 2 Then : Locate 1 , 1 : Lcd " ***** "
Print #1 , "T1 NI SENZORJA*"
End If
If J = 3 Then : Locate 1 , 10 : Lcd " ***** "
Print #1 , "T2 NI SENZORJA*"
End If
If J = 4 Then : Locate 2 , 1 : Lcd " ***** "
Print #1 , "T3 NI SENZORJA*"
End If
If J = 5 Then : Locate 2 , 10 : Lcd " ***** "
Print #1 , "T4 NI SENZORJA*"
End If
If J = 6 Then : Locate 2 , 10 : Lcd " ***** "
Print #1 , "T5 NI SENZORJA*"
End If
If J = 7 Then : Locate 2 , 10 : Lcd " ***** "
Print #1 , "T6 NI SENZORJA*"
End If
End If
Next J
Jojo:
For I = 0 To 8
1wwrite &HCC , 1 , Pinb , I ' skip rom
1wwrite &H44 , 1 , Pinb , I ' Convert T
Gosub Branjetemp_i
Branjetemp_i:
1wreset Pinb , I ' reset the bus
1wwrite &HCC , 1 , Pinb , I ' skip rom
1wwrite &HBE , 1 , Pinb , I 'READ Scratchpad
Termometer(1) = 1wread(9 , Pind , I)
1wreset Pinb , I
If Crc8(termometer(1) , 9) = 0 And Termometer(5) = &HFF Then ' Temperatura pravilno prebrana:
Temperatura = Temperatura / 2
If I = 0 Then
Print #1 , "T7= " , Temperatura , "C"
End If
If I = 1 Then
Print #1 , "T8= " , Temperatura , "C"
End If
If I = 2 Then
Print #1 , "T9= " , Temperatura , "C"
End If
If I = 3 Then
Print #1 , "T10= " , Temperatura , "C"
End If
If I = 4 Then
Print #1 , "T11= " , Temperatura , "C"
End If
If I = 5 Then
Print #1 , "T12= " , Temperatura , "C"
End If
If I = 6 Then
Print #1 , "T13= " , Temperatura , "C"
End If
If I = 7 Then
Print #1 , "T14= " , Temperatura , "C"
End If
Else
If I = 0 Then
Print #1 , "T7 NI SENZORJA*"
End If
If I = 1 Then
Print #1 , "T8 NI SENZORJA*"
End If
If I = 2 Then
Print #1 , "T9 NI SENZORJA*"
End If
If I = 3 Then
Print #1 , "T10 NI SENZORJA*"
End If
If I = 4 Then
Print #1 , "T11 NI SENZORJA*"
End If
If I = 5 Then
Print #1 , "T12 NI SENZORJA*"
End If
If I = 6 Then
Print #1 , "T13 NI SENZORJA*"
End If
If I = 7 Then
Print #1 , "T14 NI SENZORJA*"
End If
End If
Next I
Loop
Close #1
End |
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|