Kõigepealt infoks nii palju, et eelnevad praktilised kokkupuuted mikroprotsessoritega puuduvad. Osalt seetõttu võib ka teema pealkiri olla liiga üldine.
Probleemi kirjeldus.
Kasutada olevat ATmega8-t saan nii programmeerida kui ka sealt programmi lugeda, kuid ostsillograafi põhjal otsustades seade ei tundu "töötavat".
Programmi kood:
.include "m8def.inc"
.def Temp = R16
.org 0x0000
rjmp RESET
RESET:
ldi Temp, 0xFF
out DDRB, Temp
Loop:
out PORTB, Temp
dec Temp
rjmp Loop
Koodi päritoluaadressi antud hetkel meenutada ei suuda, kuid tegu oli spetsiaalselt algajaile suunatud lehega ning iga käsk oli kommenteeritud. Antud juhul siis tegemist programmiga, mis järjest lahutab olemasolevast arvust 1 ning väljastab selle ka koibadele.
Ise kasutasin PB0...7 asemel PD0...7, kuna viikudega PB6 ja PB7 on ühendatud kvarts. Koodis on muudetud seega:
out DDRB, Temp --> out DDRD, Temp
out PORTB, Temp --> out PORTD, Temp
Programmi koostamiseks kasutasin AVR Studiot (töö simuleerimine näitas, et programm töötab vastavalt kirjeldusele) ning programmaatori puudumisel tuli kasutada lisaks veel PonyProg2000-t. Probleem ilmnes hetkest, kui otsustasin ostsillograafiga kontrollida, kas mingisugust pingemuutust vastavatel koibadel ka märgata on pärast seda, kui programmeerimiseks kasutatud otsad lahti ühendatud ning RESET-le hetkeks 0-nivoo antud (vastavalt datasheedile peaks see kivi "tööle panema"). Ei olnud.
Ostsillograafi piiriks on kuni 0,05 us ekraanijaotise kohta, mis peaks piisav olema. Programmeerimise ja programmi lugemise ajal on pingemuutus viikudel SCK, MISO ja MOSI ekraanil tuvastatav.
http://www.album.ee/?o=316987726
Antud aadressilt on kättesaadav skeem, millega ma tööd kontrollisin (jooniselt puuduvad viigud PD0...7, mida sai ostsillograafiga kontrollitud, samuti ülejäänud, mis minu arusaamist mööda ei tohiks asjasse puutuda; lüliti on kujuteldav ja koosneb juhtmejupist, millega puutun hetkeks RESET-viiku – iseennistumise märk oleks muidugi kohane olnud).
Kahjuks on senised kogemused ainult analoogtehnika vallast, mille tõttu ei oska enam midagi proovida.
Küsimused siis alljärgnevad.
1. Ega töö kontrolli meetod puudulik ei ole?
2. Kas mõni tööks vajalik ühendus vms on puudu? Võib-olla tõesti on midagi kahe silma vahele jäänud, kuna selle programmeerimisega olen jamanud juba tükk aega muude (analoog)projektide kõrvalt (programmaatori puudumise tõttu jäi ainult AVR Studiost väheseks, siis sai proovitud igasuguste draiveritega paralleelpordile ligi pääseda, lõpuks PonyProg tõmmatud ning siis tuli veel lahendada ühilduvuse probleem poodi mineku ning sobiliku kivi ostmisega) ja see pidev uurimine-juurdeõppimine-unustamine-proovimine muudab teadmised suhteliselt kaootiliseks.
Probleemi kirjeldus.
Kasutada olevat ATmega8-t saan nii programmeerida kui ka sealt programmi lugeda, kuid ostsillograafi põhjal otsustades seade ei tundu "töötavat".
Programmi kood:
.include "m8def.inc"
.def Temp = R16
.org 0x0000
rjmp RESET
RESET:
ldi Temp, 0xFF
out DDRB, Temp
Loop:
out PORTB, Temp
dec Temp
rjmp Loop
Koodi päritoluaadressi antud hetkel meenutada ei suuda, kuid tegu oli spetsiaalselt algajaile suunatud lehega ning iga käsk oli kommenteeritud. Antud juhul siis tegemist programmiga, mis järjest lahutab olemasolevast arvust 1 ning väljastab selle ka koibadele.
Ise kasutasin PB0...7 asemel PD0...7, kuna viikudega PB6 ja PB7 on ühendatud kvarts. Koodis on muudetud seega:
out DDRB, Temp --> out DDRD, Temp
out PORTB, Temp --> out PORTD, Temp
Programmi koostamiseks kasutasin AVR Studiot (töö simuleerimine näitas, et programm töötab vastavalt kirjeldusele) ning programmaatori puudumisel tuli kasutada lisaks veel PonyProg2000-t. Probleem ilmnes hetkest, kui otsustasin ostsillograafiga kontrollida, kas mingisugust pingemuutust vastavatel koibadel ka märgata on pärast seda, kui programmeerimiseks kasutatud otsad lahti ühendatud ning RESET-le hetkeks 0-nivoo antud (vastavalt datasheedile peaks see kivi "tööle panema"). Ei olnud.
Ostsillograafi piiriks on kuni 0,05 us ekraanijaotise kohta, mis peaks piisav olema. Programmeerimise ja programmi lugemise ajal on pingemuutus viikudel SCK, MISO ja MOSI ekraanil tuvastatav.
http://www.album.ee/?o=316987726
Antud aadressilt on kättesaadav skeem, millega ma tööd kontrollisin (jooniselt puuduvad viigud PD0...7, mida sai ostsillograafiga kontrollitud, samuti ülejäänud, mis minu arusaamist mööda ei tohiks asjasse puutuda; lüliti on kujuteldav ja koosneb juhtmejupist, millega puutun hetkeks RESET-viiku – iseennistumise märk oleks muidugi kohane olnud).
Kahjuks on senised kogemused ainult analoogtehnika vallast, mille tõttu ei oska enam midagi proovida.
Küsimused siis alljärgnevad.
1. Ega töö kontrolli meetod puudulik ei ole?
2. Kas mõni tööks vajalik ühendus vms on puudu? Võib-olla tõesti on midagi kahe silma vahele jäänud, kuna selle programmeerimisega olen jamanud juba tükk aega muude (analoog)projektide kõrvalt (programmaatori puudumise tõttu jäi ainult AVR Studiost väheseks, siis sai proovitud igasuguste draiveritega paralleelpordile ligi pääseda, lõpuks PonyProg tõmmatud ning siis tuli veel lahendada ühilduvuse probleem poodi mineku ning sobiliku kivi ostmisega) ja see pidev uurimine-juurdeõppimine-unustamine-proovimine muudab teadmised suhteliselt kaootiliseks.
Comment