Skocz do zawartości

ziober

Użytkownicy
  • Zawartość

    60
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O ziober

  • Ranga
    4/10
  • Urodziny 03.07.1992

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Tarnów
  • Zainteresowania
    Elektronika, technika, informatyka
  1. Hej, mam problem z przerwaniem od USART1 na procesorze STM32F407VET6. Zamiast obsługi przerwania procesor się "zawiesza", czyli pewnie wskakuje do jakiegoś while(1), natomiast nie mam pojęcia gdzie i dlaczego, bo wydaje mi się że wszystko jest skonfigurowane poprawnie (przykładowe programy posprawdzane po kilka razy). Na oscyloskopie widać, że kanał TX działa poprawnie (nie wykorzystuje przerwania przy nadawaniu), oraz ze otrzymuję dane na kanale RX. void init_USART1(void){ /* This is a concept that has to do with the libraries provided by ST * to make development easier the have made up something similar to * classes, called TypeDefs, which actually just define the common * parameters that every peripheral needs to work correctly * * They make our life easier because we don't have to mess around with * the low level stuff of setting bits in the correct registers */ GPIO_InitTypeDef GPIO_InitStruct; // this is for the GPIO pins used as TX and RX USART_InitTypeDef USART_InitStruct; // this is for the USART1 initilization NVIC_InitTypeDef NVIC_InitStructure; // this is used to configure the NVIC (nested vector interrupt controller) /* enable APB2 peripheral clock for USART1 * note that only USART1 and USART6 are connected to APB2 * the other USARTs are connected to APB1 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* enable the peripheral clock for the pins used by * USART1, PB6 for TX and PB7 for RX */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /* This sequence sets up the TX and RX pins * so they work correctly with the USART1 peripheral */ GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; // Pins 6 (TX) and 7 (RX) are used GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; // the pins are configured as alternate function so the USART peripheral has access to them GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // this defines the IO speed and has nothing to do with the baudrate! GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // this defines the output type as push pull mode (as opposed to open drain) GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; // this activates the pullup resistors on the IO pins GPIO_Init(GPIOA, &GPIO_InitStruct); // now all the values are passed to the GPIO_Init() function which sets the GPIO registers /* The RX and TX pins are now connected to their AF * so that the USART1 can take over control of the * pins */ GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); // GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); /* Now the USART_InitStruct is used to define the * properties of USART1 */ USART_InitStruct.USART_BaudRate = 115200; // the baudrate is set to the value we passed into this init function USART_InitStruct.USART_WordLength = USART_WordLength_8b;// we want the data frame size to be 8 bits (standard) USART_InitStruct.USART_StopBits = USART_StopBits_1; // we want 1 stop bit (standard) USART_InitStruct.USART_Parity = USART_Parity_No; // we don't want a parity bit (standard) USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // we don't want flow control (standard) USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; // we want to enable the transmitter and the receiver USART_Init(USART1, &USART_InitStruct); // again all the properties are passed to the USART_Init function which takes care of all the bit setting /* Here the USART1 receive interrupt is enabled * and the interrupt controller is configured * to jump to the USART1_IRQHandler() function * if the USART1 receive interrupt occurs */ // enable the USART1 receive interrupt USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // enable the USART1 receive interrupt NVIC_InitStructure.NVIC_IRQChannel = 37; // we want to configure the USART1 interrupts NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;// this sets the priority group of the USART1 interrupts NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // this sets the subpriority inside the group NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // the USART1 interrupts are globally enabled NVIC_Init(&NVIC_InitStructure); // the properties are passed to the NVIC_Init function which takes care of the low level stuff // finally this enables the complete USART1 peripheral USART_Cmd(USART1, ENABLE); //ESP8266 PD and RST pins GPIO_InitTypeDef gpio2; GPIO_StructInit(&gpio2); gpio2.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12; gpio2.GPIO_Mode = GPIO_Mode_OUT; gpio2.GPIO_OType = GPIO_OType_PP; gpio2.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOA, &gpio2); GPIO_SetBits(GPIOA, GPIO_Pin_11); GPIO_SetBits(GPIOA, GPIO_Pin_12); } void USART_puts(USART_TypeDef* USARTx, volatile char *s){ while(*s){ SetLed(SLED2); // wait until data register is empty while( !(USARTx->SR & 0x00000040) ); USART_SendData(USARTx, *s); *s++; ResetLed(SLED2); } } void USART1_IRQHandler(void){ SetLed(SLED3); // check if the USART1 receive interrupt flag was set if( USART_GetITStatus(USART1, USART_IT_RXNE) ){ static uint8_t cnt = 0; // this counter is used to determine the string length char t = USART1->DR; // the character from the USART1 data register is saved in t /* check if the received character is not the LF character (used to determine end of string) * or the if the maximum string length has been been reached */ if( (t != '\n') && (cnt < MAX_STRLEN) ){ received_string[cnt] = t; cnt++; } else{ // otherwise reset the character counter and print the received string //cnt = 0; //USART_puts(USART1, received_string); } } } // Dodane Z tego co udało mi się jeszcze zbadać, procek się zawiesza, bo wskakuje do HardFault_Handlera, nie wskakuje natomiast ani razu do USART1_IRQHandler, ponieważ miałbym wtedy zapaloną diodkę.
  2. Posiada może ktoś bibliotekę do Eagle do tych złącz?
  3. i potem znów im go odesłać za 20zł i potem jeszcze raz? Pozatym wyraźnie im napisałem, że chce aby wymienili ogniwo lub cały pakiet. Z debilami sie nie dogada.
  4. Pakiet wrócił... szkoda, tylko że dokładnie ten sam... stało się tak jak napisał dondu. "Wspaniałomyślny" sklep modelarnia.pl zrobił mi zajebiście wielką łaskę, że raczył mi naładować akumulator, jakbym nie miał sam ładowarki... Brak mi słów do takich ludzi... Jak ktoś będzie u nich kupował (co raczej odradzam) lub próbował załatwić jakieś inne sprawy to lepiej niech zadzwoni, bo na kontakt e-mailowy liczyć nie można. No cóż, podsumowując bardzo zawiodłem się na sklepie modelarnia.pl i raczej odradzałbym Wam zakupy właśnie u nich, przynajmniej pakietów. Może zrobilibyśmy jakiś ranking sklepów gdzie kupować żeby nie było znów tak, że sklep będzie wciskał komuś jakiś wadliwy towar...
  5. Przejrzałem co nieco z tego co podesłał kolega, ale nie znalazłem nic co by dotyczyło mojego problemu W jakim programie mógłbym to ew. poprawić ręcznie?
  6. Co do pakietu to w chwili obecnej wygląda on tak: Będę wysyłał go paczką, myślę, że jak owinę jeszcze jego opakowanie folią bąbelkową to nic się nie powinno stać.
  7. Mam jeszcze tylko takie pytanie czym i jak to odesłać? Nigdy wcześniej nie nadawałem paczki. Na stroniee poczty znalazłem takie coś: "Minimalne wymiary paczki pocztowej wynoszą 90 x 140 mm a dla paczki pocztowej PLUS wynoszą 15 cm x 20 cm, natomiast maksymalne są sumą długości i największego obwodu mierzonego w innym kierunku niż długość i nie mogą przekraczać 3.000 mm (300 cm), przy czym największy wymiar nie może przekroczyć 1.500 mm (150 cm)." A opakowanie pakietu ma 5 x 5 x 12cm, muszę to dać do większego pudełka i wsadzić jakieś wkłady kartonowe?
  8. Dzwoniłem dziś do nich i powiedzieli mi, że jeśli pakiet nie był ładowany i jest na nim ich plomba gwarancyjna to mam go odesłać oni go obejrzą i jesli faktycznie stwierdzą wadę to dostane nowy pakiecik
  9. Witam, ostatnio nagryzmoliłem sobie projekt ramy do robota w Inventorze (2012). Wszystko jest fajnie, tylko, że podczas eksportu do *.dwg zamiast wszelkich zaokrągleń czy otworów pojawiają się wielokąty (fachowo to się chyba nazywa polilinie). Jak to mam eksportować z *.ipt, żeby było tak jak ma być? (Do tej pory robiłem tak, że otwierałem plik z częścią a następnie klikałem na export -> dwg i zapisywanie jako AutoCad DWG Files).
  10. A w przypadku ew. zwrotu towaru mogę zwrócić sam pakiet z rachunkiem czy muszę wszystko naraz (kupowałem kilka rzeczy)?
  11. Tak racja, dziękuję, że mi o tym przypomniałeś. Jednak dotyczy to produktów w stanie "niezmienionym" czyli równie wtedy dalej mogą się upierać, że to ja go zepsułem. Eh.. coś czuję, że 60zł poszło się walić...
  12. Dlaczego nie mógłbym go reklamować, skoro dopiero dziś do mnie dotarł? Nie ładowałem go ani nie "rozładowywałem" niczym innym niż woltomierzem, sklep aż tak by sobie "w bolo" poleciał? Tym bardziej, że opakowanie akumulatora było otwarte, więc pewnie go "sprawdzali". Dopisane: Moja ładowarka to E_sky 000152, więc będą ładowane prądem 0,8A, z tym, że na opakowaniu pisze, że ładowanie nie rozpocznie się jeśli napięcie baterii jest niższe niż 1.25V, więc skoro mowa o całej baterii to może ruszy... Na razie nie próbuje, jutro się z nimi dogadam co mam robić, bo dziś już nieroby nie pracują
  13. Witam wszystkich, mam pewien problem odnośnie Li-Pol, dokładnie takeigo samego jak ten. Akumulatorek jest nowy, póki co kompletuje części więc nawet nie mam go jak użyć, ale po zmierzeniu napięcia okazało się, że pakiet który ma mieć 7,4V ma ledwo co ponad 4,8V. Po zmierzeniu napięcia na wtyczce balansera okazało się, ze jedna cela ma ok 3,8V a druga... 1,1V! Więc pytanie jak w tytule - dostałem wadliwy towar, czy to jest normalne w nowych akumulatorach?
  14. Hej, mam taki problem, że ucze się jeżyka C w poradnika Pana Teodora Otulaka, niestety dioda zamiast zapalać się i gasnąć co 1s zapala się i gasi co około 5s... Zmieniałem fusebity na zewnętrzny kwarc (lfuse: 0xEC, hfuse: 0x99), więc mógłby mi ktos powiedzieć co tu jeszcze schrzaniłem? #include <avr/io.h> // trzebabyło zdefiniować bo to jzu nie jest obsługiwane #define sbi(add,bit) add |= _BV(bit); #define cbi(add,bit) add &= ~_BV(bit); /****************************************************** Definicje stałych *******************************************************/ #define F_CPU 4000000L /* 4MHz zegar procesora, zmieniałem, normalnie było wpisane dla 1 */ #define CYCLES_PER_US ((F_CPU+500000)/1000000) /* cpu cycles per microsecond */ /************************************************************** Koniec definicji stałych **************************************************************/ //definiujemy stany portu sterującego diodą LED #define LED_ON sbi(DDRB,PB1);sbi(PORTB,PB1) #define LED_OFF sbi(DDRB,PB1);cbi(PORTB,PB1) // Piszemy procedury opóźnienia czasowego void delay(unsigned int us) { unsigned int delay_loops; register unsigned int i; delay_loops = (us+3)/5*CYCLES_PER_US; // +3 for rounding up (dirty) for (i=0; i < delay_loops; i++) {}; } void delayms(unsigned int ms) { unsigned int i; for (i=0;i<ms;i++) { delay(999); asm volatile ( "WDR"::); } } int main (void) { for (;;) { LED_ON; delayms(1000); LED_OFF; delayms(1000); } return (0); }
  15. to ma być coś takiego jak na tym schemacie do połączenia elementów D2,D3,C3? Schemacik [ Dodano: 25 Sie 08 03:34 ] namalowałem coś takiego... działa, ale możecie mi powiedzieć czy coś jest w nim źle i jak dodać regulacje czułości?
×
×
  • Utwórz nowe...