Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EX2 - MAIN
- #include <avr/io.h>
- #ifdef _SIMULATE_
- #include "simAVRHeader.h"
- #endif
- enum States {Initial, Wait, Inc, Dec, Reset} next_state;
- void Tick() {
- switch (next_state) { //Transitions
- case Initial:
- next_state = Initial;
- break;
- case Reset:
- case Inc:
- case Dec:
- case Wait:
- if (PINA == 0x01) {
- next_state = Inc;
- break;
- }
- else if (PINA == 0x02) {
- next_state = Dec;
- break;
- }
- else if (PINA == 0x03) {
- next_state = Reset;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- }
- switch (next_state) { //Actions
- case Initial:
- PORTC = 0x07;
- next_state = Wait;
- break;
- case Wait:
- next_state = Wait;
- break;
- case Inc:
- if (PORTC >= 9) {
- PORTC = 0x09;
- next_state = Wait;
- break;
- }
- else {
- PORTC = PORTC + 0x01;
- next_state = Wait;
- break;
- }
- case Dec:
- if (PORTC <= 0) {
- PORTC = 0x00;
- next_state = Wait;
- break;
- }
- else {
- PORTC = PORTC - 0x01;
- next_state = Wait;
- break;
- }
- case Reset:
- PORTC = 0x00;
- next_state = Wait;
- }
- }
- int main(void) {
- /* Insert DDR and PORT initializations */
- DDRA = 0x00; PORTA = 0xFF;
- DDRC = 0xFF; PORTC = 0x00;
- next_state = Initial;
- /* Insert your solution below */
- while (1) {
- Tick();
- }
- return 1;
- }
- EX2 - TEST
- echo ======================================================\n
- echo Running all tests..."\n\n
- test "inc once => PORTC: 0x08"
- set next_state = Initial
- setPINA 0x01
- continue 2
- expectPORTC 0x08
- checkResult
- test "hold inc => PORTC: 0x09"
- set next_state = Initial
- setPINA 0x01
- continue 5
- expectPORTC 0x09
- checkResult
- test "dec once => PORTC: 0x06"
- set next_state = Initial
- setPINA 0x02
- continue 2
- expectPORTC 0x06
- checkResult
- test "hold dec => PORTC: 0x00"
- set next_state = Initial
- setPINA 0x02
- continue 10
- expectPORTC 0x00
- checkResult
- test "inc, hold => PORTC: 0x08, state: Wait"
- set next_state = Initial
- setPINA 0x01
- continue 2
- setPINA 0x00
- continue 10
- expectPORTC 0x08
- expect next_state Wait
- checkResult
- test "dec, hold => PORTC: 0x06, state: Wait"
- set next_state = Initial
- setPINA 0x02
- continue 2
- setPINA 0x00
- continue 10
- expectPORTC 0x06
- expect next_state Wait
- checkResult
- test "press both => PORTC: 0x00"
- set next_state = Initial
- setPINA 0x03
- continue 3
- expectPORTC 0x00
- expect next_state Wait
- checkResult
- # Report on how many tests passed/tests ran
- set $passed=$tests-$failed
- eval "shell echo Passed %d/%d tests.\n",$passed,$tests
- echo ======================================================\n
- EX3 - MAIN
- #include <avr/io.h>
- #ifdef _SIMULATE_
- #include "simAVRHeader.h"
- #endif
- enum Door_States {Initial, Wait, PPress, PRelease, YPress, YRelease, LockPress, LockRelease} next_state;
- void Door_Tick() {
- switch (next_state) { //Transitions
- case Initial:
- next_state = Initial;
- break;
- case Wait:
- if (PINA == 0x04) {
- next_state = PPress;
- break;
- }
- else if (PINA == 0x80) {
- next_state = LockPress;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- case PPress:
- if (PINA == 0x04) {
- next_state = PPress;
- break;
- }
- else if (PINA == 0x00) {
- next_state = PRelease;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- case PRelease:
- if (PINA == 0x02) {
- next_state = YPress;
- break;
- }
- else if (PINA == 0x00) {
- next_state = PRelease;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- case YPress:
- if (PINA == 0x02) {
- next_state = YPress;
- break;
- }
- else if (PINA == 0x00) {
- next_state = YRelease;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- case YRelease:
- next_state = YRelease;
- break;
- case LockPress:
- if (PINA == 0x80) {
- next_state = LockPress;
- break;
- }
- else {
- next_state = LockRelease;
- break;
- }
- case LockRelease:
- next_state = Wait;
- break;
- }
- switch (next_state) { //Actions
- case Initial:
- PORTB = 0x01;
- next_state = Wait;
- break;
- case Wait:
- next_state = Wait;
- break;
- case PPress:
- next_state = PPress;
- break;
- case PRelease:
- next_state = PRelease;
- break;
- case YPress:
- next_state = YPress;
- break;
- case YRelease:
- PORTB = 0x01;
- next_state = Wait;
- break;
- case LockPress:
- PORTB = 0x00;
- next_state = LockPress;
- break;
- case LockRelease:
- PORTB = 0x00;
- next_state = LockRelease;
- break;
- }
- }
- int main(void) {
- /* Insert DDR and PORT initializations */
- DDRA = 0x00; PORTA = 0xFF;
- DDRB = 0xFF; PORTB = 0x00;
- DDRC = 0xFF; PORTC = 0x00;
- next_state = Initial;
- /* Insert your solution below */
- while (1) {
- Door_Tick();
- PORTC = next_state;
- }
- return 1;
- }
- EX3 - TEST
- echo ======================================================\n
- echo Running all tests..."\n\n
- test "press nothing => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x00
- continue 10
- expectPORTB 0x01
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- expectPORTB 0x00
- expectPORTC 0x01
- checkResult
- test "lock, #, Y => PORTB: 0x01 Unlocked , PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x02
- continue 2
- setPINA 0x00
- continue 2
- #y
- #unlocked
- expectPORTB 0x01
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, #, X => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x01
- continue 2
- #x
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, #, # => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x04
- continue 1
- #pound
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, Y => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x20
- continue 2
- #y
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, X => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x01
- continue 2
- #x
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "#YX => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x07
- continue 2
- expectPORTB 0x01
- expectPORTC 0X01
- expect next_state Wait
- checkResult
- test "#Y => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x06
- continue 2
- expectPORTB 0x01
- expectPORTC 0X01
- expect next_state Wait
- checkResult
- test "#X => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x05
- continue 2
- expectPORTB 0x01
- expectPORTC 0X01
- expect next_state Wait
- checkResult
- test "YX => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x03
- continue 2
- expectPORTB 0x01
- expectPORTC 0X01
- expect next_state Wait
- checkResult
- # Report on how many tests passed/tests ran
- set $passed=$tests-$failed
- eval "shell echo Passed %d/%d tests.\n",$passed,$tests
- echo ======================================================\n
- EX4 - MAIN
- #include <avr/io.h>
- #ifdef _SIMULATE_
- #include "simAVRHeader.h"
- #endif
- enum Door_States {Initial, Wait, PPress, PRelease, YPress, YRelease, LockPress, LockRelease} next_state;
- void Door_Tick() {
- switch (next_state) { //Transitions
- case Initial:
- next_state = Initial;
- break;
- case Wait:
- if (PINA == 0x04) {
- next_state = PPress;
- break;
- }
- else if (PINA == 0x80) {
- next_state = LockPress;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- case PPress:
- if (PINA == 0x04) {
- next_state = PPress;
- break;
- }
- else if (PINA == 0x00) {
- next_state = PRelease;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- case PRelease:
- if (PINA == 0x02) {
- next_state = YPress;
- break;
- }
- else if (PINA == 0x00) {
- next_state = PRelease;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- case YPress:
- if (PINA == 0x02) {
- next_state = YPress;
- break;
- }
- else if (PINA == 0x00) {
- next_state = YRelease;
- break;
- }
- else {
- next_state = Wait;
- break;
- }
- case YRelease:
- next_state = YRelease;
- break;
- case LockPress:
- if (PINA == 0x80) {
- next_state = LockPress;
- break;
- }
- else {
- next_state = LockRelease;
- break;
- }
- case LockRelease:
- next_state = Wait;
- break;
- }
- switch (next_state) { //Actions
- case Initial:
- PORTB = 0x01;
- next_state = Wait;
- break;
- case Wait:
- next_state = Wait;
- break;
- case PPress:
- next_state = PPress;
- break;
- case PRelease:
- next_state = PRelease;
- break;
- case YPress:
- next_state = YPress;
- break;
- case YRelease:
- PORTB = (!PORTB & 0x03);
- next_state = Wait;
- break;
- case LockPress:
- PORTB = 0x00;
- next_state = LockPress;
- break;
- case LockRelease:
- PORTB = 0x00;
- next_state = LockRelease;
- break;
- }
- }
- int main(void) {
- /* Insert DDR and PORT initializations */
- DDRA = 0x00; PORTA = 0xFF;
- DDRB = 0xFF; PORTB = 0x00;
- DDRC = 0xFF; PORTC = 0x00;
- next_state = Initial;
- /* Insert your solution below */
- while (1) {
- Door_Tick();
- PORTC = next_state;
- }
- return 1;
- }
- EX4 - TEST
- echo ======================================================\n
- echo Running all tests..."\n\n
- test "press nothing => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x00
- continue 10
- expectPORTB 0x01
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- expectPORTB 0x00
- expectPORTC 0x01
- checkResult
- test "#, Y => PORTB: 0x00 Locked, PORTC 1. Wait"
- set next_state = Initial
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x02
- continue 2
- setPINA 0x00
- continue 2
- #y
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "#, Y, #, Y => PORTB: 0x01 Unlocked, PORTC 1. Wait"
- set next_state = Initial
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x02
- continue 2
- setPINA 0x00
- continue 2
- #y
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x02
- continue 2
- setPINA 0x00
- continue 2
- #y
- expectPORTB 0x01
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, #, Y => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x02
- continue 2
- setPINA 0x00
- continue 2
- #y
- #unlocked
- expectPORTB 0x01
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, #, X => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x01
- continue 2
- #x
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, #, # => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x04
- continue 2
- setPINA 0x00
- continue 2
- #pound
- setPINA 0x04
- continue 1
- #pound
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, Y => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x20
- continue 2
- #y
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "lock, X => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x80
- continue 2
- setPINA 0x00
- continue 2
- #locked
- setPINA 0x01
- continue 2
- #x
- expectPORTB 0x00
- expectPORTC 0x01
- expect next_state Wait
- checkResult
- test "#YX => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x07
- continue 2
- expectPORTB 0x01
- expectPORTC 0X01
- expect next_state Wait
- checkResult
- test "#Y => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x06
- continue 2
- expectPORTB 0x01
- expectPORTC 0X01
- expect next_state Wait
- checkResult
- test "#X => PORTB: 0x01 Unlocked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x05
- continue 2
- expectPORTB 0x01
- expectPORTC 0X01
- expect next_state Wait
- checkResult
- test "YX => PORTB: 0x00 Locked, PORTC: 1. Wait"
- set next_state = Initial
- setPINA 0x03
- continue 2
- expectPORTB 0x01
- expectPORTC 0X01
- expect next_state Wait
- checkResult
- # Report on how many tests passed/tests ran
- set $passed=$tests-$failed
- eval "shell echo Passed %d/%d tests.\n",$passed,$tests
- echo ======================================================\n
- EX5 - MAIN
- #include <avr/io.h>
- #ifdef _SIMULATE_
- #include "simAVRHeader.h"
- #endif
- enum Door_States {Initial, Wait, Get, Check} next_state;
- void Door_Tick() {
- switch (next_state) { //Transitions
- case Initial:
- next_state = Initial;
- break;
- case Get:
- scanf("%c", comb);
- scanf("%c", comb);
- scanf("%c", comb);
- scanf("%c", comb);
- next_state = Check;
- break;
- case Check:
- }
- switch (next_state) { //Actions
- case Initial:
- PORTB = 0x01;
- next_state = Wait;
- break;
- case Get:
- case Check:
- }
- int main(void) {
- /* Insert DDR and PORT initializations */
- DDRA = 0x00; PORTA = 0xFF;
- DDRB = 0xFF; PORTB = 0x00;
- DDRC = 0xFF; PORTC = 0x00;
- int comb[4];
- unsigned char i = 0;
- /* Insert your solution below */
- while (1) {
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement