MMC Wave Player

Tarvitsen asiantuntevaa avustusta projektissani.

Yritän saada seuraavassa linkissä esiteltyä MMC Wave Player:iä toimimaan.

http://avrprojects.info/avr-projects/mmc-card-based-wav-player/

Yritän ladata valmista hex-tiedostoa piiriin käyttäen Codevision AVR:n Chip Programmeria. Käyttämäni ohjelmointikaapeli on USB-liitäntäinen AVRISP mkII.

Ohjelman lataus mikro-ohjaimeen onnistuu ulkoisella ohjelmointikortilla, jostain syystä ei projektikortilla. Käytössäni ei ole oskilloskooppia tällä hetkellä.

Missä mahtaisi olla syy, kun kortin kaiuttimesta kuuluu vain epämääräisiä särinöitä?
Mitä ovat AVR:n Fuse Bitit ja mitä niillä yleensä ottaen tehdään ja mitä minun pitäisi niillä tehdä?

Käyttämässäni muistikortissa lukee "MAX 2GB MMC Mobile DV RSMMC CARD."

Tiedän kyllä, että tähän projektiin käytettävä koodi on kirjoitettu 1GB MMC-kortille ja olen tehnyt sellaisesta kortista tilauksen, mutta kortin saapumiseen saattaa mennä viikkoja(uskomattoman huono nettikauppa). Silti kuvittelisin ohjelman vain toimivan siten, että 1GB:stä eteenpäin olevaa muistiavaruutta ei ohjelman toimesta ole olemassa.

Käyttämälläni kortilla on tallennettuna 5 kpl Wav-tiedostoja, parametreiltään PCM Unsigned 8 Bit Mono. Kortti formatoitiin ennen tiedostojen siirtoa FAT (default)-toimintoa käyttäen.

Osaan C-kieltä aika hyvin, mutta tiedostonkäsittelyä en tunne, enkä ole koskaan joutunut tutustumaan muistipaikkaosoitteita vaativaan ohjelmointiin. Tunnen osoittimien perusteet, mutta eihän niidenkään käyttö edellytä muistiosoitteiden tuntemista.

Lisäksi koodi on kirjoitettu itselleni täysin tuntemattomalla Bascom-kielellä. En siis pysty muokkaamaan koodia itse, kun en tiedä, mitä se oikeasti tekee.

Kiitos kaikesta avusta.
1233
Äänestä

Muut lukivat myös

Vastaukset 1

Vanhimmat

$regfile = "m16def.dat"
$crystal = 11059200 '

Config Pinc.4 = Input
Pause Alias Pinc.4
'-------------------------------
Config Pinc.5 = Input
Kelid Alias Pinc.5
'--------------------------------
Config Pinc.6 = Input
Kelid2 Alias Pinc.6
'-------------------------------
Config Pinb.4 = Output


Config Pind.3 = Output
Set Portd.3
'---------------------------------
Config Debounce = 20
'-------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
Pwm1a = 255
Pwm1b = 255
'Constants
'warter are FAM & Behnam

Const Msbl = 0
Const Msbh = 1
Const Dly = 2
Const Bits8 = 8
Const Bits16 = 16
Const Bits32 = 32

'Dim
Dim Dat As Byte
Dim Resp As Byte
Dim I As Word
Dim Addr As Long
Dim Adres As Long
Dim Tanzim As Byte
Dim Ali As Byte
Dim Test As Long
Dim Copy As Long
Dim Shomare As Long
Dim Hassan As Byte
'Aliases
Cs Alias Portb.0
Mosi Alias Portb.1
Clk Alias Portb.3
Miso Alias Pinb.2

'Declarations
Declare Sub Minit
Declare Sub Mread(byval Addr As Long )
'Configs
Config Portb.2 = Output
Config Portb.0 = Output
Config Portb.3 = Output
Config Pinb.1 = Input

Waitms 300
Config Spi = Soft , Din = Pinb.2 , Dout = Portb.1 , Ss = Portb.0 , Clock = Portb.3

Enable Interrupts
Enable Spi

Spiinit

'******** MAIN PROGRAM *************

Reset Portd.3
Main:
'Initialize the MMCC
Minit
Adres = 1048576
Ali = 0
Reset Portd.3

Inja:
Toggle Portb.4
Mread Adres

Debounce Pause , 1 , Stop_play , Sub
Debounce Kelid2 , 1 , Jolo2 , Sub
Debounce Kelid , 1 , Jolo , Sub

Adres = Adres 512

'baraye in ke ta dastgah roshan shod peygham 1 ra ped konad
'-----------------------------------------------------------------
If Ali = 0 Then
Adres = Adres 5120000
Test = 512 * 7800
'Test = 512 * 8000
Adres = Adres - Test
Ali = 1

Test = Adres
End If
'-------------------------------------------------------------------
Goto Inja

