Jag håller på att bygga ihop ett litet sensorsystem hemma som ska ge mig mer eller mindre intressant data (magnetkontakter, temperaturer m.m.). Mikroprocessorerna som jag använder är ATtiny25 och ATtiny85 (beroende på hur mycket minne som behövs). Dessa ska kommunicera över 433MHz-bandet till en Arduino Mega 2560 som är kopplad till servern.
Bootloader till Arduino är inprogrammerad i varje ATtiny och programmeras med en AVR-ISP500. De kör på i 16MHz med extern kristall och har fuses (Low/High/Extended) 0xFF/0xD7/0xFF. VirtualWire (http://www.pjrc.com/teensy/td_libs_VirtualWire.html) används på båda sidor.
EDIT: Mega 2560 kör i 16MHz, därför valde jag en sån kristall till ATtiny:n för att undvika timingproblem. ATtiny:n matas med 5V via en switchad nätadapter.
Nu till problemet då, en ATtiny kan inte kommunicera med min Mega 2560. Den kan dock kommunicera med en annan ATtiny och samma gäller för två Mega 2560. Eftersom jag inte ännu äger ett oscilloskop testade jag att koppla en LED till sändarporten på respektive enhet och jag ser där att ATtiny:n skickar data betydligt långsammare än Megan. Det som tar ett par millisekunder (om ens det) på Megan tar nästan en sekund på ATtiny:n, vilket får mig att misstänka problem med timers eller att den inte går i 16MHz som den ska.
Jag fick ändra två rader i VirtualWire för att få det att kompilera till ATtiny:n
Kod: Markera allt
#ifndef TEST
// Set up timer1 for a tick every 62.50 microseconds
// for 2000 bits per sec
TCCR0A = 0; <--- Ändrade TCCR1A till TCCR0A
TCCR0B = _BV(WGM02) | _BV(CS10); <--- Ändrade TCCR1B till TCCR0B och WGM12 till WGM02[/b]
// Caution: special procedures for setting 16 bit regs
OCR1A = ocr1a;
// Enable interrupt
#ifdef TIMSK1
// atmega168
TIMSK1 |= _BV(OCIE1A);
#else
// others
TIMSK |= _BV(OCIE1A);
#endif
#endif
Kod: Markera allt
attiny85at16.bootloader.low_fuses=0xFF
attiny85at16.bootloader.high_fuses=0xD7
attiny85at16.bootloader.extended_fuses=0xFF
attiny85at16.bootloader.path=empty
attiny85at16.bootloader.file=empty85at8.hex
attiny85at16.bootloader.unlock_bits=0xFF
attiny85at16.bootloader.lock_bits=0xFF
attiny85at16.build.mcu=attiny85
attiny85at16.build.f_cpu=16000000L
attiny85at16.build.core=tiny