-
1. Data: 2015-03-18 17:47:02
Temat: ATmega128, problem z PORTG0 i PORTG1
Od: "Robbo" <n...@g...com>
Witam uprzejmie,
Tworzę program na ATmega128, który generuje w tym samym czasie w sumie na
dziewięciu pinach trzech różnych portów kilkanaście impulsów. Impulsy
generowane są poprawnie na portach innych niż PORTG. Na PORTG czasem (kilka
razy na kilkadziesiąt wygenerowanych impulsów) tam, gdzie ustawiam jedynkę,
pozostaje nadal zero. Czasem ustawiam zero, a pozostaje jedynka po
poprzednim impulsie. Co może być przyczyną problemów?
Czytałem o tym, że do PORTG należy odwoływać się inaczej niż dla innych
portów. Niemniej kompilator powinien sprawę załatwić. Poza tym nie jest tak,
że na PORTG impulsy w ogóle nie są generowane -- są generowane, ale z
opisanymi powyżej problemami.
Używam WinAVR oznaczonego jako 20030424.
M103C jest wyłączony. JTAGEN jest wyłączony. SPIEN jest włączony.
Do ustawiania i kasowania bitów używam sbi i cbi zdefiniowane jako
(_SFR_BYTE(sfr) |= _BV(bit)) i (_SFR_BYTE(SFR) &= ~_BV(bit)).
Z góry dziękuję za pomoc.
R.
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
http://www.avast.com
-
2. Data: 2015-03-18 18:21:52
Temat: Re: ATmega128, problem z PORTG0 i PORTG1
Od: "Robbo" <n...@g...com>
Generowanie impulsów mam w funkcji obsługi przerwania. W głównym programie
wyświetlam dane na LCD. Pin EN wyświetlacza to PORTG2. Gdy przestałem
wyświetlać dane na LCD, to impulsy zaczęły działać poprawnie także na PORTG.
Wygląda na to, że operacje na PORTG nie są atomowe. Co tu zrobić? Bo nie
wiem, czy zastosowanie bloku ATOMIC nie odbije mi się na wydajności.
R.
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
http://www.avast.com