Mcucpp

Форк
0
72 строки · 1.2 Кб
1
#include <avr/io.h>
2
#include <spi.h>
3
#include <tiny_ostream.h>
4
#include <format_parser.h>
5
#include <usart.h>
6
#include <drivers/Rfm70.h>
7

8
using namespace Mcucpp;
9
using namespace Mcucpp::IO;
10

11
typedef Rfm70<Spi, Pc4, Pc5, Pc0> transceiver;
12

13
typedef Usart<16, 16> MyUsart;
14

15
ISR(USART_RXC_vect)
16
{
17
	MyUsart::RxHandler();
18
}
19

20
ISR(USART_UDRE_vect)
21
{
22
	MyUsart::TxHandler();
23
}
24

25
template<class Src>
26
class MyStream
27
{
28
    public:
29
    void put(char c)
30
    {
31
    	if(c == '\n')
32
			Src::Putch('\r');
33
        Src::Putch(c);
34
    }
35

36
    void write(const char *ptr, size_t size)
37
    {
38
        for(size_t i=0; i<size; i++)
39
            put(ptr[i]);
40
    }
41
};
42

43
typedef basic_ostream<MyStream<MyUsart> > Output;
44
Output out;
45

46

47
uint16_t temp;
48

49
__attribute__((OS_main))
50
int main()
51
{
52
	MyUsart::Init(19200);
53
	Spi::Init(Spi::Div16);
54

55
	sei();
56

57
	out << "Rfm70 module at AtMega16\n";
58
	transceiver::Init();
59
	transceiver::SetRfChannel(10);
60
	transceiver::SwitchToRxMode();
61
	
62
	//Transiver2::DumpRegs(out);
63

64
	transceiver::SetRxAddress<0>(0x3456789a, 0x12);
65

66
	while(1)
67
	{
68
		if(transceiver::Recive(&temp))
69
			out % Format("Temp = % C\n") % temp;
70
		delay_ms<100, F_CPU>();
71
	}
72
}
73

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.