Nefungující SPI na ATM128A – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nefungující SPI na ATM128A – Mikrokontroléry – Fórum – Programujte.comNefungující SPI na ATM128A – Mikrokontroléry – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
yaqwsx+9
Posthunter
26. 8. 2011   #1
-
0
-

Jsem už zoufalý. Snažím se rozchodit SPI komunikaci na ATMega128. Dokonce jsem zkoušel i cizí kód, ale také nefungoval. Svůj program jsme postupně zjednodušoval až jsem se dostal na:

#include <avr/io.h>

int main()
{
	DDRB = 0xFF;
	SPCR = (1 << SPE);
	while(1)
	{
		SPDR = 125;
 		while (!(SPSR & (1<<SPIF)));
	}
	return 0;
}

Po spuštění programu jsem procesor proměřoval osciloskopem - nejedou ani hodiny, ani data na datovém pinu.

Co dělám špatně? Kde můžu mít chybu?

Nahlásit jako SPAM
IP: 85.160.80.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
yaqwsx+9
Posthunter
26. 8. 2011   #2
-
0
-

Ještě doplním, že jsem všechno zkoušel v překladačích AVRStudia 5 a WinAVR. Jako programátor používám USBAsp.

Nahlásit jako SPAM
IP: 85.160.80.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
yaqwsx+9
Posthunter
26. 8. 2011   #3
-
0
-

Dokonce ani ASM kód nefunguje (je převzatý z datasheetu)

.INCLUDE "m128adef.inc"

; Set MOSI and SCK output, all others input
ldi	r17,(1<<DDB2)|(1<<DDB1)
out	DDRB,r17
; Enable SPI, Master, set clock rate fck/16
ldi	r17,(1<<SPE)|(1<<MSTR)|(1<<SPR0)
out	SPCR,r17
Start:
out	SPDR,r16
Wait_Transmit:
; Wait for transmiss
sbis	SPSR,SPIF
rjmp	Wait_Transmit
rjmp	start
Nahlásit jako SPAM
IP: 85.160.80.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
AB10
Duch
30. 8. 2011   #4
-
0
-

Pin SS má být nastavený jako výstup, i když se nepoužije.

Nahlásit jako SPAM
IP: 217.115.249.–
KIIV
~ Moderátor
+43
God of flame
30. 8. 2011   #5
-
0
-

#4 AB1
on uz to vyresil na avrfreaks.net ... tusim ze to byl nejaky problem s linkovanim libky pro nokia display

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Řešení
yaqwsx+9
Posthunter
30. 8. 2011   #6
-
0
-
Vyřešeno Nejlepší odpověď

Ano, vyřešil jsem to na AVRFreaks, tady jsme zapomněl napsat řešení. Celý problém způsobovala knihovna pro LCD z Nokie 3310 v kombinaci s AVR Studiem 5 - to se s ní nějak nedokázalo poprat a ve výsledku vznikl kód, který uvízl v nekonečné smyčce.

Stále jsem sice nepřišel na to, jak to odstranit, ale už jsme to neřešil a napsal si pár svých funkcí na obsluhu displaye.

PS: Navíc ty kód zde uvedené mají chybky - když jem to sem psal, tak jsem se přehlédl...

Nahlásit jako SPAM
IP: 85.160.65.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý