Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 15 lis 2024, o 10:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 7 mar 2021, o 20:31 
Offline
Użytkownik

Dołączył(a): 01 mar 2021
Posty: 28
Pomógł: 2

Witam szanownych forumowiczów !

Mam problem z odczytem karty SD. Karta to SanDisk 16GB SDHC I. Korzystam z biblioteki Petit Fat, już przerobionej przez pana Mirka, pod atmega32. Próbuję zaninicjalizować funkcją Disk_initialize() i zawsze zwraca 1, a przy prawidłowej inicjalizacji powinna zwrócić-0.
Kod zamieszczam poniżej. Wynik inicjalizacji wysyłam przez Uarta na terminal.

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <string.h>
#include <stdlib.h>
#include <util/delay.h>
#include <stdio.h>

#include "PetitFS/diskio.h"
#include "PetitFS/pff.h"
#include "MKUART/mkuart.h"

#define SCK PB7
#define MOSI PB5
#define MISO PB6
#define CS PB4

#define LED_PORT PORTC
#define LED_DIR DDRC
#define LED_DEB_PIN PC7
#define LED_CD_PIN PC6

#define POW_PIN PA1
#define CD_PIN PA0
#define CD_P_PORT PORTA
#define CD_P_DIR DDRA

#define CARD_DETECT (PINA & (1<<CD_PIN))

extern void init_spi(void) {
DDRB |= (1<<CS) | (1<<MOSI) | (1<<SCK);
PORTB |= (1<<CS) | (1<<MISO) | (1<<MOSI);
SPCR |= (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);

}

extern void spi_off(void) {

SPCR &= ~((1<<SPE) | (1<<MSTR));
PORTB &= ~(SCK|MISO|MOSI);

}

void power_off(void) {

CD_P_PORT |= (1<<POW_PIN);
spi_off();
//_delay_ms(500);
}

void power_on(void) {

CD_P_PORT &= ~(1<<POW_PIN);
init_spi();
//_delay_ms(500);
}


int main(void) {

LED_DIR |= (1<<LED_DEB_PIN) | (1<<LED_CD_PIN);
LED_PORT |= (1<<LED_DEB_PIN) | (1<<LED_CD_PIN);

CD_P_DIR |= (1<<POW_PIN);
CD_P_PORT |= (1<<CD_PIN);
CD_P_PORT &= ~(1<<POW_PIN);

init_spi();
USART_Init( __UBRR );
sei();
_delay_ms(100);

uint8_t ires;

while(1) {

if(CARD_DETECT) { //sprawdza czy karta jest włożona
LED_PORT ^= (1<<LED_CD_PIN); // sygnalizacja- dioda miga
_delay_ms(300);

}

else {

power_on();
LED_PORT &= ~(1<<LED_CD_PIN); //DIODA ŚWIECI NA STAŁE

_delay_ms(1000);

ires = disk_initialize(); // inicjalizacja karty SD
_delay_ms(250);
if( ires ) {
uart_puts("initialize ERROR\n\r");
uart_puts("ires = ");
uart_putint(ires,10); uart_puts("\n\n\r");
}
else {
uart_puts(" SD card initialized OK! \n\r");
uart_putint(ires,10); uart_puts("\n\n\r"); }
power_off();
_delay_ms(2000);
}




}

}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2021, o 20:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 491
Lokalizacja: Siedlce
Pomógł: 9

Obrazek


Autor postu otrzymał pochwałę

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2021, o 20:52 
Offline
Użytkownik

Dołączył(a): 01 mar 2021
Posty: 28
Pomógł: 2

Dzięki. Następnym razem będę wiedział



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2021, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2014
Posty: 150
Pomógł: 1

Kiedyś walczyłem kilka dni z jedną kartą, potem z kolejną i kolejną. Dopiero któraś z kolei poprawnie działała z tymi bibliotekami.
Spróbuj wziąć inną kartę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 mar 2021, o 09:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

Uruchamiasz na zeztawie atb 1.04?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 mar 2021, o 10:59 
Offline
Użytkownik

Dołączył(a): 01 mar 2021
Posty: 28
Pomógł: 2

Tak. Mam zestaw ATB 1.04

------------------------ [ Dodano po: 17 minutach ]

ATB 1.04 z gniazdem na karty pamięci. Wszystkie połączenia jeśli chodzi o SPI, mam dobrze. Pin CD mam podłączony do uC. Zasilaniem steruję programowo lub mam zworkę zwartą na stałe. Tak czy tak inicjalizacja nie przechodzi i już nie wiem w czym jeszcze problem...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 mar 2021, o 12:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

To zobacz na to
https://forum.atnel.pl/topic21091.html


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 mar 2021, o 13:34 
Offline
Użytkownik

Dołączył(a): 01 mar 2021
Posty: 28
Pomógł: 2

Spróbuję zrobić ten mostek na scalaku. Może zadziała. Jak coś, to dam znać. Narazie dzięki za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 mar 2021, o 17:26 
Offline
Użytkownik

Dołączył(a): 01 mar 2021
Posty: 28
Pomógł: 2

Zrobiłem ten mostek, zainicjowało kartę może z 10 razy prawidłowo (funkcja zwróciła zero). A później znów to samo, co było, także dalej nie wiem. Ucieszyłem się, bo wcześniej wogule nie inicjalizowało, a teraz te kilka razy było ok.
Nie będę przecież kupować 10 różnych kart... Wydaje mi się, że jeżeli wszystko jest ok, to powinno działać z większością kart.
Nie próbuje też innych funkcji, jeśli inicjalizacja zwraca błąd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 mar 2021, o 19:59 
Offline
Użytkownik

Dołączył(a): 01 mar 2021
Posty: 28
Pomógł: 2

Już wszystko działa !:lol: . Mostek był zbędny ! Wprowadziłem tylko dwa makra, które włączają i wyłączają zasilanie karty i już jest OK! Za każdym razem przechodzi :D . Teraz biorę się za inne funkcje. Dzięki za pomoc i pozdrawiam!
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO