Fixed tx_failed flag not being reset

Fixed makefile
This commit is contained in:
Sebastian 2016-10-28 16:13:47 +02:00
parent 3fa59ddd0a
commit f7e0683504
4 changed files with 12 additions and 5 deletions

View File

@ -4,7 +4,7 @@ ISPPORT ?= /dev/ttyUSB0
VERSION = 0.1
HEADERS =
HEADERS = sss7.h uart.h
SRC = main.c sss7.c uart.c
TARGET = sss7
OBJDIR = bin
@ -32,7 +32,7 @@ start:
@echo ":: Building for $(AVRMCU)"
@echo ":: MCU operating frequency is $(F_CPU)Hz"
$(OBJDIR)/$(AVRMCU)/%.o : %.c $(HEADERS)
$(OBJDIR)/$(AVRMCU)/%.o : %.c $(HEADERS) Makefile
@mkdir -p $$(dirname $@)
$(CC) $(CFLAGS) -c $< -o $@

View File

@ -1,6 +1,7 @@
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <string.h>
#include "uart.h"
#include "sss7.h"
@ -11,6 +12,7 @@
int main(void) {
uint8_t msg[SSS7_PAYLOAD_SIZE];
memset(msg, 0, SSS7_PAYLOAD_SIZE);
msg[0] = 'H';
msg[1] = 'e';
msg[2] = 'l';
@ -23,6 +25,8 @@ msg[8] = 'r';
msg[9] = 'l';
msg[10] = 'd';
uart_init();
sss7_init();
sei();
@ -32,6 +36,10 @@ while(1) {
if(sss7_can_send()) {
sss7_send(msg);
}
while(!sss7_can_send());
if(sss7_send_failed()) {
PORTB ^= (1 << PB2);
}
_delay_ms(250);
}

View File

@ -61,12 +61,12 @@ void sss7_send(uint8_t msg[SSS7_PAYLOAD_SIZE]) {
// Commit to send state
sss7_state = SSS7_TX_HEADER;
sss7_tx_failed = 0;
sss7_send_byte(SSS7_HEADER[0]);
}
ISR(USART_RXC_vect) {
PORTB ^= (1 << PB3);
uint8_t byte = UDR;
uint8_t crc = 0;
@ -120,7 +120,6 @@ ISR(USART_RXC_vect) {
}
ISR(USART_TXC_vect) {
PORTB ^= (1 << PB2);
if(sss7_tx_last_ack) {
uint8_t byte;

View File

@ -33,7 +33,7 @@ static inline uint8_t sss7_can_send(void) {
void sss7_send(uint8_t msg[SSS7_PAYLOAD_SIZE]);
static inline uint8_t sss7_send_failed(void) {
return sss7_state != SSS7_IDLE && sss7_tx_failed;
return sss7_state == SSS7_IDLE && sss7_tx_failed;
}
static inline uint8_t sss7_has_received(void) {