PokittoLib is the library needed for programming the Pokitto DIY game console (www.pokitto.com)

Dependents:   YATTT sd_map_test cPong SnowDemo ... more

PokittoLib

Library for programming Pokitto hardware

How to Use

  1. Import this library to online compiler (see button "import" on the right hand side
  2. DO NOT import mbed-src anymore, a better version is now included inside PokittoLib
  3. Change My_settings.h according to your project
  4. Start coding!
Committer:
Pokitto
Date:
Wed Dec 25 23:59:52 2019 +0000
Revision:
71:531419862202
Parent:
36:771321e70814
Changed Mode2 C++ refresh code (graphical errors)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pokitto 36:771321e70814 1 /**************************************************************************/
Pokitto 36:771321e70814 2 /*!
Pokitto 36:771321e70814 3 @file PokittoClock.cpp
Pokitto 36:771321e70814 4 @author Jonne Valola
Pokitto 36:771321e70814 5
Pokitto 36:771321e70814 6 @section LICENSE
Pokitto 36:771321e70814 7
Pokitto 36:771321e70814 8 Software License Agreement (BSD License)
Pokitto 36:771321e70814 9
Pokitto 36:771321e70814 10 Copyright (c) 2015, Jonne Valola
Pokitto 36:771321e70814 11 All rights reserved.
Pokitto 36:771321e70814 12
Pokitto 36:771321e70814 13 Redistribution and use in source and binary forms, with or without
Pokitto 36:771321e70814 14 modification, are permitted provided that the following conditions are met:
Pokitto 36:771321e70814 15 1. Redistributions of source code must retain the above copyright
Pokitto 36:771321e70814 16 notice, this list of conditions and the following disclaimer.
Pokitto 36:771321e70814 17 2. Redistributions in binary form must reproduce the above copyright
Pokitto 36:771321e70814 18 notice, this list of conditions and the following disclaimer in the
Pokitto 36:771321e70814 19 documentation and/or other materials provided with the distribution.
Pokitto 36:771321e70814 20 3. Neither the name of the copyright holders nor the
Pokitto 36:771321e70814 21 names of its contributors may be used to endorse or promote products
Pokitto 36:771321e70814 22 derived from this software without specific prior written permission.
Pokitto 36:771321e70814 23
Pokitto 36:771321e70814 24 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
Pokitto 36:771321e70814 25 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Pokitto 36:771321e70814 26 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Pokitto 36:771321e70814 27 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
Pokitto 36:771321e70814 28 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
Pokitto 36:771321e70814 29 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
Pokitto 36:771321e70814 30 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
Pokitto 36:771321e70814 31 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Pokitto 36:771321e70814 32 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Pokitto 36:771321e70814 33 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Pokitto 36:771321e70814 34 */
Pokitto 36:771321e70814 35 /**************************************************************************/
Pokitto 36:771321e70814 36
Pokitto 36:771321e70814 37 #include "PokittoCore.h"
Pokitto 36:771321e70814 38 #include "pinmap.h"
Pokitto 36:771321e70814 39 #include "HWLCD.h"
Pokitto 36:771321e70814 40 #include "Pokitto_settings.h"
Pokitto 36:771321e70814 41 #include "wait_api.h"
Pokitto 36:771321e70814 42
Pokitto 36:771321e70814 43 uint32_t pt_count=0;
Pokitto 36:771321e70814 44 uint32_t* ptimer;
Pokitto 36:771321e70814 45
Pokitto 36:771321e70814 46 extern "C" {
Pokitto 36:771321e70814 47 void SysTick_Handler(void) {
Pokitto 36:771321e70814 48 //interrupt happens when systick has counted down to zero
Pokitto 36:771321e70814 49 #if PROJ_GAMEBOY > 0
Pokitto 36:771321e70814 50 uint32_t a;
Pokitto 36:771321e70814 51 a = *ptimer;
Pokitto 36:771321e70814 52 *ptimer = a + 1;
Pokitto 36:771321e70814 53 #endif
Pokitto 36:771321e70814 54 pt_count+=10; // increment counter
Pokitto 36:771321e70814 55 }}
Pokitto 36:771321e70814 56
Pokitto 36:771321e70814 57 using namespace Pokitto;
Pokitto 36:771321e70814 58
Pokitto 36:771321e70814 59 uint32_t Core::refreshtime;
Pokitto 36:771321e70814 60
Pokitto 36:771321e70814 61 void Core::initClock() {
Pokitto 36:771321e70814 62 // to get 1000 interrupts per second the reload value should be 48000
Pokitto 36:771321e70814 63 #if PROJ_GAMEBOY > 0
Pokitto 36:771321e70814 64 ptimer = &pt_count;
Pokitto 36:771321e70814 65 SysTick->LOAD = 480000-1;
Pokitto 36:771321e70814 66 #else
Pokitto 36:771321e70814 67 #ifdef _OSCT
Pokitto 36:771321e70814 68 SysTick->LOAD = (480000*3/_OSCT)-1;
Pokitto 36:771321e70814 69 #else
Pokitto 36:771321e70814 70 SysTick->LOAD = 480000-1;
Pokitto 36:771321e70814 71 #endif
Pokitto 36:771321e70814 72 #endif
Pokitto 36:771321e70814 73 SysTick->VAL = 0;
Pokitto 36:771321e70814 74 SysTick->CTRL = 4 | 2 | 1; //CLKSOURCE=CPU clock | TICKINT | ENABLE
Pokitto 36:771321e70814 75 pt_count = 0;
Pokitto 36:771321e70814 76 }
Pokitto 36:771321e70814 77
Pokitto 36:771321e70814 78 uint32_t Core::getTime() {
Pokitto 36:771321e70814 79 return pt_count;
Pokitto 36:771321e70814 80 }
Pokitto 36:771321e70814 81
Pokitto 36:771321e70814 82 void Core::wait(uint16_t ms) {
Pokitto 36:771321e70814 83 wait_ms(ms);
Pokitto 36:771321e70814 84 }
Pokitto 36:771321e70814 85
Pokitto 36:771321e70814 86