This shows you the differences between two versions of the page.
pm:lab:lab5-2023-2024 [2025/04/08 09:49] andrei.batasev [6. Exerciții] |
pm:lab:lab5-2023-2024 [2025/04/08 18:06] (current) andrei.batasev [6. Exerciții] |
||
---|---|---|---|
Line 90: | Line 90: | ||
FRESULT pf_readdir (DIR*, FILINFO*); // Citește un director | FRESULT pf_readdir (DIR*, FILINFO*); // Citește un director | ||
</file> | </file> | ||
+ | |||
+ | <note tip> Atunci când folosești pf_write pentru a scrie date, este necesar să apelezi și <file c>pf_write(NULL, 0, &w)</file> ca să finalizezi scrierea (flush). | ||
+ | |||
+ | Dacă nu faci acest pas, citirile ulterioare pot eșua cu o eroare de tip disk error. </note> | ||
===== 6. Exerciții ===== | ===== 6. Exerciții ===== | ||
- | {{ pm:lab:lab5_skel_2025-3.zip | Lab5_Skel }} | + | <hidden> |
+ | Inițializare SD-Card | ||
+ | |||
+ | Pentru a putea inițializa cardul SD, trebuie urmați următorii pași: | ||
+ | |||
+ | - Formatați cardul SD folosind sistemul de fișiere **FAT32** | ||
+ | - Creați un fișier numit **log.csv** în rădăcina (root) sistemului de fișiere | ||
+ | ({{ pm:lab:log.txt | exemplu de fișier }} – redenumiți-l în **log.csv**!) | ||
+ | |||
+ | <note tip> | ||
+ | Fișierul trebuie să aibă deja o dimensiune suficient de mare, deoarece din PFF (Petit FAT FileSystem) **nu se poate face append** direct într-un fișier gol sau de dimensiune mică. | ||
+ | </note> | ||
+ | |||
+ | </hidden> | ||
+ | {{ pm:lab:lab5_skel_2025-4.zip | Lab5_Skel }} | ||
1. SPI Control (2p total) | 1. SPI Control (2p total) | ||
Line 117: | Line 135: | ||
Configurați ADC-ul și citiți temperatura de la un senzor analog. Implementați adc_init() și adc_read(). | Configurați ADC-ul și citiți temperatura de la un senzor analog. Implementați adc_init() și adc_read(). | ||
* Referință AVcc, prescaler 8. | * Referință AVcc, prescaler 8. | ||
- | * Convertiți valoarea ADC în tensiune, apoi în °C (ex: LM35). | + | * Convertiți valoarea ADC în tensiune, apoi în °C (ex: LM35D). |
* Afișați temperatura pe LCD. | * Afișați temperatura pe LCD. | ||
* Verificați citirea temperaturii și prin USART. | * Verificați citirea temperaturii și prin USART. | ||
Line 123: | Line 141: | ||
4. Logarea temperaturii pe cardul SD (2p) | 4. Logarea temperaturii pe cardul SD (2p) | ||
<note tip> Tineti cont ca nu puteti crea sau mari size-ul unui fisier folosind PFF, asa ca va trebui sa va incadrati in marimea fisierului deja existent pe sdcard </note> | <note tip> Tineti cont ca nu puteti crea sau mari size-ul unui fisier folosind PFF, asa ca va trebui sa va incadrati in marimea fisierului deja existent pe sdcard </note> | ||
- | Implementați log_temperature() în lab5.c astfel încât să logați valorile citite de la senzor într-un fișier CSV. | + | Implementați init_log_display() și log_temperature() în lab5.c astfel încât să logați valorile citite de la senzor într-un fișier CSV. |
* Folosiți SD_log_data() pentru scrierea valorilor. | * Folosiți SD_log_data() pentru scrierea valorilor. | ||
* Afișați temperatura pe LCD și trimiteți-o prin USART. | * Afișați temperatura pe LCD și trimiteți-o prin USART. | ||
Line 130: | Line 148: | ||
5. Navigarea prin loguri (2p total) | 5. Navigarea prin loguri (2p total) | ||
- | Implementați init_log_display() și next_log_entry() pentru a citi fișierul log.csv linie cu linie. | + | Implementați next_log_entry() pentru a citi fișierul log.csv linie cu linie. |
* Afișați fiecare linie pe LCD. | * Afișați fiecare linie pe LCD. | ||
* La apăsarea butonului PB2, treceți la următoarea linie. | * La apăsarea butonului PB2, treceți la următoarea linie. |