Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

atmega8 bascom i 7seg led displej (10 komada) + ADC

[es] :: Elektronika :: Mikrokontroleri :: atmega8 bascom i 7seg led displej (10 komada) + ADC

[ Pregleda: 2959 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

PedjaZ

Član broj: 48898
Poruke: 2062



+141 Profil

icon atmega8 bascom i 7seg led displej (10 komada) + ADC16.08.2012. u 22:10 - pre 142 meseci
Najzad krenuo nesto sa uC i umesto da pocnem sa LED blink ja zadao sebi tezi zadatak :)

Trazio neke primere za multiplexovanje ali nesto nisam pronasao.
Smislio nesto pa mi sada treba vasa pomoc jer PROTEUS izbacuje cudne vrednosti.

Iz seme se vidi da imam 4 analogna ulaza i svaki od njih ide na 7seg LED D.
Da bi ustedeo na pinovima i pojednostavio, dodao sam 4017.
Sve OK radi bez ADC u PROTEUSU - nasumice prikazivanje brojeva,
ali ADC ne pokazuje kako ja hocu.
ADC ide od 0-1023 (ovo je vise pitanje)
Referentni napon je 2.56V (i ovo)
1023*10/40 =255 i to je najveca vrednost koju trebam da vidim na prvih 3 displeja
ali ja dobijam drugacije.
Mucim se vec neko vreme ali ne ide.
Moze pomoc?

Drugo pitanje.
Sta u programu da ubacim kako bi mogao neke vrednosti u proteusu da prikazujem - nesto kao debug prozor?

Hvala

Code:

' radjeno za:
'F:\Podaci sa C\Elektronika\Proteus\_Moje\ATMEGA8 i 10 LED 7 seg\02.DSN


$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 128                                              ' default use 32 for the hardware stack
$swstack = 25                                               'default use 10 for the SW stack
$framesize = 100                                            'default use 40 for the frame space


Dim Znam(5) As Byte , Ii As Byte , Pom As Byte , P3 As Byte
Dim Number(11) As Byte
Dim Br(10) As Byte
Dim I As Byte
Dim Oi As Byte
Dim O As Byte
Dim W As Word
Dim Cu As Integer
Dim Ww As String * 3
Dim S0 As String * 3
Dim S1 As String * 1
Dim S2 As String * 1
Dim S3 As String * 1
Dim V1 As Byte
Dim V2 As Byte
Dim V3 As Byte


W = 230

Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc

Config Timer0 = Timer , Prescale = 8                        '64

Config Portb = Output                                       'set port B as output
Config Portd = Output

Portb = &B00000000
Portd = &B11111111

'kada brojevi idu od port0 ka port7
 Number(1) = &B11111001                                     '1
 Number(2) = &B10100100                                     '2
 Number(3) = &B10110000                                     '3
 Number(4) = &B10011001                                     '4
 Number(5) = &B10010010                                     '5
 Number(6) = &B10000010                                     '6
 Number(7) = &B11111000                                     '7
 Number(8) = &B10000000                                     '8
 Number(9) = &B10010000                                     '9
 Number(10) = &B01000000                                    'ovo je nula
 Number(11) = &B11111111                                    'prazno

On Timer0 Prikaz
Enable Interrupts
Enable Timer0
Counter0 = 60536

Start Timer0

'(
For I = 1 To 10
   Br(i) = Number(i)
Next


Br(10) = Number(4)
Br(2) = Number(2)
Br(3) = Number(6)
')

'prouci naredbu STR2DIGITS

Do

'   Oi = Br(10)
'   Br(10) = Br(1) : Br(1) = Br(2) : Br(2) = Br(3) : Br(3) = Br(4) : Br(4) = Br(5)
'   Br(5) = Br(6) : Br(6) = Br(7) : Br(7) = Br(8) : Br(8) = Br(9) : Br(9) = Oi



   Oi = 0
   For I = 0 To 3
      W = Getadc(i)
'      W = 105
      W = W * 10
      Cu = W / 40                                           '/40
      '1023= 25V =2.56V    1023/399=2,56  - prikazuje 2 broja + jednu decimalu
      Ww = Str(cu)

'      S0 = Format(ww , "000")
'      S1 = Mid(s0 , 1 , 1)
'      S2 = Mid(s0 , 2 , 1)
'      S3 = Mid(s0 , 3 , 1)
'      Print "ww=" ; Ww ; " s0=" ; S0 ; " s1=" ; S1 ; " s2=" ; S2 ; " s3=" ; S3




      If I = 0 Or I = 2 Then
         S0 = Format(ww , "000")
         S1 = Mid(s0 , 1 , 1)
         S2 = Mid(s0 , 2 , 1)
         S3 = Mid(s0 , 3 , 1)
         V1 = Val(s1)
         V2 = Val(s2)
         V3 = Val(s3)

         If V1 = 0 Then V1 = 11
         If V2 = 0 Then V2 = 10
         If V3 = 0 Then V3 = 10

         Oi = Oi + 1
         Br(oi) = Number(v1)
         Oi = Oi + 1
         Br(oi) = Number(v2)
         Oi = Oi + 1
         Br(oi) = Number(v3)

