Google+ Start   |   E-mail   |   Newsletter:

FatFS_aktualizacja

 Uwaga, do lekcji nr.15 w książce "Mikrokontrolery AVR język C Podstawy programowania" wkradł się drobny ale czasem dający o sobie znać błąd. Polega on na tym, że w kodzie zabrakło podciągania wejścia MISO do VCC. Procesor wprawdzie sam sobie ustawia tę linię jako wejście podczas inicjalizacji sprzętowego modułu SPI, ale nie załącza podciągania licząc na to, że zrobił to projektant sprzętowo, dodając na linii MISO rezystor do VCC. Możemy jednak spokojnie włączyć to podciąganie programowo, co zwalnia nas z dodawania rezystora na zewnątrz. W kodzie źródłowym w pliku main.c i dalej w funkcji main() mamy inicjalizację pinów i modułu SPI, jednak bez podciągania MISO do VCC, jak niżej:

Błędna wersja inicjalizacji:
#define SCK PB7
#define MOSI PB5
#define CS PB4
  
      DDRB |= (1<<CS)|(1<<MOSI)|(1<<SCK);
      PORTB |= (1<<CS);
 
      SPCR |= (1<<SPE)|(1<<MSTR);

Problem polega na tym, że brak tego podciągania powoduje, że czasem kod z przykładu działa a czasem niestety nie. Można go rozwiązać na dwa sposoby.

 

  1. albo dołożyć rezystor 10K pomiędzy linią MISO i VCC
  2. albo zastosować programowe podciąganie jak przedstawione jest to w poprawionym kodzie poniżej 

 

Poprawna wersja inicjalizacji
#define SCK PB7
#define MISO PB6  // definiujemy dodatkowy pin MISO
#define MOSI PB5
#define CS PB4
 
 
      DDRB |= (1<<CS)|(1<<MOSI)|(1<<SCK);
      PORTB |= (1<<CS);
      PORTB |= (1<<MISO); // podciągamy wejcie MISO do VCC
 
      SPCR |= (1<<SPE)|(1<<MSTR);

 

 

ikona Strona główna ikona O nas ikona Wydawnictwo ikona Elektronika ikona Oprogramowanie ikona Kursy ATNEL ikona Nowości ikona SKLEP ikona FORUM ikona Kontakt ikona Polityka Prywatności Cookie

ATNEL Nowoczesne Rozwiązania - programowanie AVR w C | pisanie programów dla AVR | pisanie programów ATmega | pisanie programów dla AVR | programowanie mikrokontrolerów |
mikrokontrolery AVR programowanie | programowanie w C mikrokontrolerów | programowanie ATmega | programy w C AVR
Realizacja: Dpl Agency - Projektowanie Stron Internetowych