Hallo, ich möchte einen Programmablauf auf einem ATMega328P unterbrechen, sobald mindestens einer von zehn Schaltern, die alle an den digitalen Pins des ATMegas liegen seine Position verändert. Programmiert wurde über Arduino. Die Internen Pullups sind für alle Schalter aktiv. Über die Schalter wird ein Binärcode eingegeben. Sobald jedoch während des Programmablaufs mind. einer der Schalter verändert wird, soll das Programm angehalten werden. Wie bekomme ich das am einfachsten gelöst?
Gast
#4501700
Pseudocode:
if (Schalter)
{
while(1); // Endlosschleife
}
Gast
#4501703
Pin-Change-Interrupt für die jeweiligen Eingänge aktivieren. Sobald sich dann einer der Pins ändert, wird die zugehörige ISR angesprungen. Falls du das Hauptprogramm noch mehr "unterbrechen" willst (nach Abschluss der ISR gehts sonst dort normal weiter), kannst du ja in der ISR eine Variable ändern, die im Hauptprogramm abgefragt wird um dann irgendwo anders hin zu springen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.