'         Print "ww=" ; Ww ; " s0=" ; S0 ; " s1=" ; S1 ; " s2=" ; S2 ; " s3=" ; S3
'         Print "ww=" ; Ww ; " s0=" ; S0 ; " v1=" ; V1 ; " v2=" ; V2 ; " v3=" ; V3

'         Print "i=" ; I ; " cu=" ; Cu ; " s0=" ; S0


'         Print Br(1)
'         Print Br(2)
'         Print Br(3)



       Else
         S0 = Format(ww , "00")
         S1 = Mid(s0 , 1 , 1)
         S2 = Mid(s0 , 2 , 1)
         V1 = Val(s1)
         V2 = Val(s2)

         If V1 = 0 Then V1 = 11
         If V2 = 0 Then V2 = 10

         Oi = Oi + 1
         Br(oi) = Number(v1)
         Oi = Oi + 1
         Br(oi) = Number(v2)


       End If

   Next I

Loop


'...



Prikaz:

   For Ii = 1 To 10

      Portd = Br(ii)
      Portb = &B00000000
      Waitms 2
      Portb = &B00000001

   Next Ii

   Portd = Br(1)

   Counter0 = 65536
   Start Timer0

   Return









[Ovu poruku je menjao PedjaZ dana 16.08.2012. u 23:30 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

PedjaZ

Član broj: 48898
Poruke: 2062



+141 Profil

icon Re: atmega8 bascom i 7seg led displej (10 komada) + ADC18.08.2012. u 11:01 - pre 142 meseci
Proradilo je kada se VREF i AVCC spoje na spoljnih 2.56V

Ne znam zasto kada je Reference = Internal.
U predhodnim verzijama istog programa je radilo OK i bez spajanja tih pinova.

Drugo pitanje je i dalje aktuelno.
Sta u programu da ubacim kako bi mogao neke vrednosti u proteusu da prikazujem - nesto kao debug prozor?
 
Odgovor na temu

milanmeh
Novi Sad

Član broj: 206027
Poruke: 213
*.dynamic.sbb.rs.



+7 Profil

icon Re: atmega8 bascom i 7seg led displej (10 komada) + ADC18.08.2012. u 19:21 - pre 142 meseci
Kod AVR Avcc ne sme biti manji od Vcc-0.3V ili veci od Vcc+0.3V, pod predpostavkom da koristis obicnu Atmega8, onda bi trebao Vcc=5V da dovedes na AVcc.
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: atmega8 bascom i 7seg led displej (10 komada) + ADC18.08.2012. u 19:35 - pre 142 meseci
Mozes za debagovanje da koristis serijski port i terminal iz Proteusa.
gorankg
 
Odgovor na temu

yugaja
BG

Član broj: 18381
Poruke: 402
*.dynamic.isp.telekom.rs.

Sajt: yugaja.co.nf


+4 Profil

icon Re: atmega8 bascom i 7seg led displej (10 komada) + ADC20.08.2012. u 14:12 - pre 142 meseci
Citat:
PedjaZ:

Drugo pitanje je i dalje aktuelno.
Sta u programu da ubacim kako bi mogao neke vrednosti u proteusu da prikazujem - nesto kao debug prozor?



Ako MCU "nahranis" sa *.cof fajlom trebao bi da se otvori i prozor sa nazivima promenljivih iz koda. Taj prozor se vidi samo dok je simulacija u "pause" modu. Naravno ti mozes da prevuces jednu ili vise promenljivih u watch window...

Nadam se da si na to mislio?

Poz!!
R Tape loading error, 0:1
 
Odgovor na temu

PedjaZ

Član broj: 48898
Poruke: 2062



+141 Profil

icon Re: atmega8 bascom i 7seg led displej (10 komada) + ADC20.08.2012. u 16:40 - pre 142 meseci
Hvala,
isprobacu to.
Programce sam priveo kraju, dodao i kalibraciju samo jos da vidim kako se snimaju promenljive u EPROM.
I onda vam javljam da li u praksi radi OK, da li cu morati reset da napravim za 4017 ili ce i ovako raditi.

evo video
Prikačeni fajlovi
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: atmega8 bascom i 7seg led displej (10 komada) + ADC20.08.2012. u 17:32 - pre 142 meseci
Nece ovako da radi. 4017 ne moze da goni LED displej direktno. Treba ti drajver. Recimo ULN2803.
gorankg
 
Odgovor na temu

PedjaZ

Član broj: 48898
Poruke: 2062



+141 Profil

icon Re: atmega8 bascom i 7seg led displej (10 komada) + ADC20.08.2012. u 17:49 - pre 142 meseci
Da, da.
Ovo je samo pojednostavljena sema.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: atmega8 bascom i 7seg led displej (10 komada) + ADC

[ Pregleda: 2959 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.