Arduino Plus/4 Idler
Suche
Index
FAQ
Kontakt
Zurück
// 
// 
//
//  Arduino Uno (atmega328p) 
//
//  
//  PC -> Commodore Plus/4 Service Idler
//
//  Source for a first test
// 
//  License: GPL
// 
//
#include <avr/io.h>

/* Debug Display */
#include "lcd-routines.h"

#include <uart.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/delay.h>
/* Define UART buad rate here */
#define UART_BAUD_RATE      57600
#define ACK_PIN PINC
#define ACK_BIT PC5



int main(void)
{
    unsigned int c;
    uint8_t msb,lsb;

// data directions
// LSB , st0, st1
DDRB |= (1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3) | (1 << DDB4) | (1 << DDB5);
// MSB, dav, ack
DDRC |= (1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3) | (1 << DDC4) | (0 << DDC5);



// uart init   
      uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); 
      sei();
// activate debug-display
//    lcd init 
//    lcd_init();
 
// set status-bits 
      PORTB = PORTB | (1<<PB4) | (1<<PB5);  // #%11 

// Idler
for(;;)

 {
          c = uart_getc();
          if ( c & UART_NO_DATA )
        {
            /* 
             * no data available from UART 
             */
        }
        else
        {
            msb = c & 0xf0;
            lsb = c & 0x0f;
            msb = msb >>4; 
            PORTB = msb; 
            PORTC = lsb |= (1<<PC4); 
             loop_until_bit_is_set(ACK_PIN, ACK_BIT);
            PORTC &= ~(1<<PC4);
         } 

 } 
}

 

Letzte Änderung: 2019-01-06 09:51:35
  Rubrik:  DIY : Do it yourself
Rubriken-Übersicht
 3 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!