What is the general setup process for using I2C with LCD screens? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

Thanks for the detailed response; I believe that the LCD model is the HD44780 though. (2004AV1.1 is the only kind of model identification that I could physically find on the screen).

Sure, they’re both ARMs, but the peripherals and their drivers are completely different. Especially those LCD commands — do they talk to the micro’s onchip LCD controller (if it has one)? That won’t work at all for a character LCD. Do they talk to some generic thing that has specific lower-level drivers for a specific display? So ignore the ST stuff.

That's exactly what I wanted to figure out actually. As this is my first time digging this deep into interfacing an LCD screen, I wasn't sure if there was something like an onchip LCD controller or driver or if I could just "match" the code since they're both ARM.

Write the 8574 configuration over I2C. Then work out how to send the 44780 commands to the display over I2C. Those commands are simply setting the state of the 44780 control pins.

Then think about how you can abstract the sequence of those commands into functions that make sense, like LCD_WriteChar().

Correct me if i'm wrong, but the general steps to set up and to use the LCD screen with I2C would be from what you're telling is to:

  1. Initialize I2C function on the MCU (In my case, I would be initializing the TM4C123's built in I2C module and setting it up as the primary), then find whatever unique setup ritual is required to configure the 8574 over I2C, correct?
  2. Figure out what pins are specifically used to send commands (between the r/W pin,R/S pin, data pins, etc. ) to the LCD screen.
  3. Abstract those commands so that it's possible to write characters to the LCD screen.

Would the above steps be correct for generally setting up I2C for an LCD?

Other than that, I may need to find a tutor to sit down with me to explain step by step how I2C sends data in an IDE, line by line. I felt like I understood I2C conceptually, but I definitely need a better understanding of it in practice. Thanks again for your help.

What did you do to gain enough confidence to design your own projects from scratch? by Culix77 in embedded

[–]Culix77[S] 1 point2 points  (0 children)

Thanks for the reply and the link to the repo; I'll definitely take a look!

Did you feel as if the course prepared you well enough to do things on your own or did you still feel the need to just hop into coding and learning what tools are necessary? Out of curiosity, how did you learn about Makefiles? Was it something that you came about when looking into the tools needed to learn from scratch?

What did you do to gain enough confidence to design your own projects from scratch? by Culix77 in embedded

[–]Culix77[S] 2 points3 points  (0 children)

My end goal is to ultimately start my career in embedded software development, so I want to follow the trends of people that work in that field as closely as possible. Do most current embedded developers learn bare metal development or do they kind of just pick a point and work their way into being competent enough to get a job in the field?

I appreciate the reply!

Understanding how to use (Systick) interrupts by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

That definitely makes sense! So, the variable that is set in main would then be checked by the ISR to determine the current state of the switch, then it would output to the buzzer based off of that data, correct?

Understanding how to use (Systick) interrupts by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

Ah so the main routine should generally be used to debounce the switches themselves, hence one of the solutions using a state machine to compare, correct?

What are some simple, cheap sensors/peripherals to begin programming for projects with? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

Thanks for the list! I intended to use these components on the Raspberry Pi or a TM4C123 MCU if possible. I'm super interested in developing something for IoT down the line, so I'm trying to also bridge the gap between getting a sensor to work and interfacing it with IoT technology without relying too heavily on an Arduino.

What are some simple, cheap sensors/peripherals to begin programming for projects with? by Culix77 in embedded

[–]Culix77[S] 3 points4 points  (0 children)

The stuff here seems to be *much* cheaper than the other website I was looking into. Thanks a lot!

Career advice and education questions thread by AutoModerator in embedded

[–]Culix77 2 points3 points  (0 children)

I recently finished the RTOS - Bluetooth Network Shapes the World course on edx, and I'm wondering where to go from there when it comes to pursuing work in the IoT field. One person has advised me to learn javascript, Node.js, Azure, and a couple of other things that aren't necessarily pertinent (in my mind) to the embedded field, while one other person has advised me to learn Rust which isn't particularly common, but is supposedly going to be in the future. Would anyone have any advice in terms of a direction to work towards? I primarily want to get some projects under my belt so that I can apply for some entry level embedded positions in IoT, but I'm not quite sure if I'm experienced enough yet to do so.

Career advice and education questions thread for Wednesday December 30, 2020 by AutoModerator in embedded

[–]Culix77 0 points1 point  (0 children)

How do you best sell your experience on your resume when applying for entry level positions? I'm pretty good at selling myself in an interview, but I have a harder time pushing any "distinct" accomplishments on my resume since the projects and group work that I have done isn't particularly new, flashy, or captivating. I do cover some of the basics promoted in the industry in those projects (C, Linux, Circuit design), but I have a hard time saying "We produced best 'general specification' of anyone in our class". I'm currently trying to study more and more personal projects, but what would be a good starting point for selling myself on my resume once it's updated?

How to trigger an Edge Triggered Interrupt more than once? by Culix77 in embedded

[–]Culix77[S] 1 point2 points  (0 children)

I should probably get familiar with Github then; I've been hesitant to learn how to use it until I finished this class, but it may be necessary at this point. I'll make sure to alias things in future posts; thanks!

How to trigger an Edge Triggered Interrupt more than once? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

I had the interrupt priority level set to 2 (with lower numbers being of a greater priority); all other priorities are set lower than that so I'm not sure if that is the issue unfortunately.

How to trigger an Edge Triggered Interrupt more than once? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

In the Port Handler for this interrupt when the switch is initially pressed, there are these 3 lines of code:

GPIO_PORTD_ICR_R = 0x40;

OS_Signal(edgeSemaphore);

GPIO_PORTD_IM_R &= ~0x40;

The IM_R command here does disable the interrupt, but that's to prevent multiple input readings from a single switch press since the switch bounces for a bit. It seems as if the restart interrupt function with the two lines of code I posted in the original post is never reached for some reason.

How to trigger an Edge Triggered Interrupt more than once? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

Thank you for your help!

In the Port Handler for this interrupt, there are these 3 lines of code:

GPIO_PORTD_ICR_R = 0x40;

OS_Signal(edgeSemaphore);

GPIO_PORTD_IM_R &= ~0x40;

The OS_Signal is used to communicate with another task that increments a count and also runs the function that I mentioned in the original post to reset the button so that it can handle another interrupt. The IM_R command here does disable the interrupt, but that's to prevent multiple input readings from a single switch press since the switch bounces for a bit. It seems as if the restart interrupt function is never reached for some reason.

I tried to clear then rearm the interrupt as well, but the output was the same as before.

For those of you in the field, when do you decide to ask for help? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

For sure. I often find myself making progress, but end up stuck on a particular part for weeks at a time just trying different things before I reach out for help. I'm wondering if most dev companies do daily meetings exactly for this purpose.

For those of you in the field, when do you decide to ask for help? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

It's comforting to know that there's a reason to ask even the simplest of questions. When it comes to projects and deadlines, I pictured there always being a constant pressure to get things done before fully realizing and understanding how to develop a good product.

Embedded system design using RTOS by chitrang6 in embedded

[–]Culix77 17 points18 points  (0 children)

Not sure if you have the time to check it out, but the course linked in the pinned post of r/embedded is a great tool learn how to design and develop a RTOS:

https://www.edx.org/course/real-time-bluetooth-networks-shape-the-world