Ahoj,
mám tu problém - rozchodil jsem si klávesnici s MCP23017, bohužel jsem nucen využít přerušení.
A to nemohu s Arduinem rozchodit. Louskal jsem zahraniční fora, bohužel má znalost Angličtiny je "pod psa".
Z toho mála co jsem pochopil jsem si napsal pokusný program, který nefunguje:
Na pinu 3 mám vedeno přerušení z MCP; Normálně LED bliká, po stisknutí kl. na adrese 0 má vyslat MCP log.1 na pin 3 a Arduino skočit na podprogram "preruseni". No- a MCP mi nastaví výstup přerušení trvale do jedničky a nehne s tim ani restart.
Nevíte, jak se ten MCP programuje?
Dík za každou radu, přeji pěkný den
#include <Wire.h>
#include "Adafruit_MCP23017.h"
Adafruit_MCP23017 mcp;
void setup() {
mcp.begin(); // use default address 0
mcp.pinMode(0, INPUT); // klávesa 0 jako vstup
mcp.pullUp(0, HIGH); // ošetřeno do 1
pinMode(13, OUTPUT); //led jako výstup
mcp.setupInterrupts(1, 0, HIGH); // aktivace přerušení ( přerušení bude log.1 na výstupu klávesnice)
mcp.setupInterruptPin(0, RISING); //Pakliže se zmáčkne tlačítko (pin 0 --> log.1) , generuj na vystupu klavesnice (PIN 19 MCP) přerušení
attachInterrupt(1, preruseni, HIGH); // Arduino bude čekat na pinu 3 na log.1 Přijde-li na pin 3 log.1, skáču na podprogram "preruseni)
}
void loop()
{
digitalWrite(13, !digitalRead(13) ); //blikej
delay (1000);
}
void preruseni()
{
//něco dělej...
MCP23017 - přerušení
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Re: MCP23017
Já tlačítko na pinu 2 přes přerušení dělám takhle:
void setup()
attachInterrupt(0, tlacitko, RISING);
//definujeme přerušení od tlačítka na pinu 2,
//které se vyvolá při přechodu z vyp do zap RISING
...
...
v podprogramu na zpracování přerušení potom mám:
void tlacitko() {
detachInterrupt(0); //vypneme přerušení
...
...
attachInterrupt(0, tlacitko, RISING); //zapneme přerušení na konci void
}
Žádný mpc.setupinterupts tam nemám.
Chodí to.
Jirka
void setup()
attachInterrupt(0, tlacitko, RISING);
//definujeme přerušení od tlačítka na pinu 2,
//které se vyvolá při přechodu z vyp do zap RISING
...
...
v podprogramu na zpracování přerušení potom mám:
void tlacitko() {
detachInterrupt(0); //vypneme přerušení
...
...
attachInterrupt(0, tlacitko, RISING); //zapneme přerušení na konci void
}
Žádný mpc.setupinterupts tam nemám.
Chodí to.
Jirka
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti