Jag använde USART:en i ett tidigare projekt, och där funkar den kalas. Precis som det sig bör.
Nu i det nya projektet vill jag spara lite tid, så jag kopierade in serial.[ch] från det gamla projektet in i det nya.
Eftersom det enda jag gör i serial.c är att konfigurera USARTen så kompilerade det fint utan problem... Men funkar gör det inte!
Har kopplat upp scopemetern, och där ser jag att bitlängderna är fantastiskt mycket längre (helt enormt, 20ms långa!!).
serial.c:
Kod: Markera allt
#include <avr/io.h>
#include <avr/delay.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
/* Initialize USART (9600-8N1) */
void ser_init(void)
{
/* Set baud rate */
UBRRH = 0x00;
UBRRL = 0x19;
/* X2-mode */
UCSRA = _BV(U2X);
/* Enable RX, TX and RX interrupt */
UCSRB = _BV(TXEN) | _BV(RXEN) /*| _BV(RXCIE)*/;
/* 8-bits, no parity, 1 stop bit */
UCSRC = _BV(UMSEL) | _BV(UCSZ1) | _BV(UCSZ0);
}
serial.h:
Kod: Markera allt
#ifndef INC_SERIAL_H
#define INC_SERIAL_H
void ser_init(void);
#endif/*INC_SERIAL_H*/
Kod: Markera allt
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "servo.h"
int main(void)
ser_init();
for(;;) {
UDR = 0x55;
_delay_ms(250);
}
return 0;
}
Kod: Markera allt
make -k clean all load
rm -f *.o *.map *.out
avr-gcc -g -mmcu=attiny2313 -Wall -save-temps -Wstrict-prototypes -Os -mcall-prologues -DF_CPU=4000000UL -c -o main.o main.c
avr-gcc -g -mmcu=attiny2313 -Wall -save-temps -Wstrict-prototypes -Os -mcall-prologues -DF_CPU=4000000UL -c -o serial.o serial.c
avr-gcc -g -mmcu=attiny2313 -Wall -save-temps -Wstrict-prototypes -Os -mcall-prologues -DF_CPU=4000000UL -o servo.out -Wl,-Map,servo.map main.o serial.o
avr-objcopy -R .eeprom -O ihex servo.out servo.hex
avrdude -c dapa -p t2313 -e -U flash:w:servo.hex -qqq
Compilation finished at Sun Jan 15 22:49:56
Ska man definera något utöver -mmcu=attiny2313 för att avr's .h-filer ska laddas rätt? Jag kan nämligen inte använda t.ex. UBRR istället för UBRRL å UBRRH, men den deklareras i io2313.h.
Jag måste ha missat något fatalt... Ska jämföra binärt mellan de två projekten så länge å se var det skiter sig.

Mvh
speakman