极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: kevinzhang

How to use the GSM shield with Arduino Leonardo and Arduino Mega

[复制链接]
 楼主| 发表于 2014-9-12 13:03:38 | 显示全部楼层
Super169 发表于 2014-9-12 11:55
oh, 即是說, arduino.cc 中, 對 mega 的 interrupt 描述有錯 (跟 pin mapping 不同)?

http://arduin ...

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-14 19:11:30 | 显示全部楼层
Super169 发表于 2014-9-12 11:55
oh, 即是說, arduino.cc 中, 對 mega 的 interrupt 描述有錯 (跟 pin mapping 不同)?

http://arduin ...

Super,您老测试得咋样啊?
回复 支持 反对

使用道具 举报

发表于 2014-9-14 20:58:44 | 显示全部楼层
kevinzhang 发表于 2014-9-14 19:11
Super,您老测试得咋样啊?

Sorry, 試完唔記得 post 出黎添....因為我已經知道答案.

我既測試好簡單, 用左一塊 Uno 同埋一塊 Mega 版.
首先共地, GND 同 GND 駁埋.
之後 Uno 既 pin 7 接 Mega 既 pin 2, 然後做左兩個簡單 program:

1) Uno - 不斷改變 pin 7, HIGH - LOW 轉黎轉去.  3秒一次

  1. void setup() {
  2.   Serial.begin(57600);
  3.   pinMode(7, OUTPUT);
  4. }

  5. void loop() {
  6.   Serial.println("Set to HIGH");
  7.   digitalWrite(7, HIGH);
  8.   delay(3000);
  9.   Serial.println("Set to LOW");
  10.   digitalWrite(7, LOW);
  11.   delay(3000);
  12. }
复制代码



2) Mega: 做左個 counter, 每次 Int.0 被 trigger (有變動) 就加 1, 每秒 check  1 次.

  1. int change_cnt = 0;

  2. void setup() {
  3.   Serial.begin(57600);
  4.   attachInterrupt(0, pin_change, CHANGE);
  5. }

  6. void loop() {
  7.   // put your main code here, to run repeatedly:
  8. Serial.println(change_cnt);
  9. delay(1000);
  10. }

  11. void pin_change() {
  12.   change_cnt++;
  13. }
复制代码


結果, 當 Uno 轉既時候, Mega 果邊既數字就會加 1.  由於 Mega 每秒 check 一次, 結果每出三次同一個數就加 1.

由於佢講到 Mega 既 Int.0 好似去左 pin 10, 我又試埋將 Uno Pin 7 接 Mega Pin 10, 結果當然係完全唔變喇.


結果好明顯, Mega 既 Int.0 係 map 去 Pin 2 的, 即係 arduino 入面, 對 Mega 既描述無錯, 而 attachInterrupt 既表亦無錯的.

咁真係唔明, 點解佢話 pin 2 無 interrupt 了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-14 22:28:44 | 显示全部楼层
Super169 发表于 2014-9-14 20:58
Sorry, 試完唔記得 post 出黎添....因為我已經知道答案.

我既測試好簡單, 用左一塊 Uno 同埋一塊  ...

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-14 22:29:02 | 显示全部楼层
Super169 发表于 2014-9-14 20:58
Sorry, 試完唔記得 post 出黎添....因為我已經知道答案.

我既測試好簡單, 用左一塊 Uno 同埋一塊  ...

回复 支持 反对

使用道具 举报

发表于 2014-9-15 23:47:46 | 显示全部楼层
本帖最后由 eddiewwm 于 2014-9-15 23:51 编辑
Super169 发表于 2014-9-14 20:58
Sorry, 試完唔記得 post 出黎添....因為我已經知道答案.

我既測試好簡單, 用左一塊 Uno 同埋一塊  ...


噢,一路都沒注意到 Mega 的 External Interrupts 又 re-map 了。

原作者想說的是 Pin Change Interrupt,而不是 External Interrupt,所以 The Leonardo and Mega do not have interrupt capabilities on pin 2 是對的。

當中重點是: "Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69)"
http://arduino.cc/en/Reference/SoftwareSerial
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-16 06:28:28 | 显示全部楼层
eddiewwm 发表于 2014-9-15 23:47
噢,一路都沒注意到 Mega 的 External Interrupts 又 re-map 了。

原作者想說的是 Pin Change Inter ...

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 06:59 , Processed in 0.038941 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表