Sziasztok!
Az aktuális fejlesztés kapcsán kinőttem az Arduino-UNO panelt. Áttértem az Atmega 128 panelra. A WizNetShield panel fizikailag rádugható, csak más portok vannak a lábakon. Az Ethernet feltétet nem használom. Ezen felül mindent meg tudtam oldani a portok átkonfigurálásával, de egy érdekes hibába futottam.
A WizNetShield-en van egy kiépített SD kártya olvasó. Ezt AVR-DOS-val remekül tudtam használni. Ehhez az SD kártya kezeléshez talált AVR-DOS konfig fájlokat a TAVIR Forumokon talált tanácsok alapján átkonfiguráltam (pl csak 1 file handler legyen, stb.) így futott az UNO panel 328p processzorán is.
Nade...
Váltottam Mega128-ra. Itt másként vannak a portok a panel kivezetéseken leosztva. Mivel SW és nem HW használom az SD kártyát, ezért a portokat átkonfigurálhattam az ATMEGA128 panelnek megfelelően. Látszólag jól is működik. De csak látszólag. A hibajelenség a következő:
1 lefut jól az SD használat inicializálás
2 Megpróbálok megnyitni egy adott nevű fájlt. Ha nincs létrehozom
3 beleírok a fájlba 108 byte információ fejrész adatot, majd lezárom
4 az első mérési ciklus végén ismét megnyitom a fájlt, hogy beleírjam az adatokat (kb 90 byte adat)
Itt a megnyitás parancs után kapok 227-es hibakódot
Const Cperrdrivereadcommand = 227 ' Error response Byte at Read Command
Az SD kártyán pedig rajta van a fájl és benne van az elsőként beírt 108 byte fejléc sor.
Az SD kártya korábban is, most is FAT32 és 4096 sector méretre van formázva. A kárty 2G méretű.
Ha valaki találkozott hasonlóval kérem adjon tanácsot. Ha segít a kód majd azt is felteszem.
Köszönöm,
Ákos
Arduino UNO-ról WizNetshield ATMEGA128-ra
Szia Róbert!
Már megírtam a válaszom arról, hogy köszönöm az ötleteket, de nem segített egyik sem, amikor eszembe jutott valami és utána néztem
Sajnos megint az emberi tényező volt a gond. A gép mindig azt csinálja amire utasítod és nem azt, amire gondolsz.
A MEGA panelre való átkonfiguráláskor változott, hogy melyik portra kerülnek a konfig szerint az SD funkciók. Az konfigban meghatározott egyik port egy olyan port lett, amire egyébként egy teszt LED-em is rá volt konfigurálva. Ezt már rég nem használom, de a kódból nem vettem ki. És benne maradt, hogy mérési ciklus indításakor ezt a LED-et (port-ot) bekapcsolom, majd ciklus végén ki. Ez pont a Mmc_portsck portja volt.
Szóval köszönöm az ötleteket. Két tanulság is van, amit akár az Arduino tanfolyamra is ajánlok:
1-A kódot mindig tartsd tisztán. Amit nem használsz, azt vedd ki belőle.
2-A gép azt csinálja amit parancsba kap és nem azt, amire a programozó gondol.
Jó a tanfolyam!
Ákos
Már megírtam a válaszom arról, hogy köszönöm az ötleteket, de nem segített egyik sem, amikor eszembe jutott valami és utána néztem
Sajnos megint az emberi tényező volt a gond. A gép mindig azt csinálja amire utasítod és nem azt, amire gondolsz.
A MEGA panelre való átkonfiguráláskor változott, hogy melyik portra kerülnek a konfig szerint az SD funkciók. Az konfigban meghatározott egyik port egy olyan port lett, amire egyébként egy teszt LED-em is rá volt konfigurálva. Ezt már rég nem használom, de a kódból nem vettem ki. És benne maradt, hogy mérési ciklus indításakor ezt a LED-et (port-ot) bekapcsolom, majd ciklus végén ki. Ez pont a Mmc_portsck portja volt.
Szóval köszönöm az ötleteket. Két tanulság is van, amit akár az Arduino tanfolyamra is ajánlok:
1-A kódot mindig tartsd tisztán. Amit nem használsz, azt vedd ki belőle.
2-A gép azt csinálja amit parancsba kap és nem azt, amire a programozó gondol.
Jó a tanfolyam!
Ákos