Xloop:
Set Cs
Shiftout Mosi , Clk , Dat , Msbl
Endloop:
Goto Endloop
End 'end program
'***************************** END OF PROGRAM **********************************
'======= SUB ROUTINES AND FUNCTIONS =======
'warter are FAM & Behnam
'*** INITIALIZATION OF MMC ***
Sub Minit
Set Cs

Dat = &HFF
For I = 1 To 10
Shiftout Mosi , Clk , Dat , Msbl
Next I

Resp = 255
Reset Cs

Cmd0:
Dat = &H40
Shiftout Mosi , Clk , Dat , Msbl

Addr = &H00000000
Shiftout Mosi , Clk , Addr , Msbl

Dat = &H95
Shiftout Mosi , Clk , Dat , Msbl

While Resp &H01
Shiftin Miso , Clk , Resp , Msbl
Wend

Set Cs
Waitms 50
Reset Cs
Dat = &HFF

Cmd1:
While Resp &H00
'warter are FAM & Behnam
Set Cs
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs
Dat = &H41
Shiftout Mosi , Clk , Dat , Msbl
Addr = 0
Shiftout Mosi , Clk , Addr , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Wend

Dat = &HFF
Set Cs
End Sub

'warter are FAM & Behnam
'**** READ routine assumes ADDR uses Status subroutine *****
Sub Mread(byval Addr As Long)
Set Cs
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs

Dat = &H51
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Addr , Msbl

Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl

While Resp 0
Shiftin Miso , Clk , Resp , Msbl
Wend

While Resp &HFE
Shiftin Miso , Clk , Resp , Msbl
Wend

For I = 1 To 512
Shiftin Miso , Clk , Resp , Msbl

Pwm1a = Resp
Pwm1b = Resp
Waitus 29
'Waitus 3 'ÓÑÚÊ
Next I

Shiftin Miso , Clk , Resp , Msbl
Shiftin Miso , Clk , Resp , Msbl
Set Cs
'warter are FAM & Behnam
End Sub

Jolo:
Adres = Adres 153600

For Shomare = 1 To 500
If Kelid = 0 Then Return
Waitms 1
Next

Adres = Adres 972800

Return

Jolo2:
Adres = Adres - 153600

For Shomare = 1 To 500
If Kelid2 = 0 Then Return
Waitms 1
Next

Adres = Adres - 972800

If Adres < Test Then Adres = Test
Return

Stop_play:
Set Portd.3
Pwm1a = 255
Pwm1b = 255
Copy = Adres
Do
Debounce Pause , 1 , Play
Loop
Play:
Reset Portd.3
Adres = Copy
Return

Äänestä

Kommentoi aloitusta


Kiitollinen avusta kirjoitti:

Tarvitsen asiantuntevaa avustusta projektissani.

Yritän saada seuraavassa linkissä esiteltyä MMC Wave Player:iä toimimaan.

http://avrprojects.info/avr-projects/mmc-card-based-wav-player/

Yritän ladata valmista hex-tiedostoa piiriin käyttäen Codevision AVR:n Chip Programmeria. Käyttämäni ohjelmointikaapeli on USB-liitäntäinen AVRISP mkII.

Ohjelman lataus mikro-ohjaimeen onnistuu ulkoisella ohjelmointikortilla, jostain syystä ei projektikortilla. Käytössäni ei ole oskilloskooppia tällä hetkellä.

Missä mahtaisi olla syy, kun kortin kaiuttimesta kuuluu vain epämääräisiä särinöitä?
Mitä ovat AVR:n Fuse Bitit ja mitä niillä yleensä ottaen tehdään ja mitä minun pitäisi niillä tehdä?

Käyttämässäni muistikortissa lukee "MAX 2GB MMC Mobile DV RSMMC CARD."

Tiedän kyllä, että tähän projektiin käytettävä koodi on kirjoitettu 1GB MMC-kortille ja olen tehnyt sellaisesta kortista tilauksen, mutta kortin saapumiseen saattaa mennä viikkoja(uskomattoman huono nettikauppa). Silti kuvittelisin ohjelman vain toimivan siten, että 1GB:stä eteenpäin olevaa muistiavaruutta ei ohjelman toimesta ole olemassa.

Käyttämälläni kortilla on tallennettuna 5 kpl Wav-tiedostoja, parametreiltään PCM Unsigned 8 Bit Mono. Kortti formatoitiin ennen tiedostojen siirtoa FAT (default)-toimintoa käyttäen.

Osaan C-kieltä aika hyvin, mutta tiedostonkäsittelyä en tunne, enkä ole koskaan joutunut tutustumaan muistipaikkaosoitteita vaativaan ohjelmointiin. Tunnen osoittimien perusteet, mutta eihän niidenkään käyttö edellytä muistiosoitteiden tuntemista.

Lisäksi koodi on kirjoitettu itselleni täysin tuntemattomalla Bascom-kielellä. En siis pysty muokkaamaan koodia itse, kun en tiedä, mitä se oikeasti tekee.

Kiitos kaikesta avusta.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu