-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
OSTED!not-for-mail
From: badworm <n...@p...pl>
Newsgroups: pl.misc.elektronika
Subject: Re: zamulający program na AVR
Date: Thu, 7 Apr 2016 17:37:01 +0200
Organization: ATMAN - ATM S.A.
Lines: 62
Message-ID: <g...@b...pl>
References: <p...@b...pl>
<57067701$0$22840$65785112@news.neostrada.pl>
NNTP-Posting-Host: ip-5-172-247-213.free.aero2.net.pl
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-2"
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1460043487 3917 5.172.247.213 (7 Apr 2016 15:38:07 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Thu, 7 Apr 2016 15:38:07 +0000 (UTC)
User-Agent: 40tude_Dialog/2.0.15.1pl Hamster/2.0.0.1
Xref: news-archive.icm.edu.pl pl.misc.elektronika:698012
[ ukryj nagłówki ]Dnia Thu, 7 Apr 2016 17:04:31 +0200, szod napisał(a):
> To sprawdź ustawienia bitów konfiguracyjnych uC - na jakim oscylatorze
> pracuje.
Kompilator do fusebitów raczej dostępu nie ma. Przed chwilą porównałem
prędkość zegara I2C dla wsadów z obu kompilatorów. Różnica jest
kolosalna - dla nowego GCC to zaledwie 5kHz, dla starego ponad 80kHz.
Kod generujący opóźnienia dla tej magistrali wygląda tak:
#include <avr\io.h>
#include <inttypes.h>
#include "harddef.h"
#include "makra.h"
#include "i2c.h"
// Wyliczenie czasu opóźnienia połówkowego i ćwiartkowego (cykle)
#define I2C_nhalf (F_CPU/I2C_SPEED/2)
// Funkcja dłuższych opóźnień
#if I2C_nhalf < 3
// Nic
#elif I2C_nhalf < 8
static void i2c_xdelay(void)
{
NOP();
}
#else
#define I2C_delayloops (1+(I2C_nhalf-8)/3)
#if I2C_delayloops > 255
#error Przyspiesz - bo sie nie wyrabiam ;)
#endif
static void i2c_xdelay(void)
{
asm volatile( \
"delayus8_loop%=: \n\t"\
"dec %[ticks] \n\t"\
"brne delayus8_loop%= \n\t"\
: :[ticks]"r"(I2C_delayloops) );
}
#endif //I2C_nhalf >= 3
// Opóźnienia dla I2C
static inline void i2c_hdelay(void)
{
#if I2C_nhalf < 1
return; // To jest funkcja inline, jeśli składa się tylko z "return"
jest usuwana podczas optymalizacji
#elif I2C_nhalf < 2
NOP();
#elif I2C_nhalf < 3
asm volatile(
"rjmp exit%=\n\t"
"exit%=:\n\t"::);
#else
i2c_xdelay();
#endif
}
--
Pozdrawiam Bad Worm badworm[maupa]post{kropek}pl
GG#2400455 ICQ#320399066
Następne wpisy z tego wątku
- 07.04.16 18:12 Grzegorz Kurczyk
- 07.04.16 19:01 badworm
- 07.04.16 20:02 AlexY
- 08.04.16 08:58 wchpikus
- 08.04.16 12:51 AlexY
- 08.04.16 15:51 Grzegorz Niemirowski
- 08.04.16 16:53 Marek
- 08.04.16 18:07 platformowe głupki
- 08.04.16 18:12 Grzegorz Niemirowski
- 08.04.16 18:19 platformowe głupki
- 08.04.16 18:31 Grzegorz Niemirowski
- 08.04.16 18:35 platformowe głupki
- 08.04.16 18:37 platformowe głupki
- 08.04.16 21:28 badworm
- 09.04.16 00:26 Grzegorz Niemirowski
Najnowsze wątki z tej grupy
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
- jak szybko plynie prad
- Płytki Milkv-Duo
- Światłowód między budynkami
- POtrzebny bufor 3.3<>5V, jedonkieruowy, trójstanowy, wąski
- retro
- Bezprzewodowe polączenie Windows z projektorem
- rozklejanie obudowy
- Prośba o identyfikację komponentu
- Smart gniazdko straciło na zasięgu wifi?
Najnowsze wątki
- 2024-11-14 Gliwice => Network Systems Administrator (IT Expert) <=
- 2024-11-14 Gliwice => Administrator Systemów Sieciowych (Ekspert IT) <=
- 2024-11-13 Filtr do pompy ruskiej
- 2024-11-12 Gdzie kosz?
- 2024-11-13 elektrycznie
- 2024-11-12 Jebane kurwa, kurwy.
- 2024-11-13 karta parkingowa
- 2024-11-13 Wl/Wyl (On/Off) bialy/niebieski
- 2024-11-12 I3C
- 2024-11-13 Kraków => DevOps Engineer (Junior or Regular level) <=
- 2024-11-13 Łódź => Senior SAP HANA Developer <=
- 2024-11-13 Zabrze => Senior PHP Symfony Developer <=
- 2024-11-13 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-13 Kraków => QA Inżynier <=
- 2024-11-13 Żerniki => Dyspozytor Międzynarodowy <=