This shows you the differences between two versions of the page.
|
pm:lab:lab5-2023-2024 [2025/04/08 08:04] andrei.batasev old revision restored (2025/04/07 10:39) |
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.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. | ||