logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[stm32] [stm32][keil] Konfiguracja timera i przerwania zewnętrznego na PE0

nasiono 23 Wrz 2011 18:16 2838 6
REKLAMA
  • #1 9956404
    nasiono
    Poziom 17  
    Posty: 355
    Pomógł: 1
    Ocena: 4
    Witam.
    Chciałbym prosić o sprawdzenie kodu.
    Chciałem uzyskać dwie rzeczy mianowicie:
    1. Ustawić tak timer by 100 razy na sekunde wystąpiło przerwanie.
    2. Ustawić przerwanie zewnętrzne od zbocza opadającego na którymś pinie (np. PE0).

    Skonfigurowałem tak peryferia:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    w pliku stm32f10x_it.c :

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    jednak w debugerze nie moge dostać się do obsługi przerwania zewnętrznego program cały czas wykonuje pętle "while".
  • REKLAMA
  • Pomocny post
    #2 9956926
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Skoro nie masz problemu z timerem, to po co w ogóle o nim pisać i po co testować program który ma też przerwania od timera?

    Niemniej jednak na początek brawa za to, że NIE używasz słynnego i popularnego badziewia (;

    Wg mnie (skoro chodzi o pin zerowy), powinieneś konfigurować rejestr AFIO->EXTICR[0], a nie 1. Problemem jest manual niezgrany z plikiem nagłówkowym - w manualu masz opis rejestrów AFIO_EXTICR1 do AFIO_EXTICR4, jednak w nagłówku masz AFIO->EXTICR[0] do AFIO->EXTICR[3], do tego jeszcze definicje bitów mają numerację jak w manualu no i pełny chaos (;

    Nie kombinuj też z priorytetami przerwań bez potrzeby.

    4\/3!!
  • REKLAMA
  • #3 9957167
    nasiono
    Poziom 17  
    Posty: 355
    Pomógł: 1
    Ocena: 4
    Dzięki za odpowiedź rzeczywiście jest coś na rzeczy z tym oznaczeniem pinów.
    Niestety nie moge sobie z tym poradzić. Do pinu PB2 mam podpięty przycisk pociągnięty zewnętrznie do masy.
    Starałem się tak skonfigurować to przerwanie by reagowało na obydwa zbocza. Na razie nie potrzebuje ani timera ani priorytetu przerwań więc wykluczyłem te fragmenty. Niestety procesor nadal milczy.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #4 9957285
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    AFIO->EXTICR[0] |= 0x0001 ;//AFIO_EXTICR1_EXTI2_PB;

    Wartość z której korzystasz nie ma nic wspólnego z komentarzem ani z tym co chcesz osiągnąć. Przyjrzyj się dobrze na których bitach jest konfiguracja EXTI2 i nie kombinuj z ręcznie wpisywanymi wartościami, tylko zastosuj definicje.

    4\/3!!
  • REKLAMA
  • #5 9957296
    nasiono
    Poziom 17  
    Posty: 355
    Pomógł: 1
    Ocena: 4
    W komentarzu dałem definicje której wcześniej próbowałem też bezskutecznie .
    Już po prostu nie mam już pomysłu siedzę i kombinuje.
    Jeśli to możliwe prosze o jakiś przykładowy kod który mógł bym porównać.
    Wiem że błąd tkwi w jakimś małym szczególe ale nie moge go znaleźć.
  • Pomocny post
    #6 9957390
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Nie wiem czy to chciałeś osiągnąć, ale pin masz ustawiony na floating.

    Definicja w komentarzu była dobra, wartość liczbowa - zła.

    Przykłady znajdziesz w wyszukiwarce forum, w ostatnich tygodniach tematów o EXTI było kilka.

    4\/3!!
  • REKLAMA
  • #7 9957460
    nasiono
    Poziom 17  
    Posty: 355
    Pomógł: 1
    Ocena: 4
    Już sobie poradziłem.
    Dziękuje i pozdrawiam.
    Temat zamykam.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik prosił o pomoc w konfiguracji timera i przerwania zewnętrznego na mikrokontrolerze STM32. Chciał uzyskać przerwanie co 10 ms oraz ustawić przerwanie na pinie PE0 reagujące na zbocze opadające. Odpowiedzi wskazywały na problemy z konfiguracją rejestrów, w tym błędne użycie rejestru AFIO->EXTICR. Użytkownik miał również trudności z ustawieniem przerwania na pinie PB2. Po kilku wskazówkach dotyczących poprawnej konfiguracji, użytkownik ostatecznie rozwiązał problem i zamknął temat.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA