Имам млада дъска 2.0 и се опитвам да я използвам за управление на този LCD чрез серия TTL.

atmega32u4

Направих го да работи добре с моя Arduino uno и да пробвам Arduino код, но искам да го направя с тийнейджър и език C.

Тийнейджърът използва ATmega32u4 и ето листа с данни за този чип.

В листа с данни, започвайки на страница 186, ще намерите раздела на USART. На страница 192 има примерен код на език C за това как да инициализирате USART. Объркан съм на няколко реда и може да се нуждая от помощ.

Първо, не съм наясно какъв трябва да бъде номерът на скоростта на предаване. Моят LCD екран изисква 9600 бода с 1 стартов бит, 1 стоп бит, без бит за паритет и 8 бита за данни. На страница 189 от листа с данни ATmega32u4 направих изчислението на това каква трябва да бъде скоростта на предаване, която в случай на тийнейджърска и LCD комбинация трябва да бъде 103, тъй като честотата на чипа е 16mhz, а скоростта на предаване е 9600. Това също съвпада номерът в таблицата на страница 213 от листа с данни ATmega32u4. Така че това ли е правилният номер, който ще бъде предаден на функцията USART_Init за променливата в бод?

Аз също съм объркан от двата реда, които определят скоростта на предаване. Моето разбиране е, че въз основа на страница 209 от таблицата с данни ATmega32u4 регистрите на скоростта на предаване са разделени на висок регистър и нисък регистър, но само 8:10 бита се използват във високия регистър, което го прави 12-битов комбиниран регистър . Така че, връщайки се към кода, не разбирам някои неща:

  1. Защо неподписаният символ се изписва, защото предполагам, че UBRRHn трябва да е в двоична нотация?
  2. Също така не разбирам частта (baud >> 8), защото ако попълните 103 за baud, получавате (103 >> 8) и това не е правилно. Някой може ли да ми обясни този ред? Благодаря.
  1. Трябва ли бод да бъде 12-битовата двоична версия на 103, която е 00001100111? Ако е така, как ще бъде написан кодът?

Също така намерих някои примерни кодове (http://www.pjrc.com/teensy/uart.html) на уебсайта на teensy, които конфигурират UART и задават скоростта на предаване по следния начин:

Ако свържа числата, ще изглежда така:

  1. Числото 208 е различно от 103, така че не разбирам откъде получават уравнението, за да го изчислят.
  2. UBRRn се споменава само в таблицата с данни ATmega32u4 на страници 188 и 189. Изглежда, че има стойността на UBRRHn и UBRRLn. Горният код изглежда се опитва да зададе и двете едновременно, но като int. Толкова съм объркан, не е ли необходимо да е в двоична нотация?

Е, очаквам с нетърпение да преодолея тази гърбица и да продължа да танцувам LCD дисплея.